From 64ac01b9b5b3e99ba17bbc4c57704dae8e17aad4 Mon Sep 17 00:00:00 2001 From: xnuinside Date: Sun, 7 Jan 2024 22:12:17 +0300 Subject: [PATCH 01/12] refactoring output logic --- ARCHIVE_CHANGELOG.txt | 66 ++++ CHANGELOG.txt | 89 ++--- README.md | 10 +- simple_ddl_parser/dialects/sql.py | 4 +- simple_ddl_parser/output/common.py | 436 ++++++++++++++++--------- simple_ddl_parser/output/dialects.py | 32 +- tests/dialects/test_snowflake.py | 42 ++- tests/dialects/test_spark_sql.py | 3 +- tests/non_statement_tests/test_args.py | 6 +- tests/test_simple_ddl_parser.py | 2 +- 10 files changed, 415 insertions(+), 275 deletions(-) diff --git a/ARCHIVE_CHANGELOG.txt b/ARCHIVE_CHANGELOG.txt index 72eba5f..fbad486 100644 --- a/ARCHIVE_CHANGELOG.txt +++ b/ARCHIVE_CHANGELOG.txt @@ -1,4 +1,70 @@ + +**v0.22.0** +### New Features: + +## BigQuery: + +I started to add partial support for BigQuery + +1. Added support for OPTIONS in CREATE SCHEMA statement + +## MSSQL: + +1. Added support for PRIMARY KEY CLUSTERED - full details about clusterisation are parsed now in separate key 'clustered_primary_key'. +I don't like that but when I started I did not thought about all those details, so in version 1.0.* I will work on more beautiful and logically output structure. +https://github.com/xnuinside/simple-ddl-parser/issues/91 + +Pay attention: previously they parsed somehow, but in incorrect structure. + +### Improvements: + +1. Strings in double quotes moved as separate token from ID to fix a lot of issues with strings with spaces inside +2. Now parser can parse statements separated by new line also (without GO or ; at the end of statement) - https://github.com/xnuinside/simple-ddl-parser/issues/90 + +### Fixes: + +1. Now open strings is not valid in checks (previously the was parsed.) Open string sample 'some string (exist open quote, but there is no close quote) +2. Order like ASC, DESK in primary keys now parsed valid (not as previously as column name) + +**v0.21.2** +Fixies: +1. remove 'PERIOD' from tokens + +**v0.21.1** +Fixies: +1. START WITH, INCREMENT BY and CACHE (without value) in sequences now is parsed correctly. + + +**v0.21.0** +### New Features: + + ## MSSQL: + + 1. Added support for statements: + 1. PERIOD FOR SYSTEM_TIME in CREATE TABLE statement + 2. ON [PRIMARY] after CREATE TABLE statement (sample in test files test_mssql_specific.py) + 3. WITH statement for TABLE properties + 4. TEXTIMAGE_ON statement + 5. DEFAULT NEXT VALUE FOR in COLUMN DEFAULT + + 2. Added support for separating tables DDL by 'GO' statement as in output of MSSQL + 3. Added support for CREATE TYPE as TABLE + +**v0.20.0** +### New Features: + + #### Common + 1. SET statements from DDL scripts now collected as type 'ddl_properties' (if you use group_by_type=True) and parsed as + dicts with 2 keys inside {'name': 'property name', 'value': 'property value'} + + #### MySQL + 2. Added support for MySQL ON UPDATE statements in column (without REFERENCE) + + #### MSSQL + 3. Added support for CONSTRAINT [CLUSTERED]... PRIMARY KEY for Table definition + 4. Added support for WITH statement in CONSTRAINT (Table definition) + **v0.19.9** 1. Fixed issue with the weird log - https://github.com/xnuinside/simple-ddl-parser/issues/78. diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 370a4b2..6e9646d 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,26 @@ +**v1.0.0** +In output structure was done important changes that can in theory breaks code. + + +### Important changes +1. Important change: + +all custom table properties that are defined after column definition in 'CREATE TABLE' statement and relative to only one dialect (only for SparkSQL, or HQL,etc), for example, like here: +https://github.com/xnuinside/simple-ddl-parser/blob/main/tests/dialects/test_snowflake.py#L767 or https://github.com/xnuinside/simple-ddl-parser/blob/main/tests/dialects/test_spark_sql.py#L133 will be saved now in property `table_properties` as dict. +Previously they was placed on same level of table output as `columns`, `alter`, etc. Now, they grouped and moved to key `table_properties`. + +2. Formatting parser result now represented by 2 classes - Output & TableData, that makes it more strict and readable. + +3. The output mode now functions more strictly. If you want to obtain output fields specific to a certain dialect, +use output_mode='snowflake' for Snowflake or output_mode='hql' for HQL, etc. +Previously, some keys appeared in the result without being filtered by dialect. +For example, if 'CLUSTER BY' was in the DDL, it would show up in the 'cluster_by' field regardless of the output mode. +However, now all fields that only work in certain dialects and are not part of the basic SQL notation will only be shown +if you choose the correct output_mode. + +### Snowflake updates: +4. For some reasons, 'CLONE' statement in SNOWFLAKE was parsed into 'like' key in output. Now it was changed to 'clone' - inner structure of output stay the same as previously. + **v0.32.1** ### Minor Fixes 1. Removed debug print @@ -302,69 +325,3 @@ Also added support project.dataset.name format in CREATE SCHEMA and ALTER statem ## Improvements: 1. CLUSTED BY can be used without () - - -**v0.22.0** -### New Features: - -## BigQuery: - -I started to add partial support for BigQuery - -1. Added support for OPTIONS in CREATE SCHEMA statement - -## MSSQL: - -1. Added support for PRIMARY KEY CLUSTERED - full details about clusterisation are parsed now in separate key 'clustered_primary_key'. -I don't like that but when I started I did not thought about all those details, so in version 1.0.* I will work on more beautiful and logically output structure. -https://github.com/xnuinside/simple-ddl-parser/issues/91 - -Pay attention: previously they parsed somehow, but in incorrect structure. - -### Improvements: - -1. Strings in double quotes moved as separate token from ID to fix a lot of issues with strings with spaces inside -2. Now parser can parse statements separated by new line also (without GO or ; at the end of statement) - https://github.com/xnuinside/simple-ddl-parser/issues/90 - -### Fixes: - -1. Now open strings is not valid in checks (previously the was parsed.) Open string sample 'some string (exist open quote, but there is no close quote) -2. Order like ASC, DESK in primary keys now parsed valid (not as previously as column name) - -**v0.21.2** -Fixies: -1. remove 'PERIOD' from tokens - -**v0.21.1** -Fixies: -1. START WITH, INCREMENT BY and CACHE (without value) in sequences now is parsed correctly. - - -**v0.21.0** -### New Features: - - ## MSSQL: - - 1. Added support for statements: - 1. PERIOD FOR SYSTEM_TIME in CREATE TABLE statement - 2. ON [PRIMARY] after CREATE TABLE statement (sample in test files test_mssql_specific.py) - 3. WITH statement for TABLE properties - 4. TEXTIMAGE_ON statement - 5. DEFAULT NEXT VALUE FOR in COLUMN DEFAULT - - 2. Added support for separating tables DDL by 'GO' statement as in output of MSSQL - 3. Added support for CREATE TYPE as TABLE - -**v0.20.0** -### New Features: - - #### Common - 1. SET statements from DDL scripts now collected as type 'ddl_properties' (if you use group_by_type=True) and parsed as - dicts with 2 keys inside {'name': 'property name', 'value': 'property value'} - - #### MySQL - 2. Added support for MySQL ON UPDATE statements in column (without REFERENCE) - - #### MSSQL - 3. Added support for CONSTRAINT [CLUSTERED]... PRIMARY KEY for Table definition - 4. Added support for WITH statement in CONSTRAINT (Table definition) diff --git a/README.md b/README.md index 71a69e8..73aff96 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,15 @@ Build with ply (lex & yacc in python). A lot of samples in 'tests/. ### Is it Stable? -Yes, library already has about 7000+ downloads per day - https://pypistats.org/packages/simple-ddl-parser.. +Yes, library already has about 9000+ downloads per day - https://pypistats.org/packages/simple-ddl-parser.. -As maintainer, I guarantee that any backward incompatible changes will not be done in patch or minor version. But! Pay attention that sometimes output in keywords can be changed in minor version because of fixing wrong behaviour in past. For example, previously 'auto_increment' was a part of column type, but later it became a separate column property. So, please read for minor versions changedlog. +As maintainer, I guarantee that any backward incompatible changes will not be done in patch or minor version. But! Pay attention that sometimes output in keywords can be changed in minor version because of fixing wrong behaviour in past. -However, in process of adding support for new statements & features I see that output can be structured more optimal way and I hope to release version `1.0.*` with more struct output result. But, it will not be soon, first of all, I want to add support for so much statements as I can. So I don't think make sense to expect version 1.0.* before, for example, version `0.26.0` :) +### Updates in version 1.x + +The full list of updates can be found in the Changelog below (at the end of README). + +Version 1.0.0 was released due to significant changes in the output structure and a stricter approach regarding the scope of the produced output. Now, you must provide the argument 'output_mode=name_of_your_dialect' if you wish to see arguments/properties specific to a particular dialect ### How does it work? diff --git a/simple_ddl_parser/dialects/sql.py b/simple_ddl_parser/dialects/sql.py index 705446e..e743846 100644 --- a/simple_ddl_parser/dialects/sql.py +++ b/simple_ddl_parser/dialects/sql.py @@ -1145,7 +1145,7 @@ def p_likke(self, p: List) -> None: """likke : LIKE | CLONE """ - p[0] = None + p[0] = p[1].lower() def p_expression_like_table(self, p: List) -> None: """expr : table_name likke id @@ -1163,7 +1163,7 @@ def p_expression_like_table(self, p: List) -> None: table_name = p_list[-1] schema = None p[0] = p[1] - p[0].update({"like": {"schema": schema, "table_name": table_name}}) + p[0].update({p[2]: {"schema": schema, "table_name": table_name}}) def p_t_name(self, p: List) -> None: """t_name : id DOT id diff --git a/simple_ddl_parser/output/common.py b/simple_ddl_parser/output/common.py index e273a6a..a8c2967 100644 --- a/simple_ddl_parser/output/common.py +++ b/simple_ddl_parser/output/common.py @@ -2,7 +2,8 @@ import logging import os from copy import deepcopy -from typing import Dict, List +from dataclasses import dataclass, field +from typing import Any, Dict, Hashable, List, Optional from simple_ddl_parser.output import dialects as d from simple_ddl_parser.utils import get_table_id, normalize_name @@ -22,6 +23,233 @@ logger = logging.getLogger("simple_ddl_parser") +@dataclass +class TableData: + """representation of table data + + exclude_if_not_provided - mean, exclude in output, if was not in data from parser + """ + + # mandatory fields + table_name: str + # final output field set - dialect + init_data: dict = field(metadata={"exclude_always": True}) + # final output field set - dialect + output_mode: str = field(metadata={"exclude_always": True}) + # optional fields + schema: Optional[str] = None + primary_key: Optional[List[str]] = None + columns: Optional[List[dict]] = field(default_factory=list) + alter: Optional[Dict] = field(default_factory=dict) + checks: Optional[List] = field(default_factory=list) + index: Optional[List] = field(default_factory=list) + partitioned_by: Optional[List] = field(default_factory=list) + constraints: Optional[Dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} + ) + tablespace: Optional[str] = None + unique: Optional[list] = field( + default_factory=list, metadata={"exclude_always": True} + ) + ref_columns: Optional[List[Dict]] = field( + default_factory=list, metadata={"exclude_always": True} + ) + references: Optional[List[Dict]] = field( + default_factory=list, metadata={"exclude_always": True} + ) + comment: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + if_not_exists: Optional[bool] = field( + default=False, metadata={"exclude_if_not_provided": True} + ) + partition_by: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} + ) + # dialects + table_properties: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_empty": True} + ) + external: Optional[bool] = field( + default=False, metadata={"exclude_if_not_provided": True} + ) + skewed_by: Optional[dict] = field( + default_factory=dict, + metadata={"exclude_if_not_provided": True, "output_mode": "hql"}, + ) + stored_as: Optional[str] = field(default=None, metadata={"output_mode": "hql"}) + # snowflake + tblproperties: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} + ) + replace: Optional[bool] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + primary_key_enforced: Optional[bool] = field( + default=None, metadata={"output_mode": "snowflake"} + ) + clone: Optional[dict] = field(default=None, metadata={"output_mode": "snowflake"}) + cluster_by: Optional[list] = field( + default_factory=list, + metadata={"output_mode": "snowflake", "exclude_if_not_provided": True}, + ) + with_tag: Optional[list] = field( + default_factory=list, + metadata={"output_mode": "snowflake", "exclude_if_not_provided": True}, + ) + + def get(self, value: Hashable, default: Any = None) -> Any: + return self.__dict__.get(value, default) + + def update(self, input_dict: dict) -> None: + self.__dict__.update(input_dict) + + def if_not_exist_update(self, input_dict: dict) -> None: + for key, value in input_dict.items(): + if key not in self.__dict__: + self.__dict__[key] = value + + def __iter__(self): + for x in self.__dict__: + yield x + + def __post_init__(self): + self.populate_dialects_table_data() + self.set_unique_columns() + self.populate_keys() + self.normalize_ref_columns_in_final_output() + + @classmethod + def init(cls, **kwargs): + cls_fields = {field for field in cls.__dataclass_fields__} + table_main_args = {k: v for k, v in kwargs.items() if k in cls_fields} + table_properties = {k: v for k, v in kwargs.items() if k not in table_main_args} + init_data = {} + init_data.update(table_main_args) + init_data.update(table_properties) + ret = cls( + **table_main_args, table_properties=table_properties, init_data=init_data + ) + return ret + + def set_unique_columns(self) -> None: + unique_keys = ["unique_statement", "constraints"] + + for key in unique_keys: + if getattr(self, key, None): + # get column names from unique constraints & statements + self.set_column_unique_param(key) + + def set_column_unique_param(self, key: str) -> None: + for column in self.columns: + if key == "constraints": + unique = getattr(self, key, {}).get("unique", []) + if unique: + check_in = unique["columns"] + else: + check_in = [] + else: + check_in = getattr(self, key, {}) + if column["name"] in check_in: + column["unique"] = True + + def populate_dialects_table_data(self) -> None: + mehtod_mapper = { + "hql": d.add_additional_hql_keys, + "mssql": d.add_additional_mssql_keys, + "mysql": d.add_additional_mssql_keys, + "oracle": d.add_additional_oracle_keys, + "redshift": d.add_additional_redshift_keys, + "snowflake": d.add_additional_snowflake_keys, + } + + method = mehtod_mapper.get(self.output_mode) + + if method: + self = method(self) + + def normalize_ref_columns_in_final_output(self): + for col_ref in self.ref_columns: + name = col_ref["name"] + for column in self.columns: + if name == column["name"]: + del col_ref["name"] + column["references"] = col_ref + + def populate_keys(self) -> None: + """primary_key - list of column names, example: "primary_key": ["data_sync_id", "sync_start"],""" + + if not self.primary_key: + self.get_pk_from_columns_and_constraints() + else: + self.remove_pk_from_columns() + + if self.unique: + self.add_unique_columns() + + for column in self.columns: + if column["name"] in self.primary_key: + column["nullable"] = False + + def remove_pk_from_columns(self) -> None: + for column in self.columns: + del column["primary_key"] + + def get_pk_from_columns_and_constraints(self) -> None: + pk = [] + for column in self.columns: + if column["primary_key"]: + pk.append(column["name"]) + del column["primary_key"] + if self.constraints.get("primary_keys"): + for key_constraints in self.constraints["primary_keys"]: + pk.extend(key_constraints["columns"]) + + self.primary_key = pk + + def add_unique_columns(self) -> None: + for column in self.columns: + if column["name"] in self.unique: + column["unique"] = True + + def filter_out_output(self, field: str) -> bool: + cls_fields = self.__dataclass_fields__.items() + exclude_always_keys = set() + exclude_if_not_provided = set() + exclude_if_empty = set() + exclude_by_dialect_filter = set() + + for key, value in cls_fields: + if value.metadata.get("exclude_always") is True: + exclude_always_keys.add(key) + else: + if value.metadata.get("exclude_if_not_provided") is True: + exclude_if_not_provided.add(key) + if value.metadata.get("exclude_if_empty") is True: + exclude_if_empty.add(key) + if ( + isinstance(value.metadata.get("output_mode"), str) + and value.metadata.get("output_mode") != self.output_mode + ): + exclude_by_dialect_filter.add(key) + if field in exclude_always_keys: + return False + if field in exclude_if_not_provided and field not in self.init_data: + return False + if field in exclude_if_empty and not self.get(field): + return False + if field in exclude_by_dialect_filter: + return False + return True + + def to_dict(self): + output = {} + for key, value in self.__dict__.items(): + if self.filter_out_output(key) is True: + output[key] = value + return d.key_cleaning(output, self.output_mode) + + class Output: """class implements logic to format final output after parser""" @@ -59,7 +287,7 @@ def add_index_to_table(self, statement: Dict) -> None: statement["schema"], statement["table_name"] ) self.clean_up_index_statement(statement) - target_table["index"].append(statement) + target_table.index.append(statement) def add_alter_to_table(self, statement: Dict) -> None: """add 'alter' statement to the table""" @@ -76,10 +304,10 @@ def add_alter_to_table(self, statement: Dict) -> None: elif "columns_to_modify" in statement: alter_modify_columns(target_table, statement) elif "check" in statement: - if not target_table["alter"].get("checks"): - target_table["alter"]["checks"] = [] + if not target_table.alter.get("checks"): + target_table.alter["checks"] = [] statement["check"]["statement"] = " ".join(statement["check"]["statement"]) - target_table["alter"]["checks"].append(statement["check"]) + target_table.alter["checks"].append(statement["check"]) elif "unique" in statement: target_table = set_alter_to_table_data("unique", statement, target_table) target_table = set_unique_columns_from_alter(statement, target_table) @@ -91,26 +319,24 @@ def add_alter_to_table(self, statement: Dict) -> None: "primary_key", statement, target_table ) - def process_entities(self, table: Dict) -> Dict: + def process_statement_data(self, statement_data: Dict) -> Dict: """process tables, types, sequence and etc. data""" - is_it_table = True - - if table.get("table_name"): - table_data = init_table_data() - table_data = d.populate_dialects_table_data(self.output_mode, table_data) - table_data.update(table) - table_data = set_unique_columns(table_data) - else: - table_data = table - is_it_table = False - - if is_it_table: - table_data = self.process_is_it_table_item(table_data) - table_data = normalize_ref_columns_in_final_output(table_data) + data = statement_data - d.dialects_clean_up(self.output_mode, table_data) - return table_data + if statement_data.get("table_name"): + # mean we have table + print(statement_data, "statement_data") + statement_data["output_mode"] = self.output_mode + table_data = TableData.init(**statement_data) + self.tables_dict[ + get_table_id( + schema_name=table_data.schema, + table_name=table_data.table_name, + ) + ] = table_data + data = table_data.to_dict() + return data def process_alter_and_index_result(self, table: Dict): if table.get("index_name"): @@ -157,40 +383,15 @@ def group_by_type_result(self) -> None: self.final_result = result_as_dict - def process_is_it_table_item(self, table_data: Dict) -> Dict: - if table_data.get("table_name"): - self.tables_dict[ - get_table_id( - schema_name=table_data["schema"], - table_name=table_data["table_name"], - ) - ] = table_data - else: - logger.error( - "\n Something goes wrong. Possible you try to parse unsupported statement \n " - ) - if not table_data.get("primary_key"): - table_data = check_pk_in_columns_and_constraints(table_data) - else: - table_data = remove_pk_from_columns(table_data) - - if table_data.get("unique"): - table_data = add_unique_columns(table_data) - - for column in table_data["columns"]: - if column["name"] in table_data["primary_key"]: - column["nullable"] = False - return table_data - def format(self) -> List[Dict]: - for table in self.parser_output: + for statement in self.parser_output: # process each item in parser output - if "index_name" in table or "alter_table_name" in table: - self.process_alter_and_index_result(table) + if "index_name" in statement or "alter_table_name" in statement: + self.process_alter_and_index_result(statement) else: # process tables, types, sequence and etc. data - table_data = self.process_entities(table) - self.final_result.append(table_data) + statement_data = self.process_statement_data(statement) + self.final_result.append(statement_data) if self.group_by_type: self.group_by_type_result() return self.final_result @@ -212,7 +413,7 @@ def create_alter_column_references( def get_normalized_table_columns_names(target_table: dict) -> List[str]: - return [normalize_name(column["name"]) for column in target_table["columns"]] + return [normalize_name(column["name"]) for column in target_table.columns] def prepare_alter_columns(target_table: Dict, statement: Dict) -> Dict: @@ -226,21 +427,21 @@ def prepare_alter_columns(target_table: Dict, statement: Dict) -> Dict: else: # mean we need to add alter_columns.append(column) - if not target_table["alter"].get("columns"): - target_table["alter"]["columns"] = alter_columns + if not target_table.alter.get("columns"): + target_table.alter["columns"] = alter_columns else: - target_table["alter"]["columns"].extend(alter_columns) + target_table.alter["columns"].extend(alter_columns) table_columns = get_normalized_table_columns_names(target_table) # add columns from 'alter add' - for column in target_table["alter"]["columns"]: + for column in target_table.alter["columns"]: if normalize_name(column["name"]) not in table_columns: - target_table["columns"].append(column) + target_table.columns.append(column) return target_table def set_default_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: - for column in target_table["columns"]: + for column in target_table.columns: if statement["default"]["columns"]: for column_name in statement["default"]["columns"]: if column["name"] == column_name: @@ -249,7 +450,7 @@ def set_default_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: def set_unique_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: - for column in target_table["columns"]: + for column in target_table.columns: for column_name in statement["unique"]["columns"]: if column["name"] == column_name: column["unique"] = True @@ -257,139 +458,58 @@ def set_unique_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: def alter_modify_columns(target_table, statement) -> None: - if not target_table["alter"].get("modified_columns"): - target_table["alter"]["modified_columns"] = [] + if not target_table.alter.get("modified_columns"): + target_table.alter["modified_columns"] = [] for modified_column in statement["columns_to_modify"]: index = None - for num, column in enumerate(target_table["columns"]): + for num, column in enumerate(target_table.columns): if normalize_name(modified_column["name"]) == normalize_name( column["name"] ): index = num break if index is not None: - target_table["alter"]["modified_columns"] = target_table["columns"][index] - target_table["columns"][index] = modified_column + target_table.alter["modified_columns"] = target_table.columns[index] + target_table.columns[index] = modified_column def alter_drop_columns(target_table, statement) -> None: - if not target_table["alter"].get("dropped_columns"): - target_table["alter"]["dropped_columns"] = [] + if not target_table.alter.get("dropped_columns"): + target_table.alter["dropped_columns"] = [] for column_to_drop in statement["columns_to_drop"]: index = None - for num, column in enumerate(target_table["columns"]): + for num, column in enumerate(target_table.columns): if normalize_name(column_to_drop) == normalize_name(column["name"]): index = num break if index is not None: - target_table["alter"]["dropped_columns"] = target_table["columns"][index] - del target_table["columns"][index] + target_table.alter["dropped_columns"] = target_table.columns[index] + del target_table.columns[index] def alter_rename_columns(target_table, statement) -> None: for renamed_column in statement["columns_to_rename"]: - for column in target_table["columns"]: + for column in target_table.columns: if normalize_name(renamed_column["from"]) == normalize_name(column["name"]): column["name"] = renamed_column["to"] break - if not target_table["alter"].get("renamed_columns"): - target_table["alter"]["renamed_columns"] = [] + if not target_table.alter.get("renamed_columns"): + target_table.alter["renamed_columns"] = [] - target_table["alter"]["renamed_columns"].extend(statement["columns_to_rename"]) + target_table.alter["renamed_columns"].extend(statement["columns_to_rename"]) def set_alter_to_table_data(key: str, statement: Dict, target_table: Dict) -> Dict: - if not target_table["alter"].get(key + "s"): - target_table["alter"][key + "s"] = [] + if not target_table.alter.get(key + "s"): + target_table.alter[key + "s"] = [] if "using" in statement: statement[key]["using"] = statement["using"] - target_table["alter"][key + "s"].append(statement[key]) + target_table.alter[key + "s"].append(statement[key]) return target_table -def init_table_data() -> Dict: - return { - "columns": [], - "primary_key": None, - "alter": {}, - "checks": [], - "index": [], - "partitioned_by": [], - "tablespace": None, - } - - -def normalize_ref_columns_in_final_output(table_data: Dict) -> Dict: - # todo: this is hack, need to remove it - if "references" in table_data: - del table_data["references"] - if "ref_columns" in table_data: - for col_ref in table_data["ref_columns"]: - name = col_ref["name"] - for column in table_data["columns"]: - if name == column["name"]: - del col_ref["name"] - column["references"] = col_ref - del table_data["ref_columns"] - return table_data - - -def set_column_unique_param(table_data: Dict, key: str) -> Dict: - for column in table_data["columns"]: - if key == "constraints": - unique = table_data[key].get("unique", []) - if unique: - check_in = unique["columns"] - else: - check_in = [] - else: - check_in = table_data[key] - if column["name"] in check_in: - column["unique"] = True - return table_data - - -def set_unique_columns(table_data: Dict) -> Dict: - unique_keys = ["unique_statement", "constraints"] - - for key in unique_keys: - if table_data.get(key, None): - # get column names from unique constraints & statements - table_data = set_column_unique_param(table_data, key) - if "unique_statement" in table_data: - del table_data["unique_statement"] - return table_data - - -def add_unique_columns(table_data: Dict) -> Dict: - for column in table_data["columns"]: - if column["name"] in table_data["unique"]: - column["unique"] = True - del table_data["unique"] - return table_data - - -def remove_pk_from_columns(table_data: Dict) -> Dict: - for column in table_data["columns"]: - del column["primary_key"] - return table_data - - -def check_pk_in_columns_and_constraints(table_data: Dict) -> Dict: - pk = [] - for column in table_data["columns"]: - if column["primary_key"]: - pk.append(column["name"]) - del column["primary_key"] - if table_data.get("constraints") and table_data["constraints"].get("primary_keys"): - for key_constraints in table_data["constraints"]["primary_keys"]: - pk.extend(key_constraints["columns"]) - table_data["primary_key"] = pk - return table_data - - def dump_data_to_file(table_name: str, dump_path: str, data: List[Dict]) -> None: """method to dump json schema""" if not os.path.isdir(dump_path): diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index 0f62a76..09405e9 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -15,8 +15,8 @@ ] -def add_additional_hql_keys(table_data: Dict) -> Dict: - table_data.update( +def add_additional_hql_keys(table_data) -> Dict: + table_data.if_not_exist_update( { "stored_as": None, "location": None, @@ -34,7 +34,7 @@ def add_additional_hql_keys(table_data: Dict) -> Dict: def add_additional_oracle_keys(table_data: Dict) -> Dict: - table_data.update( + table_data.if_not_exist_update( { "constraints": {"uniques": None, "checks": None, "references": None}, "storage": None, @@ -51,7 +51,7 @@ def update_bigquery_output(table_data: Dict) -> Dict: def add_additional_redshift_keys(table_data: Dict) -> Dict: - table_data.update( + table_data.if_not_exist_update( { "diststyle": None, "distkey": None, @@ -64,12 +64,12 @@ def add_additional_redshift_keys(table_data: Dict) -> Dict: def add_additional_snowflake_keys(table_data: Dict) -> Dict: - table_data.update({"clone": None, "primary_key_enforced": None}) + table_data.if_not_exist_update({"clone": None, "primary_key_enforced": None}) return table_data def add_additional_oracle_keys_in_column(column_data: Dict) -> Dict: - column_data.update({"encrypt": None}) + column_data.if_not_exist_update({"encrypt": None}) return column_data @@ -86,7 +86,7 @@ def add_additional_redshift_keys_in_column(column_data: Dict, table_data: Dict) def add_additional_mssql_keys(table_data: Dict) -> Dict: - table_data.update( + table_data.if_not_exist_update( { "constraints": {"uniques": None, "checks": None, "references": None}, } @@ -101,24 +101,6 @@ def clean_up_output(table_data: Dict, key_list: List[str]) -> Dict: return table_data -def populate_dialects_table_data(output_mode: str, table_data: Dict) -> Dict: - mehtod_mapper = { - "hql": add_additional_hql_keys, - "mssql": add_additional_mssql_keys, - "mysql": add_additional_mssql_keys, - "oracle": add_additional_oracle_keys, - "redshift": add_additional_redshift_keys, - "snowflake": add_additional_snowflake_keys, - } - - method = mehtod_mapper.get(output_mode) - - if method: - table_data = method(table_data) - - return table_data - - def key_cleaning(table_data: Dict, output_mode: str) -> Dict: if output_mode != "hql": table_data = clean_up_output(table_data, sql_clean_up_list) diff --git a/tests/dialects/test_snowflake.py b/tests/dialects/test_snowflake.py index 21fb289..8b255f1 100644 --- a/tests/dialects/test_snowflake.py +++ b/tests/dialects/test_snowflake.py @@ -31,9 +31,10 @@ def test_clone_table(): "checks": [], "columns": [], "index": [], - "like": {"schema": None, "table_name": "orders"}, + "clone": {"schema": None, "table_name": "orders"}, "partitioned_by": [], "primary_key": [], + "primary_key_enforced": None, "schema": None, "table_name": "orders_clone", "tablespace": None, @@ -46,7 +47,7 @@ def test_clone_table(): ddl = """ create table orders_clone clone orders; """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="snowflake") assert expected == result @@ -73,7 +74,7 @@ def test_cluster_by(): ddl = """ create table mytable (date timestamp_ntz, id number, content variant) cluster by (date, id); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="snowflake") expected = { "ddl_properties": [], "domains": [], @@ -84,6 +85,7 @@ def test_cluster_by(): "alter": {}, "checks": [], "cluster_by": ["date", "id"], + "clone": None, "columns": [ { "check": None, @@ -119,6 +121,7 @@ def test_cluster_by(): "index": [], "partitioned_by": [], "primary_key": [], + "primary_key_enforced": None, "schema": None, "table_name": "mytable", "tablespace": None, @@ -137,7 +140,7 @@ def test_enforced(): constraint pkey_1 primary key (col1, col2) not enforced ); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="snowflake") expected = { "domains": [], "ddl_properties": [], @@ -147,6 +150,7 @@ def test_enforced(): { "alter": {}, "checks": [], + "clone": None, "columns": [ { "check": None, @@ -536,7 +540,7 @@ def test_table_with_retention(): "schema": "ASIN", "table_name": "EXCLUSION", "tablespace": None, - "data_retention_time_in_days": 15, + "table_properties": {"data_retention_time_in_days": 15}, } ] @@ -596,7 +600,7 @@ def test_table_with_change_tracking(): "schema": "ASIN", "table_name": "EXCLUSION", "tablespace": None, - "change_tracking": False, + "table_properties": {"change_tracking": False}, } ] @@ -850,13 +854,15 @@ def test_virtual_column_ext_table(): "partitioned_by": [], "primary_key": [], "primary_key_enforced": None, - "auto_refresh": False, "schema": "TABLE_DATA_SRC", "table_name": "EXT_PAYLOAD_MANIFEST_WEB", "tablespace": None, "replace": True, "if_not_exists": True, - "location": "@ADL_Azure_Storage_Account_Container_Name/", + "table_properties": { + "auto_refresh": False, + "location": "@ADL_Azure_Storage_Account_Container_Name/", + }, } ] @@ -911,20 +917,22 @@ def test_virtual_column_table(): "partitioned_by": [], "primary_key": [], "primary_key_enforced": None, - "auto_refresh": False, "schema": "TABLE_DATA_SRC", "table_name": "EXT_PAYLOAD_MANIFEST_WEB", "tablespace": None, "replace": True, "if_not_exists": True, - "location": "@ADL_Azure_Storage_Account_Container_Name/", - "file_format": [ - "TYPE=JSON", - "NULL_IF=('field')", - "DATE_FORMAT=AUTO", - "TRIM_SPACE=TRUE", - ], - "stage_file_format": ["TYPE=JSON", "NULL_IF=()"], + "table_properties": { + "auto_refresh": False, + "file_format": [ + "TYPE=JSON", + "NULL_IF=('field')", + "DATE_FORMAT=AUTO", + "TRIM_SPACE=TRUE", + ], + "location": "@ADL_Azure_Storage_Account_Container_Name/", + "stage_file_format": ["TYPE=JSON", "NULL_IF=()"], + }, } ] diff --git a/tests/dialects/test_spark_sql.py b/tests/dialects/test_spark_sql.py index b863b8e..84b5a6d 100644 --- a/tests/dialects/test_spark_sql.py +++ b/tests/dialects/test_spark_sql.py @@ -166,13 +166,12 @@ def test_spark_sql_partitioned_by_function(): }, ], "index": [], - "location": "'s3://tables/a'", "partitioned_by": [{"args": "(b)", "func_name": "months"}], "primary_key": [], "schema": None, "table_name": "a", "tablespace": None, - "using": "iceberg", + "table_properties": {"location": "'s3://tables/a'", "using": "iceberg"}, } ], "types": [], diff --git a/tests/non_statement_tests/test_args.py b/tests/non_statement_tests/test_args.py index 2a060ad..38b48a6 100644 --- a/tests/non_statement_tests/test_args.py +++ b/tests/non_statement_tests/test_args.py @@ -1,3 +1,5 @@ +import json + from simple_ddl_parser import DDLParser @@ -18,4 +20,6 @@ def test_json_dump_arg(): ' "schema": null, "table_name": "list_bucket_single", ' '"skewed_by": {"key": "key", "on": ["1", "5", "6"]}}]' ) - assert parse_results == expected + expected = json.loads(expected) + print(json.loads(parse_results)) + assert json.loads(parse_results) == expected diff --git a/tests/test_simple_ddl_parser.py b/tests/test_simple_ddl_parser.py index 651dab5..02e5eb3 100644 --- a/tests/test_simple_ddl_parser.py +++ b/tests/test_simple_ddl_parser.py @@ -818,7 +818,7 @@ def test_like_statement(): "checks": [], "columns": [], "index": [], - "like": {"schema": None, "table_name": "Old_Users"}, + "clone": {"schema": None, "table_name": "Old_Users"}, "partitioned_by": [], "primary_key": [], "schema": None, From f18c707181cd2b048cc49cf23ee155fdb47ba925 Mon Sep 17 00:00:00 2001 From: xnuinside Date: Sun, 7 Jan 2024 22:12:53 +0300 Subject: [PATCH 02/12] set version to 1.0.0 --- README.md | 89 +++++++++------------------------ docs/README.rst | 129 +++++++++++++++--------------------------------- pyproject.toml | 2 +- 3 files changed, 63 insertions(+), 157 deletions(-) diff --git a/README.md b/README.md index 73aff96..dc728ad 100644 --- a/README.md +++ b/README.md @@ -486,6 +486,29 @@ for help with debugging & testing support for BigQuery dialect DDLs: ## Changelog +**v1.0.0** +In output structure was done important changes that can in theory breaks code. + + +### Important changes +1. Important change: + +all custom table properties that are defined after column definition in 'CREATE TABLE' statement and relative to only one dialect (only for SparkSQL, or HQL,etc), for example, like here: +https://github.com/xnuinside/simple-ddl-parser/blob/main/tests/dialects/test_snowflake.py#L767 or https://github.com/xnuinside/simple-ddl-parser/blob/main/tests/dialects/test_spark_sql.py#L133 will be saved now in property `table_properties` as dict. +Previously they was placed on same level of table output as `columns`, `alter`, etc. Now, they grouped and moved to key `table_properties`. + +2. Formatting parser result now represented by 2 classes - Output & TableData, that makes it more strict and readable. + +3. The output mode now functions more strictly. If you want to obtain output fields specific to a certain dialect, +use output_mode='snowflake' for Snowflake or output_mode='hql' for HQL, etc. +Previously, some keys appeared in the result without being filtered by dialect. +For example, if 'CLUSTER BY' was in the DDL, it would show up in the 'cluster_by' field regardless of the output mode. +However, now all fields that only work in certain dialects and are not part of the basic SQL notation will only be shown +if you choose the correct output_mode. + +### Snowflake updates: +4. For some reasons, 'CLONE' statement in SNOWFLAKE was parsed into 'like' key in output. Now it was changed to 'clone' - inner structure of output stay the same as previously. + **v0.32.1** ### Minor Fixes 1. Removed debug print @@ -790,69 +813,3 @@ Also added support project.dataset.name format in CREATE SCHEMA and ALTER statem ## Improvements: 1. CLUSTED BY can be used without () - - -**v0.22.0** -### New Features: - -## BigQuery: - -I started to add partial support for BigQuery - -1. Added support for OPTIONS in CREATE SCHEMA statement - -## MSSQL: - -1. Added support for PRIMARY KEY CLUSTERED - full details about clusterisation are parsed now in separate key 'clustered_primary_key'. -I don't like that but when I started I did not thought about all those details, so in version 1.0.* I will work on more beautiful and logically output structure. -https://github.com/xnuinside/simple-ddl-parser/issues/91 - -Pay attention: previously they parsed somehow, but in incorrect structure. - -### Improvements: - -1. Strings in double quotes moved as separate token from ID to fix a lot of issues with strings with spaces inside -2. Now parser can parse statements separated by new line also (without GO or ; at the end of statement) - https://github.com/xnuinside/simple-ddl-parser/issues/90 - -### Fixes: - -1. Now open strings is not valid in checks (previously the was parsed.) Open string sample 'some string (exist open quote, but there is no close quote) -2. Order like ASC, DESK in primary keys now parsed valid (not as previously as column name) - -**v0.21.2** -Fixies: -1. remove 'PERIOD' from tokens - -**v0.21.1** -Fixies: -1. START WITH, INCREMENT BY and CACHE (without value) in sequences now is parsed correctly. - - -**v0.21.0** -### New Features: - - ## MSSQL: - - 1. Added support for statements: - 1. PERIOD FOR SYSTEM_TIME in CREATE TABLE statement - 2. ON [PRIMARY] after CREATE TABLE statement (sample in test files test_mssql_specific.py) - 3. WITH statement for TABLE properties - 4. TEXTIMAGE_ON statement - 5. DEFAULT NEXT VALUE FOR in COLUMN DEFAULT - - 2. Added support for separating tables DDL by 'GO' statement as in output of MSSQL - 3. Added support for CREATE TYPE as TABLE - -**v0.20.0** -### New Features: - - #### Common - 1. SET statements from DDL scripts now collected as type 'ddl_properties' (if you use group_by_type=True) and parsed as - dicts with 2 keys inside {'name': 'property name', 'value': 'property value'} - - #### MySQL - 2. Added support for MySQL ON UPDATE statements in column (without REFERENCE) - - #### MSSQL - 3. Added support for CONSTRAINT [CLUSTERED]... PRIMARY KEY for Table definition - 4. Added support for WITH statement in CONSTRAINT (Table definition) diff --git a/docs/README.rst b/docs/README.rst index 8703818..9205cfa 100644 --- a/docs/README.rst +++ b/docs/README.rst @@ -25,11 +25,16 @@ Build with ply (lex & yacc in python). A lot of samples in 'tests/. Is it Stable? ^^^^^^^^^^^^^ -Yes, library already has about 7000+ downloads per day - https://pypistats.org/packages/simple-ddl-parser.. +Yes, library already has about 9000+ downloads per day - https://pypistats.org/packages/simple-ddl-parser.. -As maintainer, I guarantee that any backward incompatible changes will not be done in patch or minor version. But! Pay attention that sometimes output in keywords can be changed in minor version because of fixing wrong behaviour in past. For example, previously 'auto_increment' was a part of column type, but later it became a separate column property. So, please read for minor versions changedlog. +As maintainer, I guarantee that any backward incompatible changes will not be done in patch or minor version. But! Pay attention that sometimes output in keywords can be changed in minor version because of fixing wrong behaviour in past. -However, in process of adding support for new statements & features I see that output can be structured more optimal way and I hope to release version ``1.0.*`` with more struct output result. But, it will not be soon, first of all, I want to add support for so much statements as I can. So I don't think make sense to expect version 1.0.* before, for example, version ``0.26.0`` :) +Updates in version 1.x +^^^^^^^^^^^^^^^^^^^^^^ + +The full list of updates can be found in the Changelog below (at the end of README). + +Version 1.0.0 was released due to significant changes in the output structure and a stricter approach regarding the scope of the produced output. Now, you must provide the argument 'output_mode=name_of_your_dialect' if you wish to see arguments/properties specific to a particular dialect How does it work? ^^^^^^^^^^^^^^^^^ @@ -544,6 +549,37 @@ for help with debugging & testing support for BigQuery dialect DDLs: Changelog --------- +**v1.0.0** +In output structure was done important changes that can in theory breaks code. + +Important changes +^^^^^^^^^^^^^^^^^ + + +#. Important change: + +all custom table properties that are defined after column definition in 'CREATE TABLE' statement and relative to only one dialect (only for SparkSQL, or HQL,etc), for example, like here: +https://github.com/xnuinside/simple-ddl-parser/blob/main/tests/dialects/test_snowflake.py#L767 or https://github.com/xnuinside/simple-ddl-parser/blob/main/tests/dialects/test_spark_sql.py#L133 will be saved now in property ``table_properties`` as dict. +Previously they was placed on same level of table output as ``columns``\ , ``alter``\ , etc. Now, they grouped and moved to key ``table_properties``. + + +#. + Formatting parser result now represented by 2 classes - Output & TableData, that makes it more strict and readable. + +#. + The output mode now functions more strictly. If you want to obtain output fields specific to a certain dialect, + use output_mode='snowflake' for Snowflake or output_mode='hql' for HQL, etc. + Previously, some keys appeared in the result without being filtered by dialect. + For example, if 'CLUSTER BY' was in the DDL, it would show up in the 'cluster_by' field regardless of the output mode. + However, now all fields that only work in certain dialects and are not part of the basic SQL notation will only be shown + if you choose the correct output_mode. + +Snowflake updates: +^^^^^^^^^^^^^^^^^^ + + +#. For some reasons, 'CLONE' statement in SNOWFLAKE was parsed into 'like' key in output. Now it was changed to 'clone' - inner structure of output stay the same as previously. + **v0.32.1** Minor Fixes @@ -987,90 +1023,3 @@ Improvements: #. CLUSTED BY can be used without () - -**v0.22.0** - -New Features: -^^^^^^^^^^^^^ - -BigQuery: ---------- - -I started to add partial support for BigQuery - - -#. Added support for OPTIONS in CREATE SCHEMA statement - -MSSQL: ------- - - -#. Added support for PRIMARY KEY CLUSTERED - full details about clusterisation are parsed now in separate key 'clustered_primary_key'. - I don't like that but when I started I did not thought about all those details, so in version 1.0.* I will work on more beautiful and logically output structure. - https://github.com/xnuinside/simple-ddl-parser/issues/91 - -Pay attention: previously they parsed somehow, but in incorrect structure. - -Improvements: -^^^^^^^^^^^^^ - - -#. Strings in double quotes moved as separate token from ID to fix a lot of issues with strings with spaces inside -#. Now parser can parse statements separated by new line also (without GO or ; at the end of statement) - https://github.com/xnuinside/simple-ddl-parser/issues/90 - -Fixes: -^^^^^^ - - -#. Now open strings is not valid in checks (previously the was parsed.) Open string sample 'some string (exist open quote, but there is no close quote) -#. Order like ASC, DESK in primary keys now parsed valid (not as previously as column name) - -**v0.21.2** -Fixies: - - -#. remove 'PERIOD' from tokens - -**v0.21.1** -Fixies: - - -#. START WITH, INCREMENT BY and CACHE (without value) in sequences now is parsed correctly. - -**v0.21.0** - -New Features: -^^^^^^^^^^^^^ - -.. code-block:: - - ## MSSQL: - - 1. Added support for statements: - 1. PERIOD FOR SYSTEM_TIME in CREATE TABLE statement - 2. ON [PRIMARY] after CREATE TABLE statement (sample in test files test_mssql_specific.py) - 3. WITH statement for TABLE properties - 4. TEXTIMAGE_ON statement - 5. DEFAULT NEXT VALUE FOR in COLUMN DEFAULT - - 2. Added support for separating tables DDL by 'GO' statement as in output of MSSQL - 3. Added support for CREATE TYPE as TABLE - - -**v0.20.0** - -New Features: -^^^^^^^^^^^^^ - -.. code-block:: - - #### Common - 1. SET statements from DDL scripts now collected as type 'ddl_properties' (if you use group_by_type=True) and parsed as - dicts with 2 keys inside {'name': 'property name', 'value': 'property value'} - - #### MySQL - 2. Added support for MySQL ON UPDATE statements in column (without REFERENCE) - - #### MSSQL - 3. Added support for CONSTRAINT [CLUSTERED]... PRIMARY KEY for Table definition - 4. Added support for WITH statement in CONSTRAINT (Table definition) diff --git a/pyproject.toml b/pyproject.toml index 8811991..4756b29 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "simple-ddl-parser" -version = "0.32.1" +version = "1.0.0" description = "Simple DDL Parser to parse SQL & dialects like HQL, TSQL (MSSQL), Oracle, AWS Redshift, Snowflake, MySQL, PostgreSQL, etc ddl files to json/python dict with full information about columns: types, defaults, primary keys, etc.; sequences, alters, custom types & other entities from ddl." authors = ["Iuliia Volkova "] license = "MIT" From 54029429400b5a695ca78bee679d575f9c81b3c2 Mon Sep 17 00:00:00 2001 From: xnuinside Date: Mon, 8 Jan 2024 00:31:13 +0300 Subject: [PATCH 03/12] added classes for dialects --- pyproject.toml | 1 + simple_ddl_parser/dialects/sql.py | 2 +- simple_ddl_parser/output/common.py | 199 ++++++++++++++++------- simple_ddl_parser/output/dialects.py | 45 +---- simple_ddl_parser/parser.py | 11 +- simple_ddl_parser/utils.py | 4 + tests/dialects/test_hql_output_mode.py | 21 --- tests/dialects/test_snowflake.py | 5 +- tests/dialects/test_spark_sql.py | 13 +- tests/non_statement_tests/test_args.py | 1 + tests/non_statement_tests/test_common.py | 2 +- tests/test_simple_ddl_parser.py | 9 - 12 files changed, 169 insertions(+), 144 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4756b29..9afc091 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,6 +24,7 @@ classifiers = [ [tool.poetry.dependencies] python = "^3.6" +dataclasses = { version = "0.8", python = ">=3.6,<3.7" } ply = "^3.11" [tool.poetry.dev-dependencies] diff --git a/simple_ddl_parser/dialects/sql.py b/simple_ddl_parser/dialects/sql.py index e743846..26e15b1 100644 --- a/simple_ddl_parser/dialects/sql.py +++ b/simple_ddl_parser/dialects/sql.py @@ -1163,7 +1163,7 @@ def p_expression_like_table(self, p: List) -> None: table_name = p_list[-1] schema = None p[0] = p[1] - p[0].update({p[2]: {"schema": schema, "table_name": table_name}}) + p[0].update({p_list[-2]: {"schema": schema, "table_name": table_name}}) def p_t_name(self, p: List) -> None: """t_name : id DOT id diff --git a/simple_ddl_parser/output/common.py b/simple_ddl_parser/output/common.py index a8c2967..580855e 100644 --- a/simple_ddl_parser/output/common.py +++ b/simple_ddl_parser/output/common.py @@ -2,7 +2,7 @@ import logging import os from copy import deepcopy -from dataclasses import dataclass, field +from dataclasses import Field, dataclass, field from typing import Any, Dict, Hashable, List, Optional from simple_ddl_parser.output import dialects as d @@ -17,25 +17,143 @@ "snowflake", "redshift", "bigquery", + "spark_sql", ] logger = logging.getLogger("simple_ddl_parser") +def dialect(name: str): + output_modes = {"output_modes": [name]} + + def wrapper(cls): + cls.__dialect_name__ = name + for key, value in cls.__dict__.items(): + if isinstance(value, Field): + metadata = value.metadata.copy() + metadata.update(output_modes) + value.metadata = metadata + setattr(cls, key, value) + return cls + + return wrapper + + +@dataclass +@dialect(name="redshift") +class RedshiftFields: + temp: Optional[bool] = field(default=False, metadata={"output": "modes"}) + sortkey: Optional[dict] = field( + default_factory=lambda: {"type": None, "keys": []}, + ) + diststyle: Optional[str] = field( + default=None, + ) + distkey: Optional[str] = field( + default=None, + ) + encode: Optional[str] = field( + default=None, + ) + + def add_additional_keys_in_column_redshift(self, column_data: Dict) -> Dict: + column_data["encode"] = column_data.get("encode", None) + if column_data.get("distkey"): + self.distkey = column_data["name"] + del column_data["distkey"] + return column_data + + def post_process_dialect_redshift(self) -> None: + for column in self.columns: + column = self.add_additional_keys_in_column_redshift(column) + if self.encode: + column["encode"] = column["encode"] or self.encode + + +""" if self.output_mode == "oracle": + for column in table_data.get("columns", []): + column = d.add_additional_oracle_keys_in_column(column) + elif self.output_mode == "snowflake": + # can be no columns if it is a create database or create schema + for column in table_data.get("columns", []): + column = d.add_additional_snowflake_keys_in_column(column) + elif self.output_mode == "redshift": + table_data = d.process_redshift_dialect(table_data)""" + + +@dataclass +@dialect(name="hql") +class HQLFields: + external: Optional[bool] = field(default=False, metadata={"output": "modes"}) + skewed_by: Optional[dict] = field( + default_factory=dict, + metadata={"exclude_if_not_provided": True}, + ) + stored_as: Optional[str] = field(default=None, metadata={"output": "modes"}) + + +@dataclass +@dialect(name="snowflake") +class SnowflakeFields: + primary_key_enforced: Optional[bool] = field( + default=None, + ) + clone: Optional[dict] = field( + default=None, + ) + cluster_by: Optional[list] = field( + default_factory=list, + metadata={"exclude_if_not_provided": True}, + ) + with_tag: Optional[list] = field( + default_factory=list, + metadata={"exclude_if_not_provided": True}, + ) + replace: Optional[bool] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + + +@dataclass +class DialectsFields(HQLFields, SnowflakeFields, RedshiftFields): + comment: Optional[str] = field( + default=None, + metadata={ + "output_modes": ["hql", "spark_sql", "snowflake"], + "exclude_if_not_provided": True, + }, + ) + # snowflake + tblproperties: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} + ) + location: Optional[str] = field( + default=None, + metadata={ + "output_modes": ["hql", "spark_sql", "snowflake"], + "exclude_if_not_provided": True, + }, + ) + like: Optional[dict] = field( + default_factory=dict, + metadata={"output_modes": ["hql", "redshift"], "exclude_if_not_provided": True}, + ) + + @dataclass -class TableData: +class TableData(DialectsFields): """representation of table data exclude_if_not_provided - mean, exclude in output, if was not in data from parser """ - # mandatory fields - table_name: str + # mandatory fields, should have defaults for inheritance + table_name: str = None # final output field set - dialect - init_data: dict = field(metadata={"exclude_always": True}) + init_data: dict = field(default=None, metadata={"exclude_always": True}) # final output field set - dialect - output_mode: str = field(metadata={"exclude_always": True}) + output_mode: str = field(default=None, metadata={"exclude_always": True}) # optional fields schema: Optional[str] = None primary_key: Optional[List[str]] = None @@ -57,46 +175,15 @@ class TableData: references: Optional[List[Dict]] = field( default_factory=list, metadata={"exclude_always": True} ) - comment: Optional[str] = field( - default=None, metadata={"exclude_if_not_provided": True} - ) if_not_exists: Optional[bool] = field( default=False, metadata={"exclude_if_not_provided": True} ) partition_by: Optional[dict] = field( default_factory=dict, metadata={"exclude_if_not_provided": True} ) - # dialects table_properties: Optional[dict] = field( default_factory=dict, metadata={"exclude_if_empty": True} ) - external: Optional[bool] = field( - default=False, metadata={"exclude_if_not_provided": True} - ) - skewed_by: Optional[dict] = field( - default_factory=dict, - metadata={"exclude_if_not_provided": True, "output_mode": "hql"}, - ) - stored_as: Optional[str] = field(default=None, metadata={"output_mode": "hql"}) - # snowflake - tblproperties: Optional[dict] = field( - default_factory=dict, metadata={"exclude_if_not_provided": True} - ) - replace: Optional[bool] = field( - default=None, metadata={"exclude_if_not_provided": True} - ) - primary_key_enforced: Optional[bool] = field( - default=None, metadata={"output_mode": "snowflake"} - ) - clone: Optional[dict] = field(default=None, metadata={"output_mode": "snowflake"}) - cluster_by: Optional[list] = field( - default_factory=list, - metadata={"output_mode": "snowflake", "exclude_if_not_provided": True}, - ) - with_tag: Optional[list] = field( - default_factory=list, - metadata={"output_mode": "snowflake", "exclude_if_not_provided": True}, - ) def get(self, value: Hashable, default: Any = None) -> Any: return self.__dict__.get(value, default) @@ -114,10 +201,14 @@ def __iter__(self): yield x def __post_init__(self): - self.populate_dialects_table_data() self.set_unique_columns() self.populate_keys() self.normalize_ref_columns_in_final_output() + post_process_dialect = getattr( + self, f"post_process_dialect_{self.output_mode}", None + ) + if post_process_dialect: + post_process_dialect() @classmethod def init(cls, **kwargs): @@ -153,21 +244,6 @@ def set_column_unique_param(self, key: str) -> None: if column["name"] in check_in: column["unique"] = True - def populate_dialects_table_data(self) -> None: - mehtod_mapper = { - "hql": d.add_additional_hql_keys, - "mssql": d.add_additional_mssql_keys, - "mysql": d.add_additional_mssql_keys, - "oracle": d.add_additional_oracle_keys, - "redshift": d.add_additional_redshift_keys, - "snowflake": d.add_additional_snowflake_keys, - } - - method = mehtod_mapper.get(self.output_mode) - - if method: - self = method(self) - def normalize_ref_columns_in_final_output(self): for col_ref in self.ref_columns: name = col_ref["name"] @@ -227,11 +303,11 @@ def filter_out_output(self, field: str) -> bool: exclude_if_not_provided.add(key) if value.metadata.get("exclude_if_empty") is True: exclude_if_empty.add(key) - if ( - isinstance(value.metadata.get("output_mode"), str) - and value.metadata.get("output_mode") != self.output_mode - ): + if isinstance( + value.metadata.get("output_modes"), list + ) and self.output_mode not in value.metadata.get("output_modes"): exclude_by_dialect_filter.add(key) + if field in exclude_always_keys: return False if field in exclude_if_not_provided and field not in self.init_data: @@ -247,7 +323,9 @@ def to_dict(self): for key, value in self.__dict__.items(): if self.filter_out_output(key) is True: output[key] = value - return d.key_cleaning(output, self.output_mode) + output = d.key_cleaning(output, self.output_mode) + print(output) + return output class Output: @@ -322,8 +400,6 @@ def add_alter_to_table(self, statement: Dict) -> None: def process_statement_data(self, statement_data: Dict) -> Dict: """process tables, types, sequence and etc. data""" - data = statement_data - if statement_data.get("table_name"): # mean we have table print(statement_data, "statement_data") @@ -336,6 +412,9 @@ def process_statement_data(self, statement_data: Dict) -> Dict: ) ] = table_data data = table_data.to_dict() + else: + data = statement_data + d.dialects_clean_up(self.output_mode, data) return data def process_alter_and_index_result(self, table: Dict): diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index 09405e9..baf4b33 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -19,8 +19,6 @@ def add_additional_hql_keys(table_data) -> Dict: table_data.if_not_exist_update( { "stored_as": None, - "location": None, - "comment": None, "row_format": None, "fields_terminated_by": None, "lines_terminated_by": None, @@ -44,25 +42,12 @@ def add_additional_oracle_keys(table_data: Dict) -> Dict: def update_bigquery_output(table_data: Dict) -> Dict: - if table_data.get("schema"): + if table_data.get("schema") or table_data.get("sequences"): table_data["dataset"] = table_data["schema"] del table_data["schema"] return table_data -def add_additional_redshift_keys(table_data: Dict) -> Dict: - table_data.if_not_exist_update( - { - "diststyle": None, - "distkey": None, - "sortkey": {"type": None, "keys": []}, - "encode": None, - "temp": False, - } - ) - return table_data - - def add_additional_snowflake_keys(table_data: Dict) -> Dict: table_data.if_not_exist_update({"clone": None, "primary_key_enforced": None}) return table_data @@ -77,14 +62,6 @@ def add_additional_snowflake_keys_in_column(column_data: Dict) -> Dict: return column_data -def add_additional_redshift_keys_in_column(column_data: Dict, table_data: Dict) -> Dict: - column_data["encode"] = column_data.get("encode", None) - if column_data.get("distkey"): - table_data["distkey"] = column_data["name"] - del column_data["distkey"] - return column_data, table_data - - def add_additional_mssql_keys(table_data: Dict) -> Dict: table_data.if_not_exist_update( { @@ -112,29 +89,11 @@ def key_cleaning(table_data: Dict, output_mode: str) -> Dict: return table_data -def process_redshift_dialect(table_data: List[Dict]) -> List[Dict]: - for column in table_data.get("columns", []): - column, table_data = add_additional_redshift_keys_in_column(column, table_data) - if table_data.get("encode"): - column["encode"] = column["encode"] or table_data.get("encode") - return table_data - - -def dialects_clean_up(output_mode: str, table_data: Dict) -> Dict: +def dialects_clean_up(output_mode: str, table_data) -> Dict: key_cleaning(table_data, output_mode) update_mappers_for_table_properties = {"bigquery": update_bigquery_output} update_table_prop = update_mappers_for_table_properties.get(output_mode) if update_table_prop: table_data = update_table_prop(table_data) - if output_mode == "oracle": - for column in table_data.get("columns", []): - column = add_additional_oracle_keys_in_column(column) - elif output_mode == "snowflake": - # can be no columns if it is a create database or create schema - for column in table_data.get("columns", []): - column = add_additional_snowflake_keys_in_column(column) - - elif output_mode == "redshift": - table_data = process_redshift_dialect(table_data) return table_data diff --git a/simple_ddl_parser/parser.py b/simple_ddl_parser/parser.py index e305ace..b78bd20 100755 --- a/simple_ddl_parser/parser.py +++ b/simple_ddl_parser/parser.py @@ -6,8 +6,11 @@ from ply import lex, yacc -from simple_ddl_parser.output.common import Output, dump_data_to_file -from simple_ddl_parser.utils import find_first_unpair_closed_par +from simple_ddl_parser.output.common import Output, dump_data_to_file, output_modes +from simple_ddl_parser.utils import ( + SimpleDDLParserException, + find_first_unpair_closed_par, +) # open comment OP_COM = "/*" @@ -339,6 +342,10 @@ def run( and each dict will contain list of parsed entities. Without it output is a List with Dicts where each Dict == one entity from ddl - one table or sequence or type. """ + if output_mode not in output_modes: + raise SimpleDDLParserException( + f"Output mode can be one of possible variants: {output_modes}" + ) self.tables = self.parse_data() self.tables = Output( parser_output=self.tables, diff --git a/simple_ddl_parser/utils.py b/simple_ddl_parser/utils.py index fbce9ac..e60fed3 100644 --- a/simple_ddl_parser/utils.py +++ b/simple_ddl_parser/utils.py @@ -55,3 +55,7 @@ def get_table_id(schema_name: str, table_name: str): if schema_name: schema_name = normalize_name(schema_name) return (table_name, schema_name) + + +class SimpleDDLParserException(Exception): + pass diff --git a/tests/dialects/test_hql_output_mode.py b/tests/dialects/test_hql_output_mode.py index d66e98b..8fb99e9 100644 --- a/tests/dialects/test_hql_output_mode.py +++ b/tests/dialects/test_hql_output_mode.py @@ -144,7 +144,6 @@ def test_partitioned_by_hql_output_mode_hql(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, - "comment": None, }, { "if_not_exists": True, @@ -256,7 +255,6 @@ def test_partitioned_by_hql_output_mode_hql(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, - "comment": None, }, ] @@ -392,7 +390,6 @@ def test_stored_as_hql_showed(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, - "comment": None, } ] assert expected == result @@ -527,7 +524,6 @@ def test_location_showed(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, - "comment": None, } ] assert expected == result @@ -665,7 +661,6 @@ def partitioned_by_multiple_tables_hql(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, - "comment": None, } ] assert expected == result @@ -745,7 +740,6 @@ def test_hql_row_format(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, - "comment": None, } ] assert expected == result @@ -826,7 +820,6 @@ def test_fields_terminated_by_hql(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, - "comment": None, } ] assert expected == result @@ -908,7 +901,6 @@ def test_collection_items_terminated_by_hql(): "collection_items_terminated_by": "'\\002'", "map_keys_terminated_by": None, "lines_terminated_by": None, - "comment": None, } ] assert expected == result @@ -992,7 +984,6 @@ def test_map_keys_terminated_by_hql(): "collection_items_terminated_by": "'\\002'", "map_keys_terminated_by": "'\\003'", "lines_terminated_by": None, - "comment": None, } ] @@ -1038,7 +1029,6 @@ def simple_structure_type_support(): "table_name": "salesorderdetail", "tablespace": None, "lines_terminated_by": None, - "comment": None, } ] @@ -1144,7 +1134,6 @@ def test_complex_structure_test_hql(): "tablespace": None, "stored_as": None, "location": None, - "comment": None, "row_format": None, "fields_terminated_by": None, "lines_terminated_by": None, @@ -1370,7 +1359,6 @@ def test_simple_serde(): "unique": False, }, ], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], @@ -1515,7 +1503,6 @@ def test_with_serde_properties(): "unique": False, }, ], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], @@ -1585,7 +1572,6 @@ def test_comment_without_null_statement(): "unique": False, } ], - "comment": None, "external": True, "fields_terminated_by": None, "index": [], @@ -1629,7 +1615,6 @@ def test_special_characters_in_comment(): "unique": False, } ], - "comment": None, "external": True, "fields_terminated_by": None, "index": [], @@ -1689,7 +1674,6 @@ def test_partitioned_by_multiple_columns(): "unique": False, } ], - "comment": None, "external": True, "fields_terminated_by": None, "index": [], @@ -1750,7 +1734,6 @@ def test_table_properties(): "unique": False, } ], - "comment": None, "external": True, "fields_terminated_by": None, "index": [], @@ -1818,7 +1801,6 @@ def test_output_input_format(): "inputformat": "'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'", }, "location": "'hdfs://xxxx'", - "comment": None, "row_format": { "serde": True, "java_class": "'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'", @@ -1873,7 +1855,6 @@ def test_skewed_by(): "tablespace": None, "stored_as": "DIRECTORIES", "location": None, - "comment": None, "row_format": None, "fields_terminated_by": None, "lines_terminated_by": None, @@ -2208,7 +2189,6 @@ def test_multiple_serde_options(): "unique": False, } ], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], @@ -2249,7 +2229,6 @@ def test_location_with_table_properties_in_like(): "checks": [], "collection_items_terminated_by": None, "columns": [], - "comment": None, "external": True, "fields_terminated_by": None, "if_not_exists": True, diff --git a/tests/dialects/test_snowflake.py b/tests/dialects/test_snowflake.py index 8b255f1..0834942 100644 --- a/tests/dialects/test_snowflake.py +++ b/tests/dialects/test_snowflake.py @@ -733,6 +733,7 @@ def test_autoincrement_noorder(): ], "types": [], } + print(result, "resultresult") assert result == expected @@ -859,9 +860,9 @@ def test_virtual_column_ext_table(): "tablespace": None, "replace": True, "if_not_exists": True, + "location": "@ADL_Azure_Storage_Account_Container_Name/", "table_properties": { "auto_refresh": False, - "location": "@ADL_Azure_Storage_Account_Container_Name/", }, } ] @@ -922,6 +923,7 @@ def test_virtual_column_table(): "tablespace": None, "replace": True, "if_not_exists": True, + "location": "@ADL_Azure_Storage_Account_Container_Name/", "table_properties": { "auto_refresh": False, "file_format": [ @@ -930,7 +932,6 @@ def test_virtual_column_table(): "DATE_FORMAT=AUTO", "TRIM_SPACE=TRUE", ], - "location": "@ADL_Azure_Storage_Account_Container_Name/", "stage_file_format": ["TYPE=JSON", "NULL_IF=()"], }, } diff --git a/tests/dialects/test_spark_sql.py b/tests/dialects/test_spark_sql.py index 84b5a6d..3695cb2 100644 --- a/tests/dialects/test_spark_sql.py +++ b/tests/dialects/test_spark_sql.py @@ -5,7 +5,9 @@ def test_spark_sql_using(): ddl = """CREATE TABLE student (id INT, name STRING, age INT) USING CSV COMMENT 'this is a comment' TBLPROPERTIES ('foo'='bar');""" - result = DDLParser(ddl, silent=False, normalize_names=True).run(group_by_type=True) + result = DDLParser(ddl, silent=False, normalize_names=True).run( + group_by_type=True, output_mode="spark_sql" + ) expected = { "ddl_properties": [], @@ -55,7 +57,7 @@ def test_spark_sql_using(): "table_name": "student", "tablespace": None, "tblproperties": {"'foo'": "'bar'"}, - "using": "CSV", + "table_properties": {"using": "CSV"}, "comment": "'this is a comment'", } ], @@ -116,7 +118,7 @@ def test_partition_by(): "schema": None, "table_name": "student", "tablespace": None, - "using": "CSV", + "table_properties": {"using": "CSV"}, } ], "types": [], @@ -132,7 +134,7 @@ def test_spark_sql_partitioned_by_function(): partitioned by (months(b)) location 's3://tables/a' """ - ).run(group_by_type=True) + ).run(group_by_type=True, output_mode="spark_sql") expected = { "ddl_properties": [], @@ -171,7 +173,8 @@ def test_spark_sql_partitioned_by_function(): "schema": None, "table_name": "a", "tablespace": None, - "table_properties": {"location": "'s3://tables/a'", "using": "iceberg"}, + "location": "'s3://tables/a'", + "table_properties": {"using": "iceberg"}, } ], "types": [], diff --git a/tests/non_statement_tests/test_args.py b/tests/non_statement_tests/test_args.py index 38b48a6..c3c9660 100644 --- a/tests/non_statement_tests/test_args.py +++ b/tests/non_statement_tests/test_args.py @@ -22,4 +22,5 @@ def test_json_dump_arg(): ) expected = json.loads(expected) print(json.loads(parse_results)) + print(expected) assert json.loads(parse_results) == expected diff --git a/tests/non_statement_tests/test_common.py b/tests/non_statement_tests/test_common.py index 8d0b255..bff4794 100644 --- a/tests/non_statement_tests/test_common.py +++ b/tests/non_statement_tests/test_common.py @@ -232,7 +232,6 @@ def test_parsing_go_and_use_correctly(): "unique": False, } ], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], @@ -248,6 +247,7 @@ def test_parsing_go_and_use_correctly(): "tablespace": None, } ] + print(result) assert expected == result diff --git a/tests/test_simple_ddl_parser.py b/tests/test_simple_ddl_parser.py index 02e5eb3..9d5fa2f 100644 --- a/tests/test_simple_ddl_parser.py +++ b/tests/test_simple_ddl_parser.py @@ -1935,7 +1935,6 @@ def test_quotes(): "tablespace": None, "stored_as": None, "location": None, - "comment": None, "row_format": None, "fields_terminated_by": None, "lines_terminated_by": None, @@ -1981,7 +1980,6 @@ def test_escaping_symbols_normal_str(): "unique": False, } ], - "comment": None, "external": True, "fields_terminated_by": None, "index": [], @@ -2033,7 +2031,6 @@ def test_escaping_symbols_raw_string(): "unique": False, } ], - "comment": None, "external": True, "fields_terminated_by": None, "index": [], @@ -2348,7 +2345,6 @@ def test_create_empty_table(): "checks": [], "collection_items_terminated_by": None, "columns": [], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], @@ -2399,7 +2395,6 @@ def test_table_name_reserved_word_after_dot(): "unique": False, } ], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], @@ -2430,7 +2425,6 @@ def test_table_name_reserved_word_after_dot(): "unique": False, } ], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], @@ -2461,7 +2455,6 @@ def test_table_name_reserved_word_after_dot(): "unique": False, } ], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], @@ -2734,7 +2727,6 @@ def test_replace_with_id(): "unique": False, } ], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], @@ -2767,7 +2759,6 @@ def test_replace_with_id(): "unique": False, } ], - "comment": None, "external": False, "fields_terminated_by": None, "index": [], From 5b3443923797889e6a4311d5656601e461d299ed Mon Sep 17 00:00:00 2001 From: xnuinside Date: Mon, 8 Jan 2024 13:41:39 +0300 Subject: [PATCH 04/12] add more dialects, move base table_data to separate module --- CHANGELOG.txt | 16 +- README.md | 4 +- simple_ddl_parser/__init__.py | 5 +- simple_ddl_parser/cli.py | 4 +- simple_ddl_parser/output/common.py | 597 ------------------ simple_ddl_parser/output/core.py | 235 +++++++ simple_ddl_parser/output/dialects.py | 313 +++++++-- simple_ddl_parser/output/table_data.py | 250 ++++++++ simple_ddl_parser/parser.py | 7 +- .../{test_hql_output_mode.py => test_hql.py} | 11 +- tests/non_statement_tests/test_args.py | 8 +- tests/non_statement_tests/test_common.py | 2 +- tests/test_simple_ddl_parser.py | 73 +-- 13 files changed, 772 insertions(+), 753 deletions(-) delete mode 100644 simple_ddl_parser/output/common.py create mode 100644 simple_ddl_parser/output/core.py create mode 100644 simple_ddl_parser/output/table_data.py rename tests/dialects/{test_hql_output_mode.py => test_hql.py} (99%) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 6e9646d..eef48ba 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -18,8 +18,22 @@ For example, if 'CLUSTER BY' was in the DDL, it would show up in the 'cluster_by However, now all fields that only work in certain dialects and are not part of the basic SQL notation will only be shown if you choose the correct output_mode. + +### New Dialects support +1. Added as possible output_modes new Dialects: +- Databrics SQL like 'databricks', +- Vertica as 'vertica', +- SqliteFields as 'sqlite', +- PostgreSQL as 'postgres' + +Full list of supported dialects you can find in dict - `supported_dialects`: + +`from simple_ddl_parser import supported_dialects` + +If you don't see dialect that you want to use - open issue with description and links to Database docs or use one of existed dialects. + ### Snowflake updates: -4. For some reasons, 'CLONE' statement in SNOWFLAKE was parsed into 'like' key in output. Now it was changed to 'clone' - inner structure of output stay the same as previously. +1. For some reasons, 'CLONE' statement in SNOWFLAKE was parsed into 'like' key in output. Now it was changed to 'clone' - inner structure of output stay the same as previously. **v0.32.1** ### Minor Fixes diff --git a/README.md b/README.md index dc728ad..fffb759 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ And you will get output with additional keys 'stored_as', 'location', 'external' If you run parser with command line add flag '-o=hql' or '--output-mode=hql' to get the same result. -Possible output_modes: ["mssql", "mysql", "oracle", "hql", "sql", "redshift", "snowflake"] +Possible output_modes: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'ibm_db2', 'oracle', 'hql', 'snowflake', 'sql'] ### From python code @@ -216,7 +216,7 @@ Output will be: ### More details `DDLParser(ddl).run()` -.run() method contains several arguments, that impact changing output result. As you can saw upper exists argument `output_mode` that allow you to set dialect and get more fields in output relative to chosen dialect, for example 'hql'. Possible output_modes: ["mssql", "mysql", "oracle", "hql", "sql"] +.run() method contains several arguments, that impact changing output result. As you can saw upper exists argument `output_mode` that allow you to set dialect and get more fields in output relative to chosen dialect, for example 'hql'. Possible output_modes: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'ibm_db2', 'oracle', 'hql', 'snowflake', 'sql'] Also in .run() method exists argument `group_by_type` (by default: False). By default output of parser looks like a List with Dicts where each dict == one entity from ddl (table, sequence, type, etc). And to understand that is current entity you need to check Dict like: if 'table_name' in dict - this is a table, if 'type_name' - this is a type & etc. diff --git a/simple_ddl_parser/__init__.py b/simple_ddl_parser/__init__.py index 54575c5..b204c1c 100644 --- a/simple_ddl_parser/__init__.py +++ b/simple_ddl_parser/__init__.py @@ -1,3 +1,6 @@ from simple_ddl_parser.ddl_parser import DDLParser, DDLParserError, parse_from_file +from simple_ddl_parser.output.dialects import dialect_by_name -__all__ = ["DDLParser", "parse_from_file", "DDLParserError"] +supported_dialects = dialect_by_name + +__all__ = ["DDLParser", "parse_from_file", "DDLParserError", "supported_dialects"] diff --git a/simple_ddl_parser/cli.py b/simple_ddl_parser/cli.py index ab2d315..c4381ae 100644 --- a/simple_ddl_parser/cli.py +++ b/simple_ddl_parser/cli.py @@ -5,7 +5,7 @@ import sys from simple_ddl_parser import parse_from_file -from simple_ddl_parser.output.common import output_modes +from simple_ddl_parser.output.dialects import dialect_by_name logger = logging.getLogger("simple_ddl_parser") @@ -37,7 +37,7 @@ def cli(): "-o", "--output-mode", default="sql", - help=f"Output mode that will be used to format result. Possible variants: {output_modes}", + help=f"Output mode that will be used to format result. Possible variants: {dialect_by_name.keys()}", ) return sdp_cli diff --git a/simple_ddl_parser/output/common.py b/simple_ddl_parser/output/common.py deleted file mode 100644 index 580855e..0000000 --- a/simple_ddl_parser/output/common.py +++ /dev/null @@ -1,597 +0,0 @@ -import json -import logging -import os -from copy import deepcopy -from dataclasses import Field, dataclass, field -from typing import Any, Dict, Hashable, List, Optional - -from simple_ddl_parser.output import dialects as d -from simple_ddl_parser.utils import get_table_id, normalize_name - -output_modes = [ - "mssql", - "mysql", - "oracle", - "hql", - "sql", - "snowflake", - "redshift", - "bigquery", - "spark_sql", -] - - -logger = logging.getLogger("simple_ddl_parser") - - -def dialect(name: str): - output_modes = {"output_modes": [name]} - - def wrapper(cls): - cls.__dialect_name__ = name - for key, value in cls.__dict__.items(): - if isinstance(value, Field): - metadata = value.metadata.copy() - metadata.update(output_modes) - value.metadata = metadata - setattr(cls, key, value) - return cls - - return wrapper - - -@dataclass -@dialect(name="redshift") -class RedshiftFields: - temp: Optional[bool] = field(default=False, metadata={"output": "modes"}) - sortkey: Optional[dict] = field( - default_factory=lambda: {"type": None, "keys": []}, - ) - diststyle: Optional[str] = field( - default=None, - ) - distkey: Optional[str] = field( - default=None, - ) - encode: Optional[str] = field( - default=None, - ) - - def add_additional_keys_in_column_redshift(self, column_data: Dict) -> Dict: - column_data["encode"] = column_data.get("encode", None) - if column_data.get("distkey"): - self.distkey = column_data["name"] - del column_data["distkey"] - return column_data - - def post_process_dialect_redshift(self) -> None: - for column in self.columns: - column = self.add_additional_keys_in_column_redshift(column) - if self.encode: - column["encode"] = column["encode"] or self.encode - - -""" if self.output_mode == "oracle": - for column in table_data.get("columns", []): - column = d.add_additional_oracle_keys_in_column(column) - elif self.output_mode == "snowflake": - # can be no columns if it is a create database or create schema - for column in table_data.get("columns", []): - column = d.add_additional_snowflake_keys_in_column(column) - elif self.output_mode == "redshift": - table_data = d.process_redshift_dialect(table_data)""" - - -@dataclass -@dialect(name="hql") -class HQLFields: - external: Optional[bool] = field(default=False, metadata={"output": "modes"}) - skewed_by: Optional[dict] = field( - default_factory=dict, - metadata={"exclude_if_not_provided": True}, - ) - stored_as: Optional[str] = field(default=None, metadata={"output": "modes"}) - - -@dataclass -@dialect(name="snowflake") -class SnowflakeFields: - primary_key_enforced: Optional[bool] = field( - default=None, - ) - clone: Optional[dict] = field( - default=None, - ) - cluster_by: Optional[list] = field( - default_factory=list, - metadata={"exclude_if_not_provided": True}, - ) - with_tag: Optional[list] = field( - default_factory=list, - metadata={"exclude_if_not_provided": True}, - ) - replace: Optional[bool] = field( - default=None, metadata={"exclude_if_not_provided": True} - ) - - -@dataclass -class DialectsFields(HQLFields, SnowflakeFields, RedshiftFields): - comment: Optional[str] = field( - default=None, - metadata={ - "output_modes": ["hql", "spark_sql", "snowflake"], - "exclude_if_not_provided": True, - }, - ) - # snowflake - tblproperties: Optional[dict] = field( - default_factory=dict, metadata={"exclude_if_not_provided": True} - ) - location: Optional[str] = field( - default=None, - metadata={ - "output_modes": ["hql", "spark_sql", "snowflake"], - "exclude_if_not_provided": True, - }, - ) - like: Optional[dict] = field( - default_factory=dict, - metadata={"output_modes": ["hql", "redshift"], "exclude_if_not_provided": True}, - ) - - -@dataclass -class TableData(DialectsFields): - """representation of table data - - exclude_if_not_provided - mean, exclude in output, if was not in data from parser - """ - - # mandatory fields, should have defaults for inheritance - table_name: str = None - # final output field set - dialect - init_data: dict = field(default=None, metadata={"exclude_always": True}) - # final output field set - dialect - output_mode: str = field(default=None, metadata={"exclude_always": True}) - # optional fields - schema: Optional[str] = None - primary_key: Optional[List[str]] = None - columns: Optional[List[dict]] = field(default_factory=list) - alter: Optional[Dict] = field(default_factory=dict) - checks: Optional[List] = field(default_factory=list) - index: Optional[List] = field(default_factory=list) - partitioned_by: Optional[List] = field(default_factory=list) - constraints: Optional[Dict] = field( - default_factory=dict, metadata={"exclude_if_not_provided": True} - ) - tablespace: Optional[str] = None - unique: Optional[list] = field( - default_factory=list, metadata={"exclude_always": True} - ) - ref_columns: Optional[List[Dict]] = field( - default_factory=list, metadata={"exclude_always": True} - ) - references: Optional[List[Dict]] = field( - default_factory=list, metadata={"exclude_always": True} - ) - if_not_exists: Optional[bool] = field( - default=False, metadata={"exclude_if_not_provided": True} - ) - partition_by: Optional[dict] = field( - default_factory=dict, metadata={"exclude_if_not_provided": True} - ) - table_properties: Optional[dict] = field( - default_factory=dict, metadata={"exclude_if_empty": True} - ) - - def get(self, value: Hashable, default: Any = None) -> Any: - return self.__dict__.get(value, default) - - def update(self, input_dict: dict) -> None: - self.__dict__.update(input_dict) - - def if_not_exist_update(self, input_dict: dict) -> None: - for key, value in input_dict.items(): - if key not in self.__dict__: - self.__dict__[key] = value - - def __iter__(self): - for x in self.__dict__: - yield x - - def __post_init__(self): - self.set_unique_columns() - self.populate_keys() - self.normalize_ref_columns_in_final_output() - post_process_dialect = getattr( - self, f"post_process_dialect_{self.output_mode}", None - ) - if post_process_dialect: - post_process_dialect() - - @classmethod - def init(cls, **kwargs): - cls_fields = {field for field in cls.__dataclass_fields__} - table_main_args = {k: v for k, v in kwargs.items() if k in cls_fields} - table_properties = {k: v for k, v in kwargs.items() if k not in table_main_args} - init_data = {} - init_data.update(table_main_args) - init_data.update(table_properties) - ret = cls( - **table_main_args, table_properties=table_properties, init_data=init_data - ) - return ret - - def set_unique_columns(self) -> None: - unique_keys = ["unique_statement", "constraints"] - - for key in unique_keys: - if getattr(self, key, None): - # get column names from unique constraints & statements - self.set_column_unique_param(key) - - def set_column_unique_param(self, key: str) -> None: - for column in self.columns: - if key == "constraints": - unique = getattr(self, key, {}).get("unique", []) - if unique: - check_in = unique["columns"] - else: - check_in = [] - else: - check_in = getattr(self, key, {}) - if column["name"] in check_in: - column["unique"] = True - - def normalize_ref_columns_in_final_output(self): - for col_ref in self.ref_columns: - name = col_ref["name"] - for column in self.columns: - if name == column["name"]: - del col_ref["name"] - column["references"] = col_ref - - def populate_keys(self) -> None: - """primary_key - list of column names, example: "primary_key": ["data_sync_id", "sync_start"],""" - - if not self.primary_key: - self.get_pk_from_columns_and_constraints() - else: - self.remove_pk_from_columns() - - if self.unique: - self.add_unique_columns() - - for column in self.columns: - if column["name"] in self.primary_key: - column["nullable"] = False - - def remove_pk_from_columns(self) -> None: - for column in self.columns: - del column["primary_key"] - - def get_pk_from_columns_and_constraints(self) -> None: - pk = [] - for column in self.columns: - if column["primary_key"]: - pk.append(column["name"]) - del column["primary_key"] - if self.constraints.get("primary_keys"): - for key_constraints in self.constraints["primary_keys"]: - pk.extend(key_constraints["columns"]) - - self.primary_key = pk - - def add_unique_columns(self) -> None: - for column in self.columns: - if column["name"] in self.unique: - column["unique"] = True - - def filter_out_output(self, field: str) -> bool: - cls_fields = self.__dataclass_fields__.items() - exclude_always_keys = set() - exclude_if_not_provided = set() - exclude_if_empty = set() - exclude_by_dialect_filter = set() - - for key, value in cls_fields: - if value.metadata.get("exclude_always") is True: - exclude_always_keys.add(key) - else: - if value.metadata.get("exclude_if_not_provided") is True: - exclude_if_not_provided.add(key) - if value.metadata.get("exclude_if_empty") is True: - exclude_if_empty.add(key) - if isinstance( - value.metadata.get("output_modes"), list - ) and self.output_mode not in value.metadata.get("output_modes"): - exclude_by_dialect_filter.add(key) - - if field in exclude_always_keys: - return False - if field in exclude_if_not_provided and field not in self.init_data: - return False - if field in exclude_if_empty and not self.get(field): - return False - if field in exclude_by_dialect_filter: - return False - return True - - def to_dict(self): - output = {} - for key, value in self.__dict__.items(): - if self.filter_out_output(key) is True: - output[key] = value - output = d.key_cleaning(output, self.output_mode) - print(output) - return output - - -class Output: - """class implements logic to format final output after parser""" - - def __init__( - self, parser_output: List[Dict], output_mode: str, group_by_type: bool - ) -> None: - self.output_mode = output_mode - self.group_by_type = group_by_type - self.parser_output = parser_output - - self.final_result = [] - self.tables_dict = {} - - def get_table_from_tables_data(self, schema: str, table_name: str) -> Dict: - """get table by name and schema or rise exception""" - - table_id = get_table_id(schema, table_name) - target_table = self.tables_dict.get(table_id) - if target_table is None: - raise ValueError( - f"TABLE {table_id[0]} with SCHEMA {table_id[1]} does not exists in tables data" - ) - return target_table - - def clean_up_index_statement(self, statement: Dict) -> None: - del statement["schema"] - del statement["table_name"] - - if self.output_mode != "mssql": - del statement["clustered"] - - def add_index_to_table(self, statement: Dict) -> None: - """populate 'index' key in output data""" - target_table = self.get_table_from_tables_data( - statement["schema"], statement["table_name"] - ) - self.clean_up_index_statement(statement) - target_table.index.append(statement) - - def add_alter_to_table(self, statement: Dict) -> None: - """add 'alter' statement to the table""" - target_table = self.get_table_from_tables_data( - statement["schema"], statement["alter_table_name"] - ) - - if "columns" in statement: - prepare_alter_columns(target_table, statement) - elif "columns_to_rename" in statement: - alter_rename_columns(target_table, statement) - elif "columns_to_drop" in statement: - alter_drop_columns(target_table, statement) - elif "columns_to_modify" in statement: - alter_modify_columns(target_table, statement) - elif "check" in statement: - if not target_table.alter.get("checks"): - target_table.alter["checks"] = [] - statement["check"]["statement"] = " ".join(statement["check"]["statement"]) - target_table.alter["checks"].append(statement["check"]) - elif "unique" in statement: - target_table = set_alter_to_table_data("unique", statement, target_table) - target_table = set_unique_columns_from_alter(statement, target_table) - elif "default" in statement: - target_table = set_alter_to_table_data("default", statement, target_table) - target_table = set_default_columns_from_alter(statement, target_table) - elif "primary_key" in statement: - target_table = set_alter_to_table_data( - "primary_key", statement, target_table - ) - - def process_statement_data(self, statement_data: Dict) -> Dict: - """process tables, types, sequence and etc. data""" - - if statement_data.get("table_name"): - # mean we have table - print(statement_data, "statement_data") - statement_data["output_mode"] = self.output_mode - table_data = TableData.init(**statement_data) - self.tables_dict[ - get_table_id( - schema_name=table_data.schema, - table_name=table_data.table_name, - ) - ] = table_data - data = table_data.to_dict() - else: - data = statement_data - d.dialects_clean_up(self.output_mode, data) - return data - - def process_alter_and_index_result(self, table: Dict): - if table.get("index_name"): - self.add_index_to_table(table) - - elif table.get("alter_table_name"): - self.add_alter_to_table(table) - - def group_by_type_result(self) -> None: - result_as_dict = { - "tables": [], - "types": [], - "sequences": [], - "domains": [], - "schemas": [], - "ddl_properties": [], - "comments": [], - } - keys_map = { - "table_name": "tables", - "sequence_name": "sequences", - "type_name": "types", - "domain_name": "domains", - "schema_name": "schemas", - "tablespace_name": "tablespaces", - "database_name": "databases", - "value": "ddl_properties", - "comments": "comments", - } - for item in self.final_result: - for key in keys_map: - if key in item: - _type = result_as_dict.get(keys_map.get(key)) - if _type is None: - result_as_dict[keys_map.get(key)] = [] - _type = result_as_dict[keys_map.get(key)] - if key != "comments": - _type.append(item) - else: - _type.extend(item["comments"]) - break - if result_as_dict["comments"] == []: - del result_as_dict["comments"] - - self.final_result = result_as_dict - - def format(self) -> List[Dict]: - for statement in self.parser_output: - # process each item in parser output - if "index_name" in statement or "alter_table_name" in statement: - self.process_alter_and_index_result(statement) - else: - # process tables, types, sequence and etc. data - statement_data = self.process_statement_data(statement) - self.final_result.append(statement_data) - if self.group_by_type: - self.group_by_type_result() - return self.final_result - - -def create_alter_column_references( - index: int, column: Dict, ref_statement: Dict -) -> Dict: - """create alter column metadata""" - column_reference = ref_statement["columns"][index] - alter_column = { - "name": column["name"], - "constraint_name": column.get("constraint_name"), - } - alter_column["references"] = deepcopy(ref_statement) - alter_column["references"]["column"] = column_reference - del alter_column["references"]["columns"] - return alter_column - - -def get_normalized_table_columns_names(target_table: dict) -> List[str]: - return [normalize_name(column["name"]) for column in target_table.columns] - - -def prepare_alter_columns(target_table: Dict, statement: Dict) -> Dict: - """prepare alters column metadata""" - alter_columns = [] - for num, column in enumerate(statement["columns"]): - if statement.get("references"): - alter_columns.append( - create_alter_column_references(num, column, statement["references"]) - ) - else: - # mean we need to add - alter_columns.append(column) - if not target_table.alter.get("columns"): - target_table.alter["columns"] = alter_columns - else: - target_table.alter["columns"].extend(alter_columns) - - table_columns = get_normalized_table_columns_names(target_table) - # add columns from 'alter add' - for column in target_table.alter["columns"]: - if normalize_name(column["name"]) not in table_columns: - target_table.columns.append(column) - return target_table - - -def set_default_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: - for column in target_table.columns: - if statement["default"]["columns"]: - for column_name in statement["default"]["columns"]: - if column["name"] == column_name: - column["default"] = statement["default"]["value"] - return target_table - - -def set_unique_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: - for column in target_table.columns: - for column_name in statement["unique"]["columns"]: - if column["name"] == column_name: - column["unique"] = True - return target_table - - -def alter_modify_columns(target_table, statement) -> None: - if not target_table.alter.get("modified_columns"): - target_table.alter["modified_columns"] = [] - - for modified_column in statement["columns_to_modify"]: - index = None - for num, column in enumerate(target_table.columns): - if normalize_name(modified_column["name"]) == normalize_name( - column["name"] - ): - index = num - break - if index is not None: - target_table.alter["modified_columns"] = target_table.columns[index] - target_table.columns[index] = modified_column - - -def alter_drop_columns(target_table, statement) -> None: - if not target_table.alter.get("dropped_columns"): - target_table.alter["dropped_columns"] = [] - for column_to_drop in statement["columns_to_drop"]: - index = None - for num, column in enumerate(target_table.columns): - if normalize_name(column_to_drop) == normalize_name(column["name"]): - index = num - break - if index is not None: - target_table.alter["dropped_columns"] = target_table.columns[index] - del target_table.columns[index] - - -def alter_rename_columns(target_table, statement) -> None: - for renamed_column in statement["columns_to_rename"]: - for column in target_table.columns: - if normalize_name(renamed_column["from"]) == normalize_name(column["name"]): - column["name"] = renamed_column["to"] - break - - if not target_table.alter.get("renamed_columns"): - target_table.alter["renamed_columns"] = [] - - target_table.alter["renamed_columns"].extend(statement["columns_to_rename"]) - - -def set_alter_to_table_data(key: str, statement: Dict, target_table: Dict) -> Dict: - if not target_table.alter.get(key + "s"): - target_table.alter[key + "s"] = [] - if "using" in statement: - statement[key]["using"] = statement["using"] - target_table.alter[key + "s"].append(statement[key]) - return target_table - - -def dump_data_to_file(table_name: str, dump_path: str, data: List[Dict]) -> None: - """method to dump json schema""" - if not os.path.isdir(dump_path): - os.makedirs(dump_path, exist_ok=True) - with open("{}/{}_schema.json".format(dump_path, table_name), "w+") as schema_file: - json.dump(data, schema_file, indent=1) diff --git a/simple_ddl_parser/output/core.py b/simple_ddl_parser/output/core.py new file mode 100644 index 0000000..3595f70 --- /dev/null +++ b/simple_ddl_parser/output/core.py @@ -0,0 +1,235 @@ +import json +import logging +import os +from typing import Dict, List + +from simple_ddl_parser.output.dialects import dialects_clean_up +from simple_ddl_parser.output.table_data import TableData +from simple_ddl_parser.utils import get_table_id, normalize_name + +logger = logging.getLogger("simple_ddl_parser") + + +class Output: + """class implements logic to format final output after parser""" + + def __init__( + self, parser_output: List[Dict], output_mode: str, group_by_type: bool + ) -> None: + self.output_mode = output_mode + self.group_by_type = group_by_type + self.parser_output = parser_output + + self.final_result = [] + self.tables_dict = {} + + def get_table_from_tables_data(self, schema: str, table_name: str) -> Dict: + """get table by name and schema or rise exception""" + + table_id = get_table_id(schema, table_name) + target_table = self.tables_dict.get(table_id) + if target_table is None: + raise ValueError( + f"TABLE {table_id[0]} with SCHEMA {table_id[1]} does not exists in tables data" + ) + return target_table + + def clean_up_index_statement(self, statement: Dict) -> None: + del statement["schema"] + del statement["table_name"] + + if self.output_mode != "mssql": + del statement["clustered"] + + def add_index_to_table(self, statement: Dict) -> None: + """populate 'index' key in output data""" + target_table = self.get_table_from_tables_data( + statement["schema"], statement["table_name"] + ) + self.clean_up_index_statement(statement) + target_table.index.append(statement) + + def add_alter_to_table(self, statement: Dict) -> None: + """add 'alter' statement to the table""" + target_table = self.get_table_from_tables_data( + statement["schema"], statement["alter_table_name"] + ) + + if "columns" in statement: + target_table.prepare_alter_columns(statement) + elif "columns_to_rename" in statement: + alter_rename_columns(target_table, statement) + elif "columns_to_drop" in statement: + alter_drop_columns(target_table, statement) + elif "columns_to_modify" in statement: + alter_modify_columns(target_table, statement) + elif "check" in statement: + if not target_table.alter.get("checks"): + target_table.alter["checks"] = [] + statement["check"]["statement"] = " ".join(statement["check"]["statement"]) + target_table.alter["checks"].append(statement["check"]) + elif "unique" in statement: + target_table = set_alter_to_table_data("unique", statement, target_table) + target_table = set_unique_columns_from_alter(statement, target_table) + elif "default" in statement: + target_table = set_alter_to_table_data("default", statement, target_table) + target_table = set_default_columns_from_alter(statement, target_table) + elif "primary_key" in statement: + target_table = set_alter_to_table_data( + "primary_key", statement, target_table + ) + + def process_statement_data(self, statement_data: Dict) -> Dict: + """process tables, types, sequence and etc. data""" + + if statement_data.get("table_name"): + # mean we have table + statement_data["output_mode"] = self.output_mode + table_data = TableData.init(**statement_data) + self.tables_dict[ + get_table_id( + schema_name=table_data.schema, + table_name=table_data.table_name, + ) + ] = table_data + data = table_data.to_dict() + else: + data = statement_data + dialects_clean_up(self.output_mode, data) + return data + + def process_alter_and_index_result(self, table: Dict): + if table.get("index_name"): + self.add_index_to_table(table) + + elif table.get("alter_table_name"): + self.add_alter_to_table(table) + + def group_by_type_result(self) -> None: + result_as_dict = { + "tables": [], + "types": [], + "sequences": [], + "domains": [], + "schemas": [], + "ddl_properties": [], + "comments": [], + } + keys_map = { + "table_name": "tables", + "sequence_name": "sequences", + "type_name": "types", + "domain_name": "domains", + "schema_name": "schemas", + "tablespace_name": "tablespaces", + "database_name": "databases", + "value": "ddl_properties", + "comments": "comments", + } + for item in self.final_result: + for key in keys_map: + if key in item: + _type = result_as_dict.get(keys_map.get(key)) + if _type is None: + result_as_dict[keys_map.get(key)] = [] + _type = result_as_dict[keys_map.get(key)] + if key != "comments": + _type.append(item) + else: + _type.extend(item["comments"]) + break + if result_as_dict["comments"] == []: + del result_as_dict["comments"] + + self.final_result = result_as_dict + + def format(self) -> List[Dict]: + for statement in self.parser_output: + # process each item in parser output + if "index_name" in statement or "alter_table_name" in statement: + self.process_alter_and_index_result(statement) + else: + # process tables, types, sequence and etc. data + statement_data = self.process_statement_data(statement) + self.final_result.append(statement_data) + if self.group_by_type: + self.group_by_type_result() + return self.final_result + + +def set_default_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: + for column in target_table.columns: + if statement["default"]["columns"]: + for column_name in statement["default"]["columns"]: + if column["name"] == column_name: + column["default"] = statement["default"]["value"] + return target_table + + +def set_unique_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: + for column in target_table.columns: + for column_name in statement["unique"]["columns"]: + if column["name"] == column_name: + column["unique"] = True + return target_table + + +def alter_modify_columns(target_table, statement) -> None: + if not target_table.alter.get("modified_columns"): + target_table.alter["modified_columns"] = [] + + for modified_column in statement["columns_to_modify"]: + index = None + for num, column in enumerate(target_table.columns): + if normalize_name(modified_column["name"]) == normalize_name( + column["name"] + ): + index = num + break + if index is not None: + target_table.alter["modified_columns"] = target_table.columns[index] + target_table.columns[index] = modified_column + + +def alter_drop_columns(target_table, statement) -> None: + if not target_table.alter.get("dropped_columns"): + target_table.alter["dropped_columns"] = [] + for column_to_drop in statement["columns_to_drop"]: + index = None + for num, column in enumerate(target_table.columns): + if normalize_name(column_to_drop) == normalize_name(column["name"]): + index = num + break + if index is not None: + target_table.alter["dropped_columns"] = target_table.columns[index] + del target_table.columns[index] + + +def alter_rename_columns(target_table, statement) -> None: + for renamed_column in statement["columns_to_rename"]: + for column in target_table.columns: + if normalize_name(renamed_column["from"]) == normalize_name(column["name"]): + column["name"] = renamed_column["to"] + break + + if not target_table.alter.get("renamed_columns"): + target_table.alter["renamed_columns"] = [] + + target_table.alter["renamed_columns"].extend(statement["columns_to_rename"]) + + +def set_alter_to_table_data(key: str, statement: Dict, target_table: Dict) -> Dict: + if not target_table.alter.get(key + "s"): + target_table.alter[key + "s"] = [] + if "using" in statement: + statement[key]["using"] = statement["using"] + target_table.alter[key + "s"].append(statement[key]) + return target_table + + +def dump_data_to_file(table_name: str, dump_path: str, data: List[Dict]) -> None: + """method to dump json schema""" + if not os.path.isdir(dump_path): + os.makedirs(dump_path, exist_ok=True) + with open("{}/{}_schema.json".format(dump_path, table_name), "w+") as schema_file: + json.dump(data, schema_file, indent=1) diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index baf4b33..e462ba4 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -1,99 +1,280 @@ -from typing import Dict, List +from dataclasses import Field, dataclass, field +from typing import Dict, List, Optional -hql_clean_up_list = ["deferrable_initially"] +def update_bigquery_output(statement: dict) -> dict: + if statement.get("schema") or statement.get("sequences"): + statement["dataset"] = statement["schema"] + del statement["schema"] + return statement -sql_clean_up_list = [ - "external", - "external", - "stored_as", - "row_format", - "lines_terminated_by", - "fields_terminated_by", - "collection_items_terminated_by", - "map_keys_terminated_by", -] - -def add_additional_hql_keys(table_data) -> Dict: - table_data.if_not_exist_update( - { - "stored_as": None, - "row_format": None, - "fields_terminated_by": None, - "lines_terminated_by": None, - "fields_terminated_by": None, - "map_keys_terminated_by": None, - "collection_items_terminated_by": None, - "external": table_data.get("external", False), - } - ) +def add_additional_snowflake_keys(table_data: Dict) -> Dict: + table_data.if_not_exist_update({"clone": None, "primary_key_enforced": None}) return table_data -def add_additional_oracle_keys(table_data: Dict) -> Dict: +def add_additional_mssql_keys(table_data: Dict) -> Dict: table_data.if_not_exist_update( { "constraints": {"uniques": None, "checks": None, "references": None}, - "storage": None, } ) return table_data -def update_bigquery_output(table_data: Dict) -> Dict: - if table_data.get("schema") or table_data.get("sequences"): - table_data["dataset"] = table_data["schema"] - del table_data["schema"] +def clean_up_output(table_data: Dict, key_list: List[str]) -> Dict: + for key in key_list: + if key in table_data: + del table_data[key] return table_data -def add_additional_snowflake_keys(table_data: Dict) -> Dict: - table_data.if_not_exist_update({"clone": None, "primary_key_enforced": None}) +def dialects_clean_up(output_mode: str, table_data) -> Dict: + print(output_mode) + update_mappers_for_table_properties = {"bigquery": update_bigquery_output} + update_table_prop = update_mappers_for_table_properties.get(output_mode) + if update_table_prop: + table_data = update_table_prop(table_data) + return table_data -def add_additional_oracle_keys_in_column(column_data: Dict) -> Dict: - column_data.if_not_exist_update({"encrypt": None}) - return column_data +def dialect(name: Optional[str] = None, names: Optional[List] = None): + output_modes = {"output_modes": []} + if name: + output_modes["output_modes"].append(name) + if names: + output_modes["output_modes"].extend(names) + def wrapper(cls): + cls.__d_name__ = name + for key, value in cls.__dict__.items(): + if isinstance(value, Field): + metadata = value.metadata.copy() + if "output_modes" in metadata: + metadata["output_modes"].extend(output_modes["output_modes"]) + else: + metadata.update(output_modes) + value.metadata = metadata + setattr(cls, key, value) + return cls -def add_additional_snowflake_keys_in_column(column_data: Dict) -> Dict: - return column_data + return wrapper -def add_additional_mssql_keys(table_data: Dict) -> Dict: - table_data.if_not_exist_update( - { - "constraints": {"uniques": None, "checks": None, "references": None}, - } +class DialectMeta(type): + def __call__(cls, *args, **kwargs): + output_mode = kwargs.get("output_mode") + kwargs["dialect"] = dialect_by_name.get(output_mode) + return super().__call__(*args, **kwargs) + + +class Dialect(metaclass=DialectMeta): + + """abstract class to implement Dialect""" + + def post_process(self) -> None: + pass + + +@dataclass +@dialect(name="redshift") +class Redshift(Dialect): + sortkey: Optional[dict] = field( + default_factory=lambda: {"type": None, "keys": []}, + ) + diststyle: Optional[str] = field( + default=None, + ) + distkey: Optional[str] = field( + default=None, + ) + encode: Optional[str] = field( + default=None, ) - return table_data + def add_additional_keys_in_column_redshift(self, column_data: Dict) -> Dict: + column_data["encode"] = column_data.get("encode", None) + if column_data.get("distkey"): + self.distkey = column_data["name"] + del column_data["distkey"] + return column_data -def clean_up_output(table_data: Dict, key_list: List[str]) -> Dict: - for key in key_list: - if key in table_data: - del table_data[key] - return table_data + def post_process(self) -> None: + for column in self.columns: + column = self.add_additional_keys_in_column_redshift(column) + if self.encode: + column["encode"] = column["encode"] or self.encode -def key_cleaning(table_data: Dict, output_mode: str) -> Dict: - if output_mode != "hql": - table_data = clean_up_output(table_data, sql_clean_up_list) - else: - table_data = clean_up_output(table_data, hql_clean_up_list) - # todo: need to figure out how workaround it normally - if "_ddl_parser_comma_only_str" == table_data.get("fields_terminated_by"): - table_data["fields_terminated_by"] = "','" - return table_data +@dataclass +@dialect(name="spark_sql") +class SparkSQL(Dialect): + pass -def dialects_clean_up(output_mode: str, table_data) -> Dict: - key_cleaning(table_data, output_mode) - update_mappers_for_table_properties = {"bigquery": update_bigquery_output} - update_table_prop = update_mappers_for_table_properties.get(output_mode) - if update_table_prop: - table_data = update_table_prop(table_data) +@dataclass +@dialect(name="mysql") +class MySSQL(Dialect): + pass - return table_data + +@dataclass +@dialect(name="bigquery") +class BigQuery(Dialect): + dataset: Optional[str] = field(default=False) + + def post_process(self) -> None: + self.dataset = self.schema + self.__dataclass_fields__["schema"].metadata = {"exclude_always": True} + return super().post_process() + + +@dataclass +@dialect(name="mssql") +class MSSQL(Dialect): + pass + + +@dataclass +@dialect(name="databrics") +class Databrics(Dialect): + property_key: Optional[str] = field(default=None) + + +@dataclass +@dialect(name="sqlite") +class Sqlite(Dialect): + pass + + +@dataclass +@dialect(name="vertics") +class Vertica(Dialect): + pass + + +@dataclass +@dialect(name="ibm_db2") +class IbmDB2(Dialect): + pass + + +@dataclass +@dialect(name="postgres") +class PostgreSQL(Dialect): + # todo: https://www.postgresql.org/docs/current/sql-createtable.html + partition_by: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + inherits: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + + +@dataclass +@dialect(name="oracle") +class Oracle(Dialect): + def post_process(self) -> None: + for column in self.get("columns", []): + column = self.add_additional_oracle_keys_in_column(column) + + def add_additional_oracle_keys_in_column(column_data: Dict) -> Dict: + column_data.if_not_exist_update({"encrypt": None}) + return column_data + + +@dataclass +@dialect(name="hql") +class HQL(Dialect): + external: Optional[bool] = field(default=False) + skewed_by: Optional[dict] = field( + default_factory=dict, + metadata={"exclude_if_not_provided": True}, + ) + transient: Optional[bool] = field( + default=False, metadata={"exclude_if_not_provided": True} + ) + + +@dataclass +@dialect(names=["hql", "databrics"]) +class HQLDatabrics(Dialect): + fields_terminated_by: Optional[str] = field(default=None) + lines_terminated_by: Optional[str] = field(default=None) + map_keys_terminated_by: Optional[str] = field(default=None) + collection_items_terminated_by: Optional[str] = field(default=None) + transient: Optional[bool] = field( + default=False, metadata={"exclude_if_not_provided": True} + ) + + +@dataclass +@dialect(name="snowflake") +class Snowflake(Dialect): + primary_key_enforced: Optional[bool] = field( + default=None, + ) + clone: Optional[dict] = field( + default=None, + ) + cluster_by: Optional[list] = field( + default_factory=list, + metadata={"exclude_if_not_provided": True}, + ) + with_tag: Optional[list] = field( + default_factory=list, + metadata={"exclude_if_not_provided": True}, + ) + + +dialect_by_name = { + obj.__d_name__: obj + for obj in list(globals().values()) + if isinstance(obj, DialectMeta) and obj != Dialect +} + + +def add_dialects(dialects: list[Dialect]) -> list[str]: + print([dialect.__d_name__ for dialect in dialects]) + return [dialect.__d_name__ for dialect in dialects] + + +@dataclass +class Dialects(*dialect_by_name.values()): + """base fields & mixed between dialects""" + + temp: Optional[bool] = field( + default=False, metadata={"output_modes": add_dialects([HQL, Redshift])} + ) + tblproperties: Optional[dict] = field( + default_factory=dict, + metadata={ + "exclude_if_not_provided": True, + "output_modes": add_dialects([SparkSQL, Redshift]), + }, + ) + stored_as: Optional[str] = field( + default=None, + metadata={"output_modes": add_dialects([SparkSQL, HQL, Databrics, Redshift])}, + ) + + row_format: Optional[dict] = field( + default=None, + metadata={"output_modes": add_dialects([SparkSQL, HQL, Databrics, Redshift])}, + ) + location: Optional[str] = field( + default=None, + metadata={ + "output_modes": add_dialects([HQL, SparkSQL, Snowflake, Databrics]), + "exclude_if_not_provided": True, + }, + ) + + def post_process(self) -> None: + # to override dialects post process + pass + + +dialect_by_name["sql"] = None diff --git a/simple_ddl_parser/output/table_data.py b/simple_ddl_parser/output/table_data.py new file mode 100644 index 0000000..be56cff --- /dev/null +++ b/simple_ddl_parser/output/table_data.py @@ -0,0 +1,250 @@ +from copy import deepcopy +from dataclasses import dataclass, field +from typing import Any, Dict, Hashable, List, Optional + +from simple_ddl_parser.output.dialects import Dialects +from simple_ddl_parser.utils import normalize_name + + +@dataclass +class TableData(Dialects): + """representation of table data + + exclude_if_not_provided - mean, exclude in output, if was not in data from parser + """ + + dialect: Optional[Dialects] = field(default=None, metadata={"exclude_always": True}) + # mandatory fields, should have defaults for inheritance + table_name: str = None + # final output field set - dialect + init_data: dict = field(default=None, metadata={"exclude_always": True}) + # final output field set - dialect + output_mode: str = field(default="sql", metadata={"exclude_always": True}) + # optional fields + schema: Optional[str] = None + primary_key: Optional[List[str]] = None + columns: Optional[List[dict]] = field(default_factory=list) + alter: Optional[Dict] = field(default_factory=dict) + checks: Optional[List] = field(default_factory=list) + index: Optional[List] = field(default_factory=list) + partitioned_by: Optional[List] = field(default_factory=list) + constraints: Optional[Dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} + ) + tablespace: Optional[str] = None + if_not_exists: Optional[bool] = field( + default=False, metadata={"exclude_if_not_provided": True} + ) + partition_by: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} + ) + table_properties: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_empty": True} + ) + + replace: Optional[bool] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + comment: Optional[str] = field( + default=None, + metadata={ + "exclude_if_not_provided": True, + }, + ) + like: Optional[dict] = field( + default_factory=dict, + metadata={"exclude_if_not_provided": True}, + ) + # parser-only fields -- start + unique: Optional[list] = field( + default_factory=list, metadata={"exclude_always": True} + ) + unique_statement: Optional[list] = field( + default_factory=list, metadata={"exclude_always": True} + ) + ref_columns: Optional[List[Dict]] = field( + default_factory=list, metadata={"exclude_always": True} + ) + references: Optional[List[Dict]] = field( + default_factory=list, metadata={"exclude_always": True} + ) + # parser-only fields -- end + + def get(self, value: Hashable, default: Any = None) -> Any: + return self.__dict__.get(value, default) + + def update(self, input_dict: dict) -> None: + self.__dict__.update(input_dict) + + def if_not_exist_update(self, input_dict: dict) -> None: + for key, value in input_dict.items(): + if key not in self.__dict__: + self.__dict__[key] = value + + def __iter__(self): + for x in self.__dict__: + yield x + + def __post_init__(self): + self.set_unique_columns() + self.populate_keys() + self.normalize_ref_columns_in_final_output() + if self.dialect: + self.dialect.post_process(self) + + @classmethod + def init(cls, **kwargs): + cls_fields = {field for field in cls.__dataclass_fields__} + table_main_args = {k: v for k, v in kwargs.items() if k in cls_fields} + table_properties = {k: v for k, v in kwargs.items() if k not in table_main_args} + init_data = {} + init_data.update(table_main_args) + init_data.update(table_properties) + ret = cls( + **table_main_args, table_properties=table_properties, init_data=init_data + ) + return ret + + def set_unique_columns(self) -> None: + unique_keys = ["unique_statement", "constraints"] + + for key in unique_keys: + if getattr(self, key, None): + # get column names from unique constraints & statements + self.set_column_unique_param(key) + + def set_column_unique_param(self, key: str) -> None: + for column in self.columns: + if key == "constraints": + unique = getattr(self, key, {}).get("unique", []) + if unique: + check_in = unique["columns"] + else: + check_in = [] + else: + check_in = getattr(self, key, {}) + if column["name"] in check_in: + column["unique"] = True + + def normalize_ref_columns_in_final_output(self): + for col_ref in self.ref_columns: + name = col_ref["name"] + for column in self.columns: + if name == column["name"]: + del col_ref["name"] + column["references"] = col_ref + + def populate_keys(self) -> None: + """primary_key - list of column names, example: "primary_key": ["data_sync_id", "sync_start"],""" + + if not self.primary_key: + self.get_pk_from_columns_and_constraints() + else: + self.remove_pk_from_columns() + + if self.unique: + self.add_unique_columns() + + for column in self.columns: + if column["name"] in self.primary_key: + column["nullable"] = False + + def remove_pk_from_columns(self) -> None: + for column in self.columns: + del column["primary_key"] + + def get_pk_from_columns_and_constraints(self) -> None: + pk = [] + for column in self.columns: + if column["primary_key"]: + pk.append(column["name"]) + del column["primary_key"] + if self.constraints.get("primary_keys"): + for key_constraints in self.constraints["primary_keys"]: + pk.extend(key_constraints["columns"]) + + self.primary_key = pk + + def add_unique_columns(self) -> None: + for column in self.columns: + if column["name"] in self.unique: + column["unique"] = True + + def filter_out_output(self, field: str) -> bool: + cls_fields = self.__dataclass_fields__.items() + exclude_always_keys = set() + exclude_if_not_provided = set() + exclude_if_empty = set() + exclude_by_dialect_filter = set() + + for key, value in cls_fields: + if value.metadata.get("exclude_always") is True: + exclude_always_keys.add(key) + else: + if value.metadata.get("exclude_if_not_provided") is True: + exclude_if_not_provided.add(key) + if value.metadata.get("exclude_if_empty") is True: + exclude_if_empty.add(key) + if isinstance( + value.metadata.get("output_modes"), list + ) and self.output_mode not in value.metadata.get("output_modes"): + exclude_by_dialect_filter.add(key) + if field in exclude_always_keys: + return False + if field in exclude_if_not_provided and field not in self.init_data: + return False + if field in exclude_if_empty and not self.get(field): + return False + if field in exclude_by_dialect_filter: + return False + return True + + def to_dict(self): + output = {} + for key, value in self.__dict__.items(): + if self.filter_out_output(key) is True: + output[key] = value + return output + + +def prepare_alter_columns(self, statement: Dict) -> None: + """prepare alters column metadata""" + alter_columns = [] + for num, column in enumerate(statement["columns"]): + if statement.get("references"): + alter_columns.append( + self.create_alter_column_references( + num, column, statement["references"] + ) + ) + else: + # mean we need to add + alter_columns.append(column) + if not self.alter.get("columns"): + self.alter["columns"] = alter_columns + else: + self.alter["columns"].extend(alter_columns) + + table_columns = self.get_normalized_table_columns_names() + # add columns from 'alter add' + for column in self.alter["columns"]: + if normalize_name(column["name"]) not in table_columns: + self.columns.append(column) + + def get_normalized_table_columns_names(self) -> List[str]: + return [normalize_name(column["name"]) for column in self.columns] + + @staticmethod + def create_alter_column_references( + index: int, column: Dict, ref_statement: Dict + ) -> Dict: + """create alter column metadata""" + column_reference = ref_statement["columns"][index] + alter_column = { + "name": column["name"], + "constraint_name": column.get("constraint_name"), + } + alter_column["references"] = deepcopy(ref_statement) + alter_column["references"]["column"] = column_reference + del alter_column["references"]["columns"] + return alter_column diff --git a/simple_ddl_parser/parser.py b/simple_ddl_parser/parser.py index b78bd20..e9c2d09 100755 --- a/simple_ddl_parser/parser.py +++ b/simple_ddl_parser/parser.py @@ -6,7 +6,8 @@ from ply import lex, yacc -from simple_ddl_parser.output.common import Output, dump_data_to_file, output_modes +from simple_ddl_parser.output.core import Output, dump_data_to_file +from simple_ddl_parser.output.dialects import dialect_by_name from simple_ddl_parser.utils import ( SimpleDDLParserException, find_first_unpair_closed_par, @@ -342,9 +343,9 @@ def run( and each dict will contain list of parsed entities. Without it output is a List with Dicts where each Dict == one entity from ddl - one table or sequence or type. """ - if output_mode not in output_modes: + if output_mode not in dialect_by_name: raise SimpleDDLParserException( - f"Output mode can be one of possible variants: {output_modes}" + f"Output mode can be one of possible variants: {dialect_by_name.keys()}" ) self.tables = self.parse_data() self.tables = Output( diff --git a/tests/dialects/test_hql_output_mode.py b/tests/dialects/test_hql.py similarity index 99% rename from tests/dialects/test_hql_output_mode.py rename to tests/dialects/test_hql.py index 8fb99e9..0c0adbd 100644 --- a/tests/dialects/test_hql_output_mode.py +++ b/tests/dialects/test_hql.py @@ -138,7 +138,7 @@ def test_partitioned_by_hql_output_mode_hql(): "schema": "database", "table_name": "table_name", "tablespace": None, - "location": None, + "temp": False, "row_format": None, "fields_terminated_by": None, "collection_items_terminated_by": None, @@ -249,7 +249,6 @@ def test_partitioned_by_hql_output_mode_hql(): "stored_as": None, "table_name": "table_name2", "tablespace": None, - "location": None, "row_format": None, "fields_terminated_by": None, "collection_items_terminated_by": None, @@ -384,7 +383,6 @@ def test_stored_as_hql_showed(): "table_name": "table_name", "tablespace": None, "stored_as": "PARQUET", - "location": None, "row_format": None, "fields_terminated_by": None, "collection_items_terminated_by": None, @@ -730,7 +728,6 @@ def test_hql_row_format(): "index": [], "partitioned_by": [], "stored_as": "TEXTFILE", - "location": None, "external": False, "schema": "default", "table_name": "salesorderdetail", @@ -810,7 +807,6 @@ def test_fields_terminated_by_hql(): "index": [], "partitioned_by": [], "stored_as": "TEXTFILE", - "location": None, "row_format": "DELIMITED", "fields_terminated_by": "','", "external": False, @@ -891,7 +887,6 @@ def test_collection_items_terminated_by_hql(): "index": [], "partitioned_by": [], "stored_as": "TEXTFILE", - "location": None, "row_format": "DELIMITED", "fields_terminated_by": "'\\002'", "external": False, @@ -974,7 +969,6 @@ def test_map_keys_terminated_by_hql(): "index": [], "partitioned_by": [], "stored_as": "TEXTFILE", - "location": None, "row_format": "DELIMITED", "fields_terminated_by": "','", "external": False, @@ -1019,7 +1013,6 @@ def simple_structure_type_support(): "external": False, "fields_terminated_by": None, "index": [], - "location": None, "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], @@ -1854,7 +1847,6 @@ def test_skewed_by(): "partitioned_by": [], "tablespace": None, "stored_as": "DIRECTORIES", - "location": None, "row_format": None, "fields_terminated_by": None, "lines_terminated_by": None, @@ -2193,7 +2185,6 @@ def test_multiple_serde_options(): "fields_terminated_by": None, "index": [], "lines_terminated_by": None, - "location": None, "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], diff --git a/tests/non_statement_tests/test_args.py b/tests/non_statement_tests/test_args.py index c3c9660..49199fd 100644 --- a/tests/non_statement_tests/test_args.py +++ b/tests/non_statement_tests/test_args.py @@ -14,13 +14,11 @@ def test_json_dump_arg(): '"unique": false, "nullable": true, "default": null, "check": null}, {"name": "value", ' '"type": "STRING", "size": null, "references": null, "unique": false, "nullable": true, ' '"default": null, "check": null}], "primary_key": [], "alter": {}, "checks": [], "index": [], ' - '"partitioned_by": [], "tablespace": null, "stored_as": "DIRECTORIES", "location": null, "comment":' - ' null, "row_format": null, "fields_terminated_by": null, "lines_terminated_by": null,' + '"partitioned_by": [], "tablespace": null, "stored_as": "DIRECTORIES", ' + '"row_format": null, "fields_terminated_by": null, "lines_terminated_by": null,' ' "map_keys_terminated_by": null, "collection_items_terminated_by": null, "external": false,' - ' "schema": null, "table_name": "list_bucket_single", ' + ' "schema": null, "table_name": "list_bucket_single", "temp": false,' '"skewed_by": {"key": "key", "on": ["1", "5", "6"]}}]' ) expected = json.loads(expected) - print(json.loads(parse_results)) - print(expected) assert json.loads(parse_results) == expected diff --git a/tests/non_statement_tests/test_common.py b/tests/non_statement_tests/test_common.py index bff4794..29b66c5 100644 --- a/tests/non_statement_tests/test_common.py +++ b/tests/non_statement_tests/test_common.py @@ -219,6 +219,7 @@ def test_parsing_go_and_use_correctly(): { "alter": {}, "checks": [], + "temp": False, "collection_items_terminated_by": None, "columns": [ { @@ -236,7 +237,6 @@ def test_parsing_go_and_use_correctly(): "fields_terminated_by": None, "index": [], "lines_terminated_by": None, - "location": None, "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], diff --git a/tests/test_simple_ddl_parser.py b/tests/test_simple_ddl_parser.py index 9d5fa2f..98a9f4d 100644 --- a/tests/test_simple_ddl_parser.py +++ b/tests/test_simple_ddl_parser.py @@ -818,7 +818,7 @@ def test_like_statement(): "checks": [], "columns": [], "index": [], - "clone": {"schema": None, "table_name": "Old_Users"}, + "like": {"schema": None, "table_name": "Old_Users"}, "partitioned_by": [], "primary_key": [], "schema": None, @@ -1902,7 +1902,7 @@ def test_quotes(): `partition` STRING, ); """ - parse_result = DDLParser(ddl).run(output_mode="hql") + parse_result = DDLParser(ddl).run() expected = [ { "columns": [ @@ -1933,14 +1933,6 @@ def test_quotes(): "index": [], "partitioned_by": [], "tablespace": None, - "stored_as": None, - "location": None, - "row_format": None, - "fields_terminated_by": None, - "lines_terminated_by": None, - "map_keys_terminated_by": None, - "collection_items_terminated_by": None, - "external": False, "schema": "`shema`", "table_name": "table", "if_not_exists": True, @@ -1966,6 +1958,7 @@ def test_escaping_symbols_normal_str(): { "alter": {}, "checks": [], + "temp": False, "collection_items_terminated_by": None, "columns": [ { @@ -2017,6 +2010,7 @@ def test_escaping_symbols_raw_string(): { "alter": {}, "checks": [], + "temp": False, "collection_items_terminated_by": None, "columns": [ { @@ -2332,7 +2326,7 @@ def test_create_empty_table(): CREATE TABLE "material_attachments" """ - result = DDLParser(ddl).run(group_by_type=True, output_mode="hql") + result = DDLParser(ddl).run(group_by_type=True) expected = { "ddl_properties": [], @@ -2343,19 +2337,11 @@ def test_create_empty_table(): { "alter": {}, "checks": [], - "collection_items_terminated_by": None, "columns": [], - "external": False, - "fields_terminated_by": None, "index": [], - "lines_terminated_by": None, - "location": None, - "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], - "row_format": None, "schema": None, - "stored_as": None, "table_name": '"material_attachments"', "tablespace": None, } @@ -2372,7 +2358,7 @@ def test_table_name_reserved_word_after_dot(): create table foo.index (col1 int); """ - result = DDLParser(ddl).run(group_by_type=True, output_mode="hql") + result = DDLParser(ddl).run(group_by_type=True) expected = { "ddl_properties": [], "domains": [], @@ -2382,7 +2368,6 @@ def test_table_name_reserved_word_after_dot(): { "alter": {}, "checks": [], - "collection_items_terminated_by": None, "columns": [ { "check": None, @@ -2395,24 +2380,16 @@ def test_table_name_reserved_word_after_dot(): "unique": False, } ], - "external": False, - "fields_terminated_by": None, "index": [], - "lines_terminated_by": None, - "location": None, - "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], - "row_format": None, "schema": None, - "stored_as": None, "table_name": "index", "tablespace": None, }, { "alter": {}, "checks": [], - "collection_items_terminated_by": None, "columns": [ { "check": None, @@ -2425,24 +2402,16 @@ def test_table_name_reserved_word_after_dot(): "unique": False, } ], - "external": False, - "fields_terminated_by": None, "index": [], - "lines_terminated_by": None, - "location": None, - "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], - "row_format": None, "schema": "foo", - "stored_as": None, "table_name": "[index]", "tablespace": None, }, { "alter": {}, "checks": [], - "collection_items_terminated_by": None, "columns": [ { "check": None, @@ -2455,17 +2424,10 @@ def test_table_name_reserved_word_after_dot(): "unique": False, } ], - "external": False, - "fields_terminated_by": None, "index": [], - "lines_terminated_by": None, - "location": None, - "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], - "row_format": None, "schema": "foo", - "stored_as": None, "table_name": "index", "tablespace": None, }, @@ -2679,7 +2641,6 @@ def test_increment_column(): "unique": False, }, ], - "constraints": {"checks": None, "references": None, "uniques": None}, "index": [], "partitioned_by": [], "primary_key": ["user_id"], @@ -2699,7 +2660,7 @@ def test_increment_column(): ); """ - result = DDLParser(ddl).run(output_mode="mysql") + result = DDLParser(ddl).run() assert expected == result @@ -2714,7 +2675,6 @@ def test_replace_with_id(): { "alter": {}, "checks": [], - "collection_items_terminated_by": None, "columns": [ { "check": None, @@ -2727,26 +2687,17 @@ def test_replace_with_id(): "unique": False, } ], - "external": False, - "fields_terminated_by": None, "index": [], - "lines_terminated_by": None, - "location": None, - "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], "replace": True, - "row_format": None, "schema": None, - "stored_as": None, "table_name": "someTable", "tablespace": None, - "transient": True, }, { "alter": {}, "checks": [], - "collection_items_terminated_by": None, "columns": [ { "check": None, @@ -2759,21 +2710,13 @@ def test_replace_with_id(): "unique": False, } ], - "external": False, - "fields_terminated_by": None, "index": [], - "lines_terminated_by": None, - "location": None, - "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], "replace": True, - "row_format": None, "schema": None, - "stored_as": None, "table_name": "someTable", "tablespace": None, - "temp": True, }, ], "types": [], @@ -2787,7 +2730,7 @@ def test_replace_with_id(): ); """ - result = DDLParser(ddl).run(group_by_type=True, output_mode="hql") + result = DDLParser(ddl).run(group_by_type=True) assert expected == result From 5d5eb453c0bcf1c2bc86767909f3e3050a159567 Mon Sep 17 00:00:00 2001 From: xnuinside Date: Tue, 9 Jan 2024 01:51:44 +0300 Subject: [PATCH 05/12] oracle & postgresql dialect --- simple_ddl_parser/output/base_data.py | 239 ++++++++++++++++++++ simple_ddl_parser/output/dialects.py | 109 ++++----- simple_ddl_parser/output/table_data.py | 274 ++++------------------- tests/dialects/test_oracle.py | 34 ++- tests/dialects/test_psql.py | 2 +- tests/dialects/test_redshift_dialect.py | 16 ++ tests/dialects/test_snowflake.py | 12 + tests/dialects/test_spark_sql.py | 4 + tests/non_statement_tests/test_common.py | 2 +- tests/test_simple_ddl_parser.py | 24 +- 10 files changed, 410 insertions(+), 306 deletions(-) create mode 100644 simple_ddl_parser/output/base_data.py diff --git a/simple_ddl_parser/output/base_data.py b/simple_ddl_parser/output/base_data.py new file mode 100644 index 0000000..dfa857e --- /dev/null +++ b/simple_ddl_parser/output/base_data.py @@ -0,0 +1,239 @@ +from copy import deepcopy +from dataclasses import dataclass, field +from typing import Any, Dict, Hashable, List, Optional + +from simple_ddl_parser.utils import normalize_name + + +@dataclass +class BaseData: + """representation of base sql table data + + exclude_if_not_provided - mean, exclude in output, if was not in data from parser + """ + + __d_name__ = "sql" + + # mandatory fields, should have defaults for inheritance + table_name: str = None + # final output field set - dialect + init_data: dict = field(default=None, metadata={"exclude_always": True}) + # final output field set - dialect + output_mode: str = field(default="sql", metadata={"exclude_always": True}) + # optional fields + schema: Optional[str] = field(default=None) + primary_key: Optional[List[str]] = field(default=None) + columns: Optional[List[dict]] = field(default_factory=list) + alter: Optional[Dict] = field(default_factory=dict) + checks: Optional[List] = field(default_factory=list) + index: Optional[List] = field(default_factory=list) + partitioned_by: Optional[List] = field(default_factory=list) + constraints: Optional[Dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} + ) + tablespace: Optional[str] = None + if_not_exists: Optional[bool] = field( + default=False, metadata={"exclude_if_not_provided": True} + ) + partition_by: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} + ) + table_properties: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_empty": True} + ) + + replace: Optional[bool] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + comment: Optional[str] = field( + default=None, + metadata={ + "exclude_if_not_provided": True, + }, + ) + like: Optional[dict] = field( + default_factory=dict, + metadata={"exclude_if_not_provided": True}, + ) + # parser-only fields -- start + unique: Optional[list] = field( + default_factory=list, metadata={"exclude_always": True} + ) + unique_statement: Optional[list] = field( + default_factory=list, metadata={"exclude_always": True} + ) + ref_columns: Optional[List[Dict]] = field( + default_factory=list, metadata={"exclude_always": True} + ) + references: Optional[List[Dict]] = field( + default_factory=list, metadata={"exclude_always": True} + ) + + # parser-only fields -- end + def post_process(self): + pass + + def get(self, value: Hashable, default: Any = None) -> Any: + return self.__dict__.get(value, default) + + def update(self, input_dict: dict) -> None: + self.__dict__.update(input_dict) + + def if_not_exist_update(self, input_dict: dict) -> None: + for key, value in input_dict.items(): + if key not in self.__dict__: + self.__dict__[key] = value + + def __iter__(self): + for x in self.__dict__: + yield x + + def __post_init__(self): + self.set_unique_columns() + self.populate_keys() + self.normalize_ref_columns_in_final_output() + self.post_process() + + def set_unique_columns(self) -> None: + unique_keys = ["unique_statement", "constraints"] + + for key in unique_keys: + if getattr(self, key, None): + # get column names from unique constraints & statements + self.set_column_unique_param(key) + + def set_column_unique_param(self, key: str) -> None: + for column in self.columns: + if key == "constraints": + unique = getattr(self, key, {}).get("unique", []) + if unique: + check_in = unique["columns"] + else: + check_in = [] + else: + check_in = getattr(self, key, {}) + if column["name"] in check_in: + column["unique"] = True + + def normalize_ref_columns_in_final_output(self): + for col_ref in self.ref_columns: + name = col_ref["name"] + for column in self.columns: + if name == column["name"]: + del col_ref["name"] + column["references"] = col_ref + + def populate_keys(self) -> None: + """primary_key - list of column names, example: "primary_key": ["data_sync_id", "sync_start"],""" + + if not self.primary_key: + self.get_pk_from_columns_and_constraints() + else: + self.remove_pk_from_columns() + + if self.unique: + self.add_unique_columns() + + for column in self.columns: + if column["name"] in self.primary_key: + column["nullable"] = False + + def remove_pk_from_columns(self) -> None: + for column in self.columns: + del column["primary_key"] + + def get_pk_from_columns_and_constraints(self) -> None: + pk = [] + for column in self.columns: + if column["primary_key"]: + pk.append(column["name"]) + del column["primary_key"] + if self.constraints.get("primary_keys"): + for key_constraints in self.constraints["primary_keys"]: + pk.extend(key_constraints["columns"]) + + self.primary_key = pk + + def add_unique_columns(self) -> None: + for column in self.columns: + if column["name"] in self.unique: + column["unique"] = True + + def filter_out_output(self, field: str) -> bool: + cls_fields = self.__dataclass_fields__.items() + exclude_always_keys = set() + exclude_if_not_provided = set() + exclude_if_empty = set() + exclude_by_dialect_filter = set() + + for key, value in cls_fields: + if value.metadata.get("exclude_always") is True: + exclude_always_keys.add(key) + else: + if value.metadata.get("exclude_if_not_provided") is True: + exclude_if_not_provided.add(key) + if value.metadata.get("exclude_if_empty") is True: + exclude_if_empty.add(key) + if isinstance( + value.metadata.get("output_modes"), list + ) and self.output_mode not in value.metadata.get("output_modes"): + exclude_by_dialect_filter.add(key) + if field in exclude_always_keys: + return False + if field in exclude_if_not_provided and field not in self.init_data: + return False + if field in exclude_if_empty and not self.get(field): + return False + if field in exclude_by_dialect_filter: + return False + return True + + def to_dict(self): + output = {} + for key, value in self.__dict__.items(): + if self.filter_out_output(key) is True: + output[key] = value + return output + + +def prepare_alter_columns(self, statement: Dict) -> None: + """prepare alters column metadata""" + alter_columns = [] + for num, column in enumerate(statement["columns"]): + if statement.get("references"): + alter_columns.append( + self.create_alter_column_references( + num, column, statement["references"] + ) + ) + else: + # mean we need to add + alter_columns.append(column) + if not self.alter.get("columns"): + self.alter["columns"] = alter_columns + else: + self.alter["columns"].extend(alter_columns) + + table_columns = self.get_normalized_table_columns_names() + # add columns from 'alter add' + for column in self.alter["columns"]: + if normalize_name(column["name"]) not in table_columns: + self.columns.append(column) + + def get_normalized_table_columns_names(self) -> List[str]: + return [normalize_name(column["name"]) for column in self.columns] + + @staticmethod + def create_alter_column_references( + index: int, column: Dict, ref_statement: Dict + ) -> Dict: + """create alter column metadata""" + column_reference = ref_statement["columns"][index] + alter_column = { + "name": column["name"], + "constraint_name": column.get("constraint_name"), + } + alter_column["references"] = deepcopy(ref_statement) + alter_column["references"]["column"] = column_reference + del alter_column["references"]["columns"] + return alter_column diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index e462ba4..7862bd3 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -1,28 +1,17 @@ from dataclasses import Field, dataclass, field -from typing import Dict, List, Optional +from typing import Callable, Dict, List, Optional + +from simple_ddl_parser.output.base_data import BaseData def update_bigquery_output(statement: dict) -> dict: if statement.get("schema") or statement.get("sequences"): statement["dataset"] = statement["schema"] + print("AAAAAAA") del statement["schema"] return statement -def add_additional_snowflake_keys(table_data: Dict) -> Dict: - table_data.if_not_exist_update({"clone": None, "primary_key_enforced": None}) - return table_data - - -def add_additional_mssql_keys(table_data: Dict) -> Dict: - table_data.if_not_exist_update( - { - "constraints": {"uniques": None, "checks": None, "references": None}, - } - ) - return table_data - - def clean_up_output(table_data: Dict, key_list: List[str]) -> Dict: for key in key_list: if key in table_data: @@ -31,7 +20,6 @@ def clean_up_output(table_data: Dict, key_list: List[str]) -> Dict: def dialects_clean_up(output_mode: str, table_data) -> Dict: - print(output_mode) update_mappers_for_table_properties = {"bigquery": update_bigquery_output} update_table_prop = update_mappers_for_table_properties.get(output_mode) if update_table_prop: @@ -40,12 +28,8 @@ def dialects_clean_up(output_mode: str, table_data) -> Dict: return table_data -def dialect(name: Optional[str] = None, names: Optional[List] = None): - output_modes = {"output_modes": []} - if name: - output_modes["output_modes"].append(name) - if names: - output_modes["output_modes"].extend(names) +def dialect(name: str) -> Callable: + new_metadata = {"output_modes": [name]} def wrapper(cls): cls.__d_name__ = name @@ -53,9 +37,9 @@ def wrapper(cls): if isinstance(value, Field): metadata = value.metadata.copy() if "output_modes" in metadata: - metadata["output_modes"].extend(output_modes["output_modes"]) + metadata["output_modes"].extend(new_metadata["output_modes"]) else: - metadata.update(output_modes) + metadata.update(new_metadata) value.metadata = metadata setattr(cls, key, value) return cls @@ -63,14 +47,7 @@ def wrapper(cls): return wrapper -class DialectMeta(type): - def __call__(cls, *args, **kwargs): - output_mode = kwargs.get("output_mode") - kwargs["dialect"] = dialect_by_name.get(output_mode) - return super().__call__(*args, **kwargs) - - -class Dialect(metaclass=DialectMeta): +class Dialect(BaseData): """abstract class to implement Dialect""" @@ -81,6 +58,7 @@ def post_process(self) -> None: @dataclass @dialect(name="redshift") class Redshift(Dialect): + # create external https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html sortkey: Optional[dict] = field( default_factory=lambda: {"type": None, "keys": []}, ) @@ -125,11 +103,6 @@ class MySSQL(Dialect): class BigQuery(Dialect): dataset: Optional[str] = field(default=False) - def post_process(self) -> None: - self.dataset = self.schema - self.__dataclass_fields__["schema"].metadata = {"exclude_always": True} - return super().post_process() - @dataclass @dialect(name="mssql") @@ -168,27 +141,36 @@ class PostgreSQL(Dialect): partition_by: Optional[str] = field( default=None, metadata={"exclude_if_not_provided": True} ) - inherits: Optional[str] = field( - default=None, metadata={"exclude_if_not_provided": True} + inherits: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} ) @dataclass @dialect(name="oracle") class Oracle(Dialect): + # https://oracle-base.com/articles/8i/index-organized-tables + + organization_index: Optional[bool] = field( + default=False, metadata={"exclude_if_not_provided": True} + ) + storage: Optional[dict] = field( + default_factory=dict, metadata={"exclude_if_not_provided": True} + ) + def post_process(self) -> None: for column in self.get("columns", []): column = self.add_additional_oracle_keys_in_column(column) + @staticmethod def add_additional_oracle_keys_in_column(column_data: Dict) -> Dict: - column_data.if_not_exist_update({"encrypt": None}) + column_data.update({"encrypt": None}) return column_data @dataclass @dialect(name="hql") class HQL(Dialect): - external: Optional[bool] = field(default=False) skewed_by: Optional[dict] = field( default_factory=dict, metadata={"exclude_if_not_provided": True}, @@ -198,21 +180,10 @@ class HQL(Dialect): ) -@dataclass -@dialect(names=["hql", "databrics"]) -class HQLDatabrics(Dialect): - fields_terminated_by: Optional[str] = field(default=None) - lines_terminated_by: Optional[str] = field(default=None) - map_keys_terminated_by: Optional[str] = field(default=None) - collection_items_terminated_by: Optional[str] = field(default=None) - transient: Optional[bool] = field( - default=False, metadata={"exclude_if_not_provided": True} - ) - - @dataclass @dialect(name="snowflake") class Snowflake(Dialect): + # create external https://docs.snowflake.com/en/sql-reference/sql/create-external-table primary_key_enforced: Optional[bool] = field( default=None, ) @@ -232,17 +203,16 @@ class Snowflake(Dialect): dialect_by_name = { obj.__d_name__: obj for obj in list(globals().values()) - if isinstance(obj, DialectMeta) and obj != Dialect + if isinstance(obj, type) and issubclass(obj, Dialect) and obj != Dialect } def add_dialects(dialects: list[Dialect]) -> list[str]: - print([dialect.__d_name__ for dialect in dialects]) return [dialect.__d_name__ for dialect in dialects] @dataclass -class Dialects(*dialect_by_name.values()): +class CommonDialectsFieldsMixin(Dialect): """base fields & mixed between dialects""" temp: Optional[bool] = field( @@ -271,10 +241,29 @@ class Dialects(*dialect_by_name.values()): "exclude_if_not_provided": True, }, ) - - def post_process(self) -> None: - # to override dialects post process - pass + fields_terminated_by: Optional[str] = field( + default=None, + metadata={"output_modes": add_dialects([HQL, Databrics])}, + ) + lines_terminated_by: Optional[str] = field( + default=None, metadata={"output_modes": add_dialects([HQL, Databrics])} + ) + map_keys_terminated_by: Optional[str] = field( + default=None, metadata={"output_modes": add_dialects([HQL, Databrics])} + ) + collection_items_terminated_by: Optional[str] = field( + default=None, metadata={"output_modes": add_dialects([HQL, Databrics])} + ) + transient: Optional[bool] = field( + default=False, + metadata={ + "output_modes": add_dialects([HQL, Databrics]), + "exclude_if_not_provided": True, + }, + ) + external: Optional[bool] = field( + default=False, metadata={"output_modes": add_dialects([HQL, Snowflake])} + ) dialect_by_name["sql"] = None diff --git a/simple_ddl_parser/output/table_data.py b/simple_ddl_parser/output/table_data.py index be56cff..c70a52a 100644 --- a/simple_ddl_parser/output/table_data.py +++ b/simple_ddl_parser/output/table_data.py @@ -1,250 +1,56 @@ -from copy import deepcopy -from dataclasses import dataclass, field -from typing import Any, Dict, Hashable, List, Optional +from dataclasses import dataclass -from simple_ddl_parser.output.dialects import Dialects -from simple_ddl_parser.utils import normalize_name +from simple_ddl_parser.output.base_data import BaseData +from simple_ddl_parser.output.dialects import CommonDialectsFieldsMixin, dialect_by_name -@dataclass -class TableData(Dialects): - """representation of table data +class TableData: + cls_prefix = "Dialect" - exclude_if_not_provided - mean, exclude in output, if was not in data from parser - """ - - dialect: Optional[Dialects] = field(default=None, metadata={"exclude_always": True}) - # mandatory fields, should have defaults for inheritance - table_name: str = None - # final output field set - dialect - init_data: dict = field(default=None, metadata={"exclude_always": True}) - # final output field set - dialect - output_mode: str = field(default="sql", metadata={"exclude_always": True}) - # optional fields - schema: Optional[str] = None - primary_key: Optional[List[str]] = None - columns: Optional[List[dict]] = field(default_factory=list) - alter: Optional[Dict] = field(default_factory=dict) - checks: Optional[List] = field(default_factory=list) - index: Optional[List] = field(default_factory=list) - partitioned_by: Optional[List] = field(default_factory=list) - constraints: Optional[Dict] = field( - default_factory=dict, metadata={"exclude_if_not_provided": True} - ) - tablespace: Optional[str] = None - if_not_exists: Optional[bool] = field( - default=False, metadata={"exclude_if_not_provided": True} - ) - partition_by: Optional[dict] = field( - default_factory=dict, metadata={"exclude_if_not_provided": True} - ) - table_properties: Optional[dict] = field( - default_factory=dict, metadata={"exclude_if_empty": True} - ) - - replace: Optional[bool] = field( - default=None, metadata={"exclude_if_not_provided": True} - ) - comment: Optional[str] = field( - default=None, - metadata={ - "exclude_if_not_provided": True, - }, - ) - like: Optional[dict] = field( - default_factory=dict, - metadata={"exclude_if_not_provided": True}, - ) - # parser-only fields -- start - unique: Optional[list] = field( - default_factory=list, metadata={"exclude_always": True} - ) - unique_statement: Optional[list] = field( - default_factory=list, metadata={"exclude_always": True} - ) - ref_columns: Optional[List[Dict]] = field( - default_factory=list, metadata={"exclude_always": True} - ) - references: Optional[List[Dict]] = field( - default_factory=list, metadata={"exclude_always": True} - ) - # parser-only fields -- end - - def get(self, value: Hashable, default: Any = None) -> Any: - return self.__dict__.get(value, default) - - def update(self, input_dict: dict) -> None: - self.__dict__.update(input_dict) - - def if_not_exist_update(self, input_dict: dict) -> None: - for key, value in input_dict.items(): - if key not in self.__dict__: - self.__dict__[key] = value - - def __iter__(self): - for x in self.__dict__: - yield x + @classmethod + def get_dialect_class(cls, kwargs: dict): + output_mode = kwargs.get("output_mode") + + if output_mode and output_mode != "sql": + main_cls = dialect_by_name.get(output_mode) + cls = dataclass( + type( + f"{main_cls.__name__}{cls.cls_prefix}", + (main_cls, CommonDialectsFieldsMixin), + {}, + ) + ) + else: + cls = BaseData - def __post_init__(self): - self.set_unique_columns() - self.populate_keys() - self.normalize_ref_columns_in_final_output() - if self.dialect: - self.dialect.post_process(self) + return cls @classmethod - def init(cls, **kwargs): - cls_fields = {field for field in cls.__dataclass_fields__} + def pre_load_mods(cls, main_cls, kwargs): + if main_cls.__d_name__ == "bigquery": + if kwargs.get("schema"): + kwargs["dataset"] = kwargs["schema"] + + cls_fields = {field for field in main_cls.__dataclass_fields__} table_main_args = {k: v for k, v in kwargs.items() if k in cls_fields} table_properties = {k: v for k, v in kwargs.items() if k not in table_main_args} init_data = {} init_data.update(table_main_args) init_data.update(table_properties) - ret = cls( - **table_main_args, table_properties=table_properties, init_data=init_data - ) - return ret - - def set_unique_columns(self) -> None: - unique_keys = ["unique_statement", "constraints"] - - for key in unique_keys: - if getattr(self, key, None): - # get column names from unique constraints & statements - self.set_column_unique_param(key) - - def set_column_unique_param(self, key: str) -> None: - for column in self.columns: - if key == "constraints": - unique = getattr(self, key, {}).get("unique", []) - if unique: - check_in = unique["columns"] - else: - check_in = [] - else: - check_in = getattr(self, key, {}) - if column["name"] in check_in: - column["unique"] = True - - def normalize_ref_columns_in_final_output(self): - for col_ref in self.ref_columns: - name = col_ref["name"] - for column in self.columns: - if name == column["name"]: - del col_ref["name"] - column["references"] = col_ref - - def populate_keys(self) -> None: - """primary_key - list of column names, example: "primary_key": ["data_sync_id", "sync_start"],""" + kwargs = table_main_args + kwargs["table_properties"] = table_properties + kwargs["init_data"] = init_data + return kwargs - if not self.primary_key: - self.get_pk_from_columns_and_constraints() - else: - self.remove_pk_from_columns() - - if self.unique: - self.add_unique_columns() - - for column in self.columns: - if column["name"] in self.primary_key: - column["nullable"] = False - - def remove_pk_from_columns(self) -> None: - for column in self.columns: - del column["primary_key"] - - def get_pk_from_columns_and_constraints(self) -> None: - pk = [] - for column in self.columns: - if column["primary_key"]: - pk.append(column["name"]) - del column["primary_key"] - if self.constraints.get("primary_keys"): - for key_constraints in self.constraints["primary_keys"]: - pk.extend(key_constraints["columns"]) - - self.primary_key = pk - - def add_unique_columns(self) -> None: - for column in self.columns: - if column["name"] in self.unique: - column["unique"] = True - - def filter_out_output(self, field: str) -> bool: - cls_fields = self.__dataclass_fields__.items() - exclude_always_keys = set() - exclude_if_not_provided = set() - exclude_if_empty = set() - exclude_by_dialect_filter = set() - - for key, value in cls_fields: - if value.metadata.get("exclude_always") is True: - exclude_always_keys.add(key) - else: - if value.metadata.get("exclude_if_not_provided") is True: - exclude_if_not_provided.add(key) - if value.metadata.get("exclude_if_empty") is True: - exclude_if_empty.add(key) - if isinstance( - value.metadata.get("output_modes"), list - ) and self.output_mode not in value.metadata.get("output_modes"): - exclude_by_dialect_filter.add(key) - if field in exclude_always_keys: - return False - if field in exclude_if_not_provided and field not in self.init_data: - return False - if field in exclude_if_empty and not self.get(field): - return False - if field in exclude_by_dialect_filter: - return False - return True - - def to_dict(self): - output = {} - for key, value in self.__dict__.items(): - if self.filter_out_output(key) is True: - output[key] = value - return output - - -def prepare_alter_columns(self, statement: Dict) -> None: - """prepare alters column metadata""" - alter_columns = [] - for num, column in enumerate(statement["columns"]): - if statement.get("references"): - alter_columns.append( - self.create_alter_column_references( - num, column, statement["references"] - ) - ) - else: - # mean we need to add - alter_columns.append(column) - if not self.alter.get("columns"): - self.alter["columns"] = alter_columns - else: - self.alter["columns"].extend(alter_columns) + @classmethod + def init(cls, **kwargs): + main_cls = cls.get_dialect_class(kwargs) + cls.pre_load_mods(main_cls, kwargs) - table_columns = self.get_normalized_table_columns_names() - # add columns from 'alter add' - for column in self.alter["columns"]: - if normalize_name(column["name"]) not in table_columns: - self.columns.append(column) + kwargs = cls.pre_load_mods(main_cls, kwargs) - def get_normalized_table_columns_names(self) -> List[str]: - return [normalize_name(column["name"]) for column in self.columns] + ret = main_cls(**kwargs) + return ret - @staticmethod - def create_alter_column_references( - index: int, column: Dict, ref_statement: Dict - ) -> Dict: - """create alter column metadata""" - column_reference = ref_statement["columns"][index] - alter_column = { - "name": column["name"], - "constraint_name": column.get("constraint_name"), - } - alter_column["references"] = deepcopy(ref_statement) - alter_column["references"]["column"] = column_reference - del alter_column["references"]["columns"] - return alter_column + def __new__(cls, *args, **kwargs): + return cls.__new__(*args, **kwargs) diff --git a/tests/dialects/test_oracle.py b/tests/dialects/test_oracle.py index f38d660..0a712ac 100644 --- a/tests/dialects/test_oracle.py +++ b/tests/dialects/test_oracle.py @@ -249,12 +249,10 @@ def test_oracle_output_mode(): "unique": False, }, ], - "constraints": {"checks": None, "references": None, "uniques": None}, "index": [], "partitioned_by": [], "primary_key": [], "schema": None, - "storage": None, "table_name": "employee", "tablespace": None, }, @@ -307,12 +305,10 @@ def test_oracle_output_mode(): "unique": False, }, ], - "constraints": {"checks": None, "references": None, "uniques": None}, "index": [], "partitioned_by": [], "primary_key": [], "schema": None, - "storage": None, "table_name": "employee_2", "tablespace": None, }, @@ -378,7 +374,6 @@ def test_storage(): "unique": False, }, ], - "constraints": {"checks": None, "references": None, "uniques": None}, "index": [], "partitioned_by": [], "primary_key": [], @@ -419,7 +414,7 @@ def test_partition_by(): ) PARTITION BY REFERENCE(order_items_fk); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="oracle") expected = { "domains": [], "ddl_properties": [], @@ -436,6 +431,7 @@ def test_partition_by(): "name": "order_id", "nullable": False, "references": None, + "encrypt": None, "size": 12, "type": "NUMBER", "unique": False, @@ -446,6 +442,7 @@ def test_partition_by(): "name": "line_item_id", "nullable": False, "references": None, + "encrypt": None, "size": 3, "type": "NUMBER", "unique": False, @@ -456,6 +453,7 @@ def test_partition_by(): "name": "product_id", "nullable": False, "references": None, + "encrypt": None, "size": 6, "type": "NUMBER", "unique": False, @@ -466,6 +464,7 @@ def test_partition_by(): "name": "unit_price", "nullable": True, "references": None, + "encrypt": None, "size": (8, 2), "type": "NUMBER", "unique": False, @@ -476,6 +475,7 @@ def test_partition_by(): "name": "quantity", "nullable": True, "references": None, + "encrypt": None, "size": 8, "type": "NUMBER", "unique": False, @@ -527,7 +527,7 @@ def test_star_in_columns_siize(): primary key (ID_) ); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="oracle") expected = { "ddl_properties": [], "domains": [], @@ -547,6 +547,7 @@ def test_star_in_columns_siize(): "size": 64, "type": "NVARCHAR2", "unique": False, + "encrypt": None, }, { "check": None, @@ -557,6 +558,7 @@ def test_star_in_columns_siize(): "size": None, "type": "INTEGER", "unique": False, + "encrypt": None, }, { "check": None, @@ -564,6 +566,7 @@ def test_star_in_columns_siize(): "name": "TYPE_", "nullable": False, "references": None, + "encrypt": None, "size": 255, "type": "NVARCHAR2", "unique": False, @@ -577,6 +580,7 @@ def test_star_in_columns_siize(): "size": 255, "type": "NVARCHAR2", "unique": False, + "encrypt": None, }, { "check": None, @@ -587,6 +591,7 @@ def test_star_in_columns_siize(): "size": 64, "type": "NVARCHAR2", "unique": False, + "encrypt": None, }, { "check": None, @@ -597,6 +602,7 @@ def test_star_in_columns_siize(): "size": 64, "type": "NVARCHAR2", "unique": False, + "encrypt": None, }, { "check": None, @@ -607,6 +613,7 @@ def test_star_in_columns_siize(): "size": 64, "type": "NVARCHAR2", "unique": False, + "encrypt": None, }, { "check": None, @@ -617,6 +624,7 @@ def test_star_in_columns_siize(): "size": 64, "type": "NVARCHAR2", "unique": False, + "encrypt": None, }, { "check": None, @@ -627,6 +635,7 @@ def test_star_in_columns_siize(): "size": ("*", 10), "type": "NUMBER", "unique": False, + "encrypt": None, }, { "check": None, @@ -637,6 +646,7 @@ def test_star_in_columns_siize(): "size": (19, 0), "type": "NUMBER", "unique": False, + "encrypt": None, }, { "check": None, @@ -647,6 +657,7 @@ def test_star_in_columns_siize(): "size": 2000, "type": "NVARCHAR2", "unique": False, + "encrypt": None, }, { "check": None, @@ -657,6 +668,7 @@ def test_star_in_columns_siize(): "size": 2000, "type": "NVARCHAR2", "unique": False, + "encrypt": None, }, ], "index": [], @@ -692,6 +704,7 @@ def test_organization_index(): "size": 3, "type": "NUMBER", "unique": False, + "encrypt": None, }, { "check": None, @@ -702,6 +715,7 @@ def test_organization_index(): "size": 3, "type": "NUMBER", "unique": False, + "encrypt": None, }, { "check": "constraint_name statement", @@ -711,6 +725,7 @@ def test_organization_index(): "references": None, "size": 1, "type": "CHAR", + "encrypt": None, "unique": False, }, ], @@ -769,7 +784,7 @@ def test_organization_index(): GRANT SELECT ON meta_criteria_combo TO PUBLIC; """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="oracle") assert result == expected @@ -782,7 +797,7 @@ def test_oracle_sizes(): ); """, normalize_names=True, - ).run(group_by_type=True) + ).run(group_by_type=True, output_mode="oracle") expected = { "ddl_properties": [], "domains": [], @@ -797,6 +812,7 @@ def test_oracle_sizes(): "check": None, "default": "user", "name": "col", + "encrypt": None, "nullable": False, "references": None, "size": "30 char", diff --git a/tests/dialects/test_psql.py b/tests/dialects/test_psql.py index 6657f9f..ab0fba1 100644 --- a/tests/dialects/test_psql.py +++ b/tests/dialects/test_psql.py @@ -9,7 +9,7 @@ def test_inherits(): INHERITS (public.identifier); """ - result = DDLParser(ddl).run() + result = DDLParser(ddl).run(output_mode="postgres") expected = [ { diff --git a/tests/dialects/test_redshift_dialect.py b/tests/dialects/test_redshift_dialect.py index e1c8e8f..319e747 100644 --- a/tests/dialects/test_redshift_dialect.py +++ b/tests/dialects/test_redshift_dialect.py @@ -64,6 +64,8 @@ def test_base_encode(): "sortkey": {"keys": [], "type": None}, "table_name": "sales", "tablespace": None, + "row_format": None, + "stored_as": None, "temp": False, } ], @@ -252,6 +254,8 @@ def test_distkey_sortkey(): "primary_key": ["salesid"], "schema": None, "encode": None, + "row_format": None, + "stored_as": None, "sortkey": {"keys": ["listid", "sellerid"], "type": "compound"}, "table_name": "sales", "tablespace": None, @@ -296,6 +300,8 @@ def test_distyle(): "index": [], "encode": None, "partitioned_by": [], + "row_format": None, + "stored_as": None, "primary_key": [], "schema": None, "sortkey": {"keys": [], "type": None}, @@ -355,6 +361,8 @@ def test_encode_for_full_table(): "schema": None, "sortkey": {"keys": [], "type": None}, "table_name": "t2", + "row_format": None, + "stored_as": None, "tablespace": None, "temp": False, } @@ -481,9 +489,13 @@ def test_interleaved_sortkey_also_ok(): "distkey": None, "diststyle": "all", "encode": None, + "row_format": None, + "stored_as": None, "index": [], "partitioned_by": [], "primary_key": [], + "row_format": None, + "stored_as": None, "schema": None, "sortkey": { "keys": ["c_custkey", "c_city", "c_mktsegment"], @@ -562,6 +574,8 @@ def test_create_temp_table(): "sortkey": {"keys": [], "type": None}, "table_name": "tempevent", "tablespace": None, + "row_format": None, + "stored_as": None, "temp": True, } ], @@ -604,6 +618,8 @@ def test_like_in_parath(): "table_name": "tempevent", "tablespace": None, "temp": True, + "row_format": None, + "stored_as": None, } ], "types": [], diff --git a/tests/dialects/test_snowflake.py b/tests/dialects/test_snowflake.py index 0834942..e9f8c0a 100644 --- a/tests/dialects/test_snowflake.py +++ b/tests/dialects/test_snowflake.py @@ -31,6 +31,7 @@ def test_clone_table(): "checks": [], "columns": [], "index": [], + "external": False, "clone": {"schema": None, "table_name": "orders"}, "partitioned_by": [], "primary_key": [], @@ -125,6 +126,7 @@ def test_cluster_by(): "schema": None, "table_name": "mytable", "tablespace": None, + "external": False, } ], "types": [], @@ -180,6 +182,7 @@ def test_enforced(): "schema": None, "table_name": "table2", "tablespace": None, + "external": False, } ], "types": [], @@ -248,6 +251,7 @@ def test_table_comment_parsed_validly(): "schema": "ASIN", "table_name": "EXCLUSION", "tablespace": None, + "external": False, } ] @@ -328,6 +332,7 @@ def test_table_with_tag(): "schema": "ASIN", "table_name": "EXCLUSION", "tablespace": None, + "external": False, } ] f = open("payload.json", "a") @@ -373,6 +378,7 @@ def test_column_with_multiple_tag(): "schema": None, "table_name": "TABLE_NAME", "tablespace": None, + "external": False, } ] f = open("payload.json", "a") @@ -418,6 +424,7 @@ def test_table_with_multiple_tag(): "table_name": "TABLE_NAME", "tablespace": None, "with_tag": ["b.c='tag1'", "b.d='tag2'"], + "external": False, } ] f = open("payload.json", "a") @@ -481,6 +488,7 @@ def test_table_with_mask(): "schema": "ASIN", "table_name": "EXCLUSION", "tablespace": None, + "external": False, } ] @@ -540,6 +548,7 @@ def test_table_with_retention(): "schema": "ASIN", "table_name": "EXCLUSION", "tablespace": None, + "external": False, "table_properties": {"data_retention_time_in_days": 15}, } ] @@ -600,6 +609,7 @@ def test_table_with_change_tracking(): "schema": "ASIN", "table_name": "EXCLUSION", "tablespace": None, + "external": False, "table_properties": {"change_tracking": False}, } ] @@ -859,6 +869,7 @@ def test_virtual_column_ext_table(): "table_name": "EXT_PAYLOAD_MANIFEST_WEB", "tablespace": None, "replace": True, + "external": True, "if_not_exists": True, "location": "@ADL_Azure_Storage_Account_Container_Name/", "table_properties": { @@ -915,6 +926,7 @@ def test_virtual_column_table(): }, ], "index": [], + "external": False, "partitioned_by": [], "primary_key": [], "primary_key_enforced": None, diff --git a/tests/dialects/test_spark_sql.py b/tests/dialects/test_spark_sql.py index 3695cb2..47f101b 100644 --- a/tests/dialects/test_spark_sql.py +++ b/tests/dialects/test_spark_sql.py @@ -52,6 +52,8 @@ def test_spark_sql_using(): ], "index": [], "partitioned_by": [], + "row_format": None, + "stored_as": None, "primary_key": [], "schema": None, "table_name": "student", @@ -170,7 +172,9 @@ def test_spark_sql_partitioned_by_function(): "index": [], "partitioned_by": [{"args": "(b)", "func_name": "months"}], "primary_key": [], + "row_format": None, "schema": None, + "stored_as": None, "table_name": "a", "tablespace": None, "location": "'s3://tables/a'", diff --git a/tests/non_statement_tests/test_common.py b/tests/non_statement_tests/test_common.py index 29b66c5..e6b9886 100644 --- a/tests/non_statement_tests/test_common.py +++ b/tests/non_statement_tests/test_common.py @@ -1,7 +1,7 @@ import pytest from simple_ddl_parser import DDLParser, DDLParserError -from simple_ddl_parser.output.common import get_table_id +from simple_ddl_parser.output.core import get_table_id def test_no_unexpected_logs(capsys): diff --git a/tests/test_simple_ddl_parser.py b/tests/test_simple_ddl_parser.py index 98a9f4d..8f40b73 100644 --- a/tests/test_simple_ddl_parser.py +++ b/tests/test_simple_ddl_parser.py @@ -1193,6 +1193,11 @@ def test_comments_in_columns(): "tables": [ { "if_not_exists": True, + "table_properties": { + "fields_terminated_by": "_ddl_parser_comma_only_str", + "row_format": "DELIMITED", + "stored_as": "TEXTFILE", + }, "columns": [ { "name": "col1", @@ -2690,9 +2695,18 @@ def test_replace_with_id(): "index": [], "partitioned_by": [], "primary_key": [], + "row_format": None, + "stored_as": None, + "temp": False, + "transient": True, "replace": True, + "external": False, "schema": None, "table_name": "someTable", + "lines_terminated_by": None, + "map_keys_terminated_by": None, + "fields_terminated_by": None, + "collection_items_terminated_by": None, "tablespace": None, }, { @@ -2714,9 +2728,17 @@ def test_replace_with_id(): "partitioned_by": [], "primary_key": [], "replace": True, + "row_format": None, + "lines_terminated_by": None, + "map_keys_terminated_by": None, + "fields_terminated_by": None, + "collection_items_terminated_by": None, "schema": None, + "stored_as": None, + "external": False, "table_name": "someTable", "tablespace": None, + "temp": True, }, ], "types": [], @@ -2730,7 +2752,7 @@ def test_replace_with_id(): ); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="hql") assert expected == result From 6981907fb5af4330fa9a2c68b5f4ffabec2b9ba3 Mon Sep 17 00:00:00 2001 From: xnuinside Date: Tue, 9 Jan 2024 02:27:05 +0300 Subject: [PATCH 06/12] mssql dialect --- CHANGELOG.txt | 7 +- README.md | 4 +- simple_ddl_parser/dialects/mysql.py | 6 + simple_ddl_parser/output/base_data.py | 18 +- simple_ddl_parser/output/dialects.py | 21 +- simple_ddl_parser/output/table_data.py | 24 +- simple_ddl_parser/parsetab.py | 57611 ++++++++++++----------- simple_ddl_parser/tokens.py | 3 +- tests/dialects/test_mssql_specific.py | 37 +- tests/dialects/test_mysql.py | 18 +- 10 files changed, 29349 insertions(+), 28400 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index eef48ba..3e329d5 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,7 +1,6 @@ **v1.0.0** In output structure was done important changes that can in theory breaks code. - ### Important changes 1. Important change: @@ -30,11 +29,17 @@ Full list of supported dialects you can find in dict - `supported_dialects`: `from simple_ddl_parser import supported_dialects` +Currently supported: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'databrics', 'sqlite', 'vertics', 'ibm_db2', 'postgres', 'oracle', 'hql', 'snowflake', 'sql'] + If you don't see dialect that you want to use - open issue with description and links to Database docs or use one of existed dialects. ### Snowflake updates: 1. For some reasons, 'CLONE' statement in SNOWFLAKE was parsed into 'like' key in output. Now it was changed to 'clone' - inner structure of output stay the same as previously. +### MySQL updates: +1. Engine statement now parsed correctly. Previously, output was always '='. + + **v0.32.1** ### Minor Fixes 1. Removed debug print diff --git a/README.md b/README.md index fffb759..babc8b8 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ And you will get output with additional keys 'stored_as', 'location', 'external' If you run parser with command line add flag '-o=hql' or '--output-mode=hql' to get the same result. -Possible output_modes: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'ibm_db2', 'oracle', 'hql', 'snowflake', 'sql'] +Possible output_modes: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'databrics', 'sqlite', 'vertics', 'ibm_db2', 'postgres', 'oracle', 'hql', 'snowflake', 'sql'] ### From python code @@ -216,7 +216,7 @@ Output will be: ### More details `DDLParser(ddl).run()` -.run() method contains several arguments, that impact changing output result. As you can saw upper exists argument `output_mode` that allow you to set dialect and get more fields in output relative to chosen dialect, for example 'hql'. Possible output_modes: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'ibm_db2', 'oracle', 'hql', 'snowflake', 'sql'] +.run() method contains several arguments, that impact changing output result. As you can saw upper exists argument `output_mode` that allow you to set dialect and get more fields in output relative to chosen dialect, for example 'hql'. Possible output_modes: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'databrics', 'sqlite', 'vertics', 'ibm_db2', 'postgres', 'oracle', 'hql', 'snowflake', 'sql'] Also in .run() method exists argument `group_by_type` (by default: False). By default output of parser looks like a List with Dicts where each dict == one entity from ddl (table, sequence, type, etc). And to understand that is current entity you need to check Dict like: if 'table_name' in dict - this is a table, if 'type_name' - this is a type & etc. diff --git a/simple_ddl_parser/dialects/mysql.py b/simple_ddl_parser/dialects/mysql.py index c123eb5..73f47df 100644 --- a/simple_ddl_parser/dialects/mysql.py +++ b/simple_ddl_parser/dialects/mysql.py @@ -2,6 +2,12 @@ class MySQL: + def p_engine(self, p: List) -> None: + """expr : expr ENGINE id id""" + p_list = list(p) + p[0] = p[1] + p[0]["engine"] = p_list[-1] + def p_on_update(self, p: List) -> None: """on_update : ON UPDATE id | ON UPDATE STRING diff --git a/simple_ddl_parser/output/base_data.py b/simple_ddl_parser/output/base_data.py index dfa857e..6596ba4 100644 --- a/simple_ddl_parser/output/base_data.py +++ b/simple_ddl_parser/output/base_data.py @@ -159,14 +159,17 @@ def add_unique_columns(self) -> None: if column["name"] in self.unique: column["unique"] = True + def iter_class_fields(self): + for key, value in self.__dataclass_fields__.items(): + yield key, value + def filter_out_output(self, field: str) -> bool: - cls_fields = self.__dataclass_fields__.items() exclude_always_keys = set() exclude_if_not_provided = set() exclude_if_empty = set() exclude_by_dialect_filter = set() - for key, value in cls_fields: + for key, value in self.iter_class_fields(): if value.metadata.get("exclude_always") is True: exclude_always_keys.add(key) else: @@ -188,11 +191,20 @@ def filter_out_output(self, field: str) -> bool: return False return True + def get_alias_if_exists(self, key: str) -> str: + for class_field, value in self.iter_class_fields(): + if key == class_field: + if value.metadata and "alias" in value.metadata: + return value.metadata["alias"] + break + return key + def to_dict(self): output = {} for key, value in self.__dict__.items(): if self.filter_out_output(key) is True: - output[key] = value + name = self.get_alias_if_exists(key) + output[name] = value return output diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index 7862bd3..8841388 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -95,7 +95,12 @@ class SparkSQL(Dialect): @dataclass @dialect(name="mysql") class MySSQL(Dialect): - pass + engine: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + default_charset: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) @dataclass @@ -107,7 +112,19 @@ class BigQuery(Dialect): @dataclass @dialect(name="mssql") class MSSQL(Dialect): - pass + _with: Optional[dict] = field( + default=None, metadata={"exclude_if_not_provided": True, "alias": "with"} + ) + clustered_primary_key: Optional[list] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + on: Optional[str] = field(default=None, metadata={"exclude_if_not_provided": True}) + textimage_on: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + period_for_system_time: Optional[List[str]] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) @dataclass diff --git a/simple_ddl_parser/output/table_data.py b/simple_ddl_parser/output/table_data.py index c70a52a..5fff595 100644 --- a/simple_ddl_parser/output/table_data.py +++ b/simple_ddl_parser/output/table_data.py @@ -30,10 +30,28 @@ def pre_load_mods(cls, main_cls, kwargs): if main_cls.__d_name__ == "bigquery": if kwargs.get("schema"): kwargs["dataset"] = kwargs["schema"] + cls_fields = { + field: value for field, value in main_cls.__dataclass_fields__.items() + } + # aliases needed if statement words are reserved in python and cannot me used as argument name, + # for example - like 'with' word + aliased_fields = { + value.metadata["alias"]: name + for name, value in cls_fields.items() + if value.metadata and "alias" in value.metadata + } + for alias, field_name in aliased_fields.items(): + if alias in kwargs: + kwargs[field_name] = kwargs[alias] + del kwargs[alias] + table_main_args = { + k.lower(): v for k, v in kwargs.items() if k.lower() in cls_fields + } + + table_properties = { + k.lower(): v for k, v in kwargs.items() if k.lower() not in table_main_args + } - cls_fields = {field for field in main_cls.__dataclass_fields__} - table_main_args = {k: v for k, v in kwargs.items() if k in cls_fields} - table_properties = {k: v for k, v in kwargs.items() if k not in table_main_args} init_data = {} init_data.update(table_main_args) init_data.update(table_properties) diff --git a/simple_ddl_parser/parsetab.py b/simple_ddl_parser/parsetab.py index 3c684e9..8dd6fa2 100644 --- a/simple_ddl_parser/parsetab.py +++ b/simple_ddl_parser/parsetab.py @@ -5,7 +5,7 @@ _lr_method = "LALR" -_lr_signature = "ADD ALTER ARRAY AS AUTOINCREMENT AUTO_REFRESH BY CACHE CATALOG CHANGE_TRACKING CHECK CLONE CLUSTER CLUSTERED COLLATE COLLECTION COLUMN COMMA COMMAT COMMENT CONSTRAINT CREATE DATABASE DATA_RETENTION_TIME_IN_DAYS DEFAULT DEFERRABLE DELETE DOMAIN DOT DQ_STRING DROP ENCODE ENCRYPT ENFORCED EXISTS FILE_FORMAT FOR FOREIGN FORMAT GENERATED ID IF INCREMENT INDEX INHERITS INITIALLY INTO ITEMS KEY KEYS LIKE LOCATION LP LT MAP MASKING MAXVALUE MAX_DATA_EXTENSION_TIME_IN_DAYS MINVALUE MODIFY NO NOORDER NOT NULL ON OPTIONS OR ORDER PARTITION PARTITIONED POLICY PRIMARY REFERENCES RENAME REPLACE ROW RP RT SALT SCHEMA SEQUENCE SERDE SERDEPROPERTIES SKEWED STAGE_FILE_FORMAT START STORAGE STORED STRING_BASE TABLE TABLESPACE TABLE_FORMAT TAG TBLPROPERTIES TERMINATED TEXTIMAGE_ON TO TYPE UNIQUE UPDATE USING WITHexpr : expr multiple_optionsexpr : expr INDEX id idalter_column_sql_server : alt_table ALTER COLUMN defcolumnon_update : ON UPDATE id\n | ON UPDATE STRING\n | ON UPDATE f_call\n expr : expr id LP id RPexpr : expr usingmultiple_options : options\n | multiple_options options\n expr : expr LOCATION STRING\n | expr LOCATION DQ_STRING\n | expr LOCATION table_property_equalsalter_column_modify_oracle : alt_table MODIFY defcolumnexpr : expr INHERITS LP t_name RPclone : CLONE idusing : USING idpkey_constraint : constraint pkey_statement id LP index_pid RP\n | constraint pkey_statement LP index_pid RP\n | pkey_constraint with\n | pkey_constraint with ON id\n encode : ENCODE idexpr : expr CLUSTER BY LP pid RP\n | expr CLUSTER BY pid\n expr : expr PARTITION BY LP pid RP\n | expr PARTITION BY id LP pid RP\n | expr PARTITION BY pid\n | expr PARTITION BY id pidencrypt : ENCRYPT\n | encrypt NO SALT\n | encrypt SALT\n | encrypt USING STRING\n | encrypt STRING\n expr : expr ID ON LP pid RP\n | expr ID by_smthgexpr : expr id id\n | expr id KEY\n options : OPTIONS LP id_equals RPmultiple_format_equals : fmt_equals\n | multiple_format_equals fmt_equals\n expr : expr INTO ID IDfmt_equals : id LP RP\n | id LP fmt_equals RP\n | id LP multi_id RP\n expr : expr id id LP pid RPwith : WITH with_argsexpr : expr database_baserow_format : ROW FORMAT SERDE\n | ROW FORMAT\n table_property_equals : id id id_or_string\n | id id_or_string\n | LP id id id_or_string RP\n | LP id_or_string RP\n | id table_property_equals\n | id_equals\n database_base : CREATE DATABASE id\n | CREATE ID DATABASE id\n | database_base clone\n equals : id id id\n | id id ON\n | id id id DOT id\n expr : expr row_format id\n | expr row_format STRING\n storage : STORAGE LP\n | storage id id\n | storage id id RP\n table_property_equals_int : id id id_or_string\n | id id_or_string\n | LP id id id_or_string RP\n | LP id_or_string RP\n with_args : LP equals\n | with_args COMMA equals\n | with_args with_args\n | with_args RP\n expr : expr WITH SERDEPROPERTIES multi_assignmentsexpr : expr storagetable_property_equals_bool : id id id_or_string\n | id id_or_string\n expr : expr TBLPROPERTIES multi_assignmentsexpr : expr ID INDEXperiod_for : id FOR id LP pid RPmulti_assignments : LP assignment\n | multi_assignments RP\n | multi_assignments COMMA assignmentexpr : expr DATA_RETENTION_TIME_IN_DAYS table_property_equals_intexpr : expr ON idexpr : expr MAX_DATA_EXTENSION_TIME_IN_DAYS table_property_equalsassignment : id id id\n | STRING id STRING\n | id id STRING\n | STRING id id\n | STRING idexpr : expr withexpr : expr CHANGE_TRACKING table_property_equals_boolexpr : expr TEXTIMAGE_ON idexpr : expr option_commentexpr : CREATE TABLESPACE id properties\n | CREATE id TABLESPACE id properties\n | CREATE id TABLESPACE id\n | CREATE TABLESPACE id\n | CREATE id id TABLESPACE id\n | CREATE id id TABLESPACE id properties\n expr : expr COMMENT STRINGexpr : expr option_with_tagexpr : expr id TERMINATED BY id\n | expr id TERMINATED BY STRING\n properties : property\n | properties propertyoption_comment : ID STRING\n | ID DQ_STRING\n | COMMENT ID STRING\n | COMMENT ID DQ_STRING\n expr : expr MAP KEYS TERMINATED BY id\n | expr MAP KEYS TERMINATED BY STRING\n property : id id\n | id STRING\n | id ON\n | id STORAGE\n | id ROW\n tag_equals : id id id_or_string\n | id id_or_string\n | id DOT id id id_or_string\n | id DOT id id_or_string\n | id DOT id DOT id id id_or_string\n | id DOT id DOT id id_or_string\n expr : expr SKEWED BY LP id RP ON LP pid RPexpr : expr COLLECTION ITEMS TERMINATED BY id\n | expr COLLECTION ITEMS TERMINATED BY STRING\n multiple_tag_equals : tag_equals\n | multiple_tag_equals COMMA tag_equals\n create_table : CREATE TABLE IF NOT EXISTS\n | CREATE TABLE\n | CREATE OR REPLACE TABLE IF NOT EXISTS\n | CREATE OR REPLACE TABLE\n | CREATE id TABLE IF NOT EXISTS\n | CREATE id TABLE\n | CREATE OR REPLACE id TABLE IF NOT EXISTS\n | CREATE OR REPLACE id TABLE\n\n expr : expr STORED AS id\n | expr STORED AS id STRING\n | expr STORED AS id STRING id STRING\n option_order_noorder : ORDER\n | NOORDER\n option_with_tag : TAG LP id RP\n | TAG LP id DOT id DOT id RP\n | TAG LP multiple_tag_equals RP\n | WITH TAG LP id RP\n | WITH TAG LP multiple_tag_equals RP\n expr : expr PARTITIONED BY pid_with_type\n | expr PARTITIONED BY LP pid RP\n | expr PARTITIONED BY LP multiple_funct RP\n option_with_masking_policy : MASKING POLICY id DOT id DOT id\n | WITH MASKING POLICY id DOT id DOT id\n pid_with_type : LP column\n | pid_with_type COMMA column\n | pid_with_type RP\n expr : expr CATALOG table_property_equalsc_property : id idexpr : expr FILE_FORMAT multiple_format_equalsexpr : expr STAGE_FILE_FORMAT multiple_format_equalsexpr : expr TABLE_FORMAT table_property_equalsexpr : expr AUTO_REFRESH table_property_equals_boolas_virtual : AS LP id LP id LP pid RP COMMA pid RP RP\n | AS LP id LP pid RP RP\n | AS LP multi_id RPc_type : id\n | id id\n | id id id id\n | id id id\n | c_type pid\n | id DOT id\n | tid\n | ARRAY\n | c_type ARRAY\n | c_type tid\n id : ID\n | DQ_STRINGid_or_string : id\n | STRINGSTRING : STRING_BASE\n | STRING STRING_BASE\n column : id c_type\n | column comment\n | column LP id RP\n | column LP id id RP\n | column LP id RP c_type\n | column LP id COMMA id RP\n | column LP id COMMA id RP c_type\n autoincrement : AUTOINCREMENTdefcolumn : column\n | defcolumn comment\n | defcolumn null\n | defcolumn encode\n | defcolumn PRIMARY KEY\n | defcolumn UNIQUE KEY\n | defcolumn UNIQUE\n | defcolumn check_ex\n | defcolumn default\n | defcolumn collate\n | defcolumn enforced\n | defcolumn ref\n | defcolumn foreign ref\n | defcolumn encrypt\n | defcolumn generated\n | defcolumn c_property\n | defcolumn on_update\n | defcolumn options\n | defcolumn autoincrement\n | defcolumn option_order_noorder\n | defcolumn option_with_tag\n | defcolumn option_with_masking_policy\n | defcolumn as_virtual\n check_ex : check_st\n | constraint check_st\n expr : create_schema\n | create_database\n | expr id\n | expr clone\n c_schema : CREATE SCHEMA\n | CREATE ID SCHEMAcreate_schema : c_schema id id\n | c_schema id id id\n | c_schema id\n | c_schema id DOT id\n | c_schema id option_comment\n | c_schema id DOT id option_comment\n | c_schema IF NOT EXISTS id\n | c_schema IF NOT EXISTS id DOT id\n | create_schema id id id\n | create_schema id id STRING\n | create_schema options\n create_database : database_base\n | create_database id id id\n | create_database id id STRING\n | create_database options\n expr : DROP TABLE id\n | DROP TABLE id DOT id\n multiple_column_names : column\n | multiple_column_names COMMA\n | multiple_column_names column\n type_definition : type_name id LP pid RP\n | type_name id LP multiple_column_names RP\n | type_name LP id_equals RP\n | type_name TABLE LP defcolumn\n | type_definition COMMA defcolumn\n | type_definition RP\n expr : type_definitiontype_name : type_create id AS\n | type_create id DOT id AS\n | type_create id DOT id\n | type_create id\n type_create : CREATE TYPE\n | CREATE OR REPLACE TYPE\n expr : domain_name id LP pid RPdomain_name : CREATE DOMAIN id AS\n | CREATE DOMAIN id DOT id AS\n | CREATE DOMAIN id DOT id\n | CREATE DOMAIN id\n expr : alter_foreign ref\n | alter_drop_column\n | alter_check\n | alter_unique\n | alter_default\n | alter_primary_key\n | alter_primary_key using_tablespace\n | alter_column_add\n | alter_rename_column\n | alter_column_sql_server\n | alter_column_modify\n | alter_column_modify_oracle\n alter_column_modify : alt_table MODIFY COLUMN defcolumnalter_drop_column : alt_table DROP COLUMN idalter_rename_column : alt_table RENAME COLUMN id id idalter_column_add : alt_table ADD defcolumnalter_primary_key : alt_table ADD PRIMARY KEY LP pid RP\n | alt_table ADD constraint PRIMARY KEY LP pid RP\n alter_unique : alt_table ADD UNIQUE LP pid RP\n | alt_table ADD constraint UNIQUE LP pid RP\n alter_default : alt_table id id\n | alt_table ADD constraint id id\n | alt_table ADD id STRING\n | alt_table ADD constraint id STRING\n | alter_default id\n | alter_default FOR pid\n alter_check : alt_table ADD check_st\n | alt_table ADD constraint check_st\n alter_foreign : alt_table ADD foreign\n | alt_table ADD constraint foreign\n alt_table : ALTER TABLE t_name\n | ALTER TABLE IF EXISTS t_name\n | ALTER TABLE ID t_nameid_equals : id id id_or_string\n | id id_or_string\n | id_equals COMMA\n | id_equals COMMA id id id_or_string\n | id\n | id_equals LP pid RP\n | id_equals LP pid RP id\n | id_equals COMMA id id\n | id_equals COMMA id\n expr : index_table_name LP index_pid RPindex_table_name : create_index ON id\n | create_index ON id DOT id\n create_index : CREATE INDEX id\n | CREATE UNIQUE INDEX id\n | create_index ON id\n | CREATE CLUSTERED INDEX id\n expr : table_name defcolumn\n | table_name LP defcolumn\n | table_name\n | expr COMMA defcolumn\n | expr COMMA\n | expr COMMA constraint\n | expr COMMA check_ex\n | expr COMMA foreign\n | expr COMMA pkey\n | expr COMMA uniq\n | expr COMMA statem_by_id\n | expr COMMA constraint uniq\n | expr COMMA period_for\n | expr COMMA pkey_constraint\n | expr COMMA constraint pkey\n | expr COMMA constraint pkey enforced\n | expr COMMA constraint foreign ref\n | expr COMMA foreign ref\n | expr encode\n | expr DEFAULT id id id\n | expr RP\n likke : LIKE\n | CLONE\n expr : table_name likke id\n | table_name likke id DOT id\n | table_name LP likke id DOT id RP\n | table_name LP likke id RP\n t_name : id DOT id\n | id\n | id DOT id DOT id\n table_name : create_table t_name\n | table_name likke id\n expr : seq_name\n | expr INCREMENT id\n | expr INCREMENT BY id\n | expr INCREMENT id id\n | expr START id\n | expr START WITH id\n | expr START id id\n | expr MINVALUE id\n | expr NO MINVALUE\n | expr NO MAXVALUE\n | expr MAXVALUE id\n | expr CACHE id\n | expr CACHE\n | expr NOORDER\n | expr ORDER\n seq_name : create_seq id DOT id\n | create_seq id\n create_seq : CREATE SEQUENCE IF NOT EXISTS\n | CREATE SEQUENCE\n\n tid : LT id\n | LT\n | tid LT\n | tid id\n | tid COMMAT\n | tid RT\n null : NULL\n | NOT NULL\n f_call : id LP RP\n | id LP f_call RP\n | id LP multi_id RP\n | id LP pid RP\n multi_id : id\n | multi_id id\n | f_call\n | multi_id f_call\n funct_args : LP multi_id RPfunct : id LP multi_id RPmultiple_funct : funct\n | multiple_funct COMMA funct\n | multiple_funct COMMA\n funct_expr : LP multi_id RP\n | multi_id\n dot_id : id DOT iddefault : DEFAULT id\n | DEFAULT STRING\n | DEFAULT NULL\n | default FOR dot_id\n | DEFAULT funct_expr\n | DEFAULT LP pid RP\n | DEFAULT LP funct_expr pid RP\n | default id\n | default LP RP\n enforced : ENFORCED\n | NOT ENFORCED\n collate : COLLATE id\n | COLLATE STRING\n \n constraint : CONSTRAINT id\n \n generated : gen_always funct_expr\n | gen_always funct_expr id\n | gen_always LP multi_id RP\n | gen_always f_call\n \n gen_always : GENERATED id AS\n check_st : CHECK LP id\n | check_st id\n | check_st STRING\n | check_st id STRING\n | check_st id RP\n | check_st STRING RP\n | check_st funct_args\n | check_st LP pid RP\n using_tablespace : USING INDEX tablespacepid : id\n | STRING\n | pid id\n | pid STRING\n | STRING LP RP\n | id LP RP\n | pid COMMA id\n | pid COMMA STRING\n index_pid : id\n | index_pid id\n | index_pid COMMA index_pid\n foreign : FOREIGN KEY LP pid RP\n | FOREIGN KEYref : REFERENCES t_name\n | ref LP pid RP\n | ref ON DELETE id\n | ref ON UPDATE id\n | ref DEFERRABLE INITIALLY id\n | ref NOT DEFERRABLE\n expr : pkeyuniq : UNIQUE LP pid RPstatem_by_id : id LP pid RP\n | id KEY LP pid RP\n pkey : pkey_statement LP pid RP\n | pkey_statement ID LP pid RP\n pkey_statement : PRIMARY KEYcomment : COMMENT STRINGtablespace : TABLESPACE id\n | TABLESPACE id properties\n expr : expr tablespaceby_smthg : BY id\n | BY ROW\n | BY LP pid RP\n " +_lr_signature = "ADD ALTER ARRAY AS AUTOINCREMENT AUTO_REFRESH BY CACHE CATALOG CHANGE_TRACKING CHECK CLONE CLUSTER CLUSTERED COLLATE COLLECTION COLUMN COMMA COMMAT COMMENT CONSTRAINT CREATE DATABASE DATA_RETENTION_TIME_IN_DAYS DEFAULT DEFERRABLE DELETE DOMAIN DOT DQ_STRING DROP ENCODE ENCRYPT ENFORCED ENGINE EXISTS FILE_FORMAT FOR FOREIGN FORMAT GENERATED ID IF INCREMENT INDEX INHERITS INITIALLY INTO ITEMS KEY KEYS LIKE LOCATION LP LT MAP MASKING MAXVALUE MAX_DATA_EXTENSION_TIME_IN_DAYS MINVALUE MODIFY NO NOORDER NOT NULL ON OPTIONS OR ORDER PARTITION PARTITIONED POLICY PRIMARY REFERENCES RENAME REPLACE ROW RP RT SALT SCHEMA SEQUENCE SERDE SERDEPROPERTIES SKEWED STAGE_FILE_FORMAT START STORAGE STORED STRING_BASE TABLE TABLESPACE TABLE_FORMAT TAG TBLPROPERTIES TERMINATED TEXTIMAGE_ON TYPE UNIQUE UPDATE USING WITHexpr : expr multiple_optionsexpr : expr INDEX id idalter_column_sql_server : alt_table ALTER COLUMN defcolumnexpr : expr id LP id RPexpr : expr usingexpr : expr ENGINE id id\n multiple_options : options\n | multiple_options options\n expr : expr LOCATION STRING\n | expr LOCATION DQ_STRING\n | expr LOCATION table_property_equalsalter_column_modify_oracle : alt_table MODIFY defcolumnexpr : expr INHERITS LP t_name RPclone : CLONE idusing : USING idpkey_constraint : constraint pkey_statement id LP index_pid RP\n | constraint pkey_statement LP index_pid RP\n | pkey_constraint with\n | pkey_constraint with ON id\n encode : ENCODE idexpr : expr CLUSTER BY LP pid RP\n | expr CLUSTER BY pid\n expr : expr PARTITION BY LP pid RP\n | expr PARTITION BY id LP pid RP\n | expr PARTITION BY pid\n | expr PARTITION BY id pidon_update : ON UPDATE id\n | ON UPDATE STRING\n | ON UPDATE f_call\n encrypt : ENCRYPT\n | encrypt NO SALT\n | encrypt SALT\n | encrypt USING STRING\n | encrypt STRING\n expr : expr ID ON LP pid RP\n | expr ID by_smthgexpr : expr id id\n | expr id KEY\n options : OPTIONS LP id_equals RPmultiple_format_equals : fmt_equals\n | multiple_format_equals fmt_equals\n expr : expr INTO ID IDfmt_equals : id LP RP\n | id LP fmt_equals RP\n | id LP multi_id RP\n expr : expr id id LP pid RPwith : WITH with_argsexpr : expr database_baserow_format : ROW FORMAT SERDE\n | ROW FORMAT\n table_property_equals : id id id_or_string\n | id id_or_string\n | LP id id id_or_string RP\n | LP id_or_string RP\n | id table_property_equals\n | id_equals\n database_base : CREATE DATABASE id\n | CREATE ID DATABASE id\n | database_base clone\n equals : id id id\n | id id ON\n | id id id DOT id\n expr : expr row_format id\n | expr row_format STRING\n storage : STORAGE LP\n | storage id id\n | storage id id RP\n table_property_equals_int : id id id_or_string\n | id id_or_string\n | LP id id id_or_string RP\n | LP id_or_string RP\n with_args : LP equals\n | with_args COMMA equals\n | with_args with_args\n | with_args RP\n expr : expr WITH SERDEPROPERTIES multi_assignmentsexpr : expr storagetable_property_equals_bool : id id id_or_string\n | id id_or_string\n expr : expr TBLPROPERTIES multi_assignmentsexpr : expr ID INDEXperiod_for : id FOR id LP pid RPmulti_assignments : LP assignment\n | multi_assignments RP\n | multi_assignments COMMA assignmentexpr : expr DATA_RETENTION_TIME_IN_DAYS table_property_equals_intexpr : expr ON idexpr : expr MAX_DATA_EXTENSION_TIME_IN_DAYS table_property_equalsassignment : id id id\n | STRING id STRING\n | id id STRING\n | STRING id id\n | STRING idexpr : expr withexpr : expr CHANGE_TRACKING table_property_equals_boolexpr : expr TEXTIMAGE_ON idexpr : expr option_commentexpr : CREATE TABLESPACE id properties\n | CREATE id TABLESPACE id properties\n | CREATE id TABLESPACE id\n | CREATE TABLESPACE id\n | CREATE id id TABLESPACE id\n | CREATE id id TABLESPACE id properties\n expr : expr COMMENT STRINGexpr : expr option_with_tagexpr : expr id TERMINATED BY id\n | expr id TERMINATED BY STRING\n properties : property\n | properties propertyoption_comment : ID STRING\n | ID DQ_STRING\n | COMMENT ID STRING\n | COMMENT ID DQ_STRING\n expr : expr MAP KEYS TERMINATED BY id\n | expr MAP KEYS TERMINATED BY STRING\n property : id id\n | id STRING\n | id ON\n | id STORAGE\n | id ROW\n tag_equals : id id id_or_string\n | id id_or_string\n | id DOT id id id_or_string\n | id DOT id id_or_string\n | id DOT id DOT id id id_or_string\n | id DOT id DOT id id_or_string\n expr : expr SKEWED BY LP id RP ON LP pid RPexpr : expr COLLECTION ITEMS TERMINATED BY id\n | expr COLLECTION ITEMS TERMINATED BY STRING\n multiple_tag_equals : tag_equals\n | multiple_tag_equals COMMA tag_equals\n create_table : CREATE TABLE IF NOT EXISTS\n | CREATE TABLE\n | CREATE OR REPLACE TABLE IF NOT EXISTS\n | CREATE OR REPLACE TABLE\n | CREATE id TABLE IF NOT EXISTS\n | CREATE id TABLE\n | CREATE OR REPLACE id TABLE IF NOT EXISTS\n | CREATE OR REPLACE id TABLE\n\n expr : expr STORED AS id\n | expr STORED AS id STRING\n | expr STORED AS id STRING id STRING\n option_order_noorder : ORDER\n | NOORDER\n option_with_tag : TAG LP id RP\n | TAG LP id DOT id DOT id RP\n | TAG LP multiple_tag_equals RP\n | WITH TAG LP id RP\n | WITH TAG LP multiple_tag_equals RP\n expr : expr PARTITIONED BY pid_with_type\n | expr PARTITIONED BY LP pid RP\n | expr PARTITIONED BY LP multiple_funct RP\n option_with_masking_policy : MASKING POLICY id DOT id DOT id\n | WITH MASKING POLICY id DOT id DOT id\n pid_with_type : LP column\n | pid_with_type COMMA column\n | pid_with_type RP\n expr : expr CATALOG table_property_equalsc_property : id idexpr : expr FILE_FORMAT multiple_format_equalsexpr : expr STAGE_FILE_FORMAT multiple_format_equalsexpr : expr TABLE_FORMAT table_property_equalsexpr : expr AUTO_REFRESH table_property_equals_boolas_virtual : AS LP id LP id LP pid RP COMMA pid RP RP\n | AS LP id LP pid RP RP\n | AS LP multi_id RPc_type : id\n | id id\n | id id id id\n | id id id\n | c_type pid\n | id DOT id\n | tid\n | ARRAY\n | c_type ARRAY\n | c_type tid\n id : ID\n | DQ_STRINGid_or_string : id\n | STRINGSTRING : STRING_BASE\n | STRING STRING_BASE\n column : id c_type\n | column comment\n | column LP id RP\n | column LP id id RP\n | column LP id RP c_type\n | column LP id COMMA id RP\n | column LP id COMMA id RP c_type\n autoincrement : AUTOINCREMENTdefcolumn : column\n | defcolumn comment\n | defcolumn null\n | defcolumn encode\n | defcolumn PRIMARY KEY\n | defcolumn UNIQUE KEY\n | defcolumn UNIQUE\n | defcolumn check_ex\n | defcolumn default\n | defcolumn collate\n | defcolumn enforced\n | defcolumn ref\n | defcolumn foreign ref\n | defcolumn encrypt\n | defcolumn generated\n | defcolumn c_property\n | defcolumn on_update\n | defcolumn options\n | defcolumn autoincrement\n | defcolumn option_order_noorder\n | defcolumn option_with_tag\n | defcolumn option_with_masking_policy\n | defcolumn as_virtual\n check_ex : check_st\n | constraint check_st\n expr : create_schema\n | create_database\n | expr id\n | expr clone\n c_schema : CREATE SCHEMA\n | CREATE ID SCHEMAcreate_schema : c_schema id id\n | c_schema id id id\n | c_schema id\n | c_schema id DOT id\n | c_schema id option_comment\n | c_schema id DOT id option_comment\n | c_schema IF NOT EXISTS id\n | c_schema IF NOT EXISTS id DOT id\n | create_schema id id id\n | create_schema id id STRING\n | create_schema options\n create_database : database_base\n | create_database id id id\n | create_database id id STRING\n | create_database options\n expr : DROP TABLE id\n | DROP TABLE id DOT id\n multiple_column_names : column\n | multiple_column_names COMMA\n | multiple_column_names column\n type_definition : type_name id LP pid RP\n | type_name id LP multiple_column_names RP\n | type_name LP id_equals RP\n | type_name TABLE LP defcolumn\n | type_definition COMMA defcolumn\n | type_definition RP\n expr : type_definitiontype_name : type_create id AS\n | type_create id DOT id AS\n | type_create id DOT id\n | type_create id\n type_create : CREATE TYPE\n | CREATE OR REPLACE TYPE\n expr : domain_name id LP pid RPdomain_name : CREATE DOMAIN id AS\n | CREATE DOMAIN id DOT id AS\n | CREATE DOMAIN id DOT id\n | CREATE DOMAIN id\n expr : alter_foreign ref\n | alter_drop_column\n | alter_check\n | alter_unique\n | alter_default\n | alter_primary_key\n | alter_primary_key using_tablespace\n | alter_column_add\n | alter_rename_column\n | alter_column_sql_server\n | alter_column_modify\n | alter_column_modify_oracle\n alter_column_modify : alt_table MODIFY COLUMN defcolumnalter_drop_column : alt_table DROP COLUMN idalter_rename_column : alt_table RENAME COLUMN id id idalter_column_add : alt_table ADD defcolumnalter_primary_key : alt_table ADD PRIMARY KEY LP pid RP\n | alt_table ADD constraint PRIMARY KEY LP pid RP\n alter_unique : alt_table ADD UNIQUE LP pid RP\n | alt_table ADD constraint UNIQUE LP pid RP\n alter_default : alt_table id id\n | alt_table ADD constraint id id\n | alt_table ADD id STRING\n | alt_table ADD constraint id STRING\n | alter_default id\n | alter_default FOR pid\n alter_check : alt_table ADD check_st\n | alt_table ADD constraint check_st\n alter_foreign : alt_table ADD foreign\n | alt_table ADD constraint foreign\n alt_table : ALTER TABLE t_name\n | ALTER TABLE IF EXISTS t_name\n | ALTER TABLE ID t_nameid_equals : id id id_or_string\n | id id_or_string\n | id_equals COMMA\n | id_equals COMMA id id id_or_string\n | id\n | id_equals LP pid RP\n | id_equals LP pid RP id\n | id_equals COMMA id id\n | id_equals COMMA id\n expr : index_table_name LP index_pid RPindex_table_name : create_index ON id\n | create_index ON id DOT id\n create_index : CREATE INDEX id\n | CREATE UNIQUE INDEX id\n | create_index ON id\n | CREATE CLUSTERED INDEX id\n expr : table_name defcolumn\n | table_name LP defcolumn\n | table_name\n | expr COMMA defcolumn\n | expr COMMA\n | expr COMMA constraint\n | expr COMMA check_ex\n | expr COMMA foreign\n | expr COMMA pkey\n | expr COMMA uniq\n | expr COMMA statem_by_id\n | expr COMMA constraint uniq\n | expr COMMA period_for\n | expr COMMA pkey_constraint\n | expr COMMA constraint pkey\n | expr COMMA constraint pkey enforced\n | expr COMMA constraint foreign ref\n | expr COMMA foreign ref\n | expr encode\n | expr DEFAULT id id id\n | expr RP\n likke : LIKE\n | CLONE\n expr : table_name likke id\n | table_name likke id DOT id\n | table_name LP likke id DOT id RP\n | table_name LP likke id RP\n t_name : id DOT id\n | id\n | id DOT id DOT id\n table_name : create_table t_name\n | table_name likke id\n expr : seq_name\n | expr INCREMENT id\n | expr INCREMENT BY id\n | expr INCREMENT id id\n | expr START id\n | expr START WITH id\n | expr START id id\n | expr MINVALUE id\n | expr NO MINVALUE\n | expr NO MAXVALUE\n | expr MAXVALUE id\n | expr CACHE id\n | expr CACHE\n | expr NOORDER\n | expr ORDER\n seq_name : create_seq id DOT id\n | create_seq id\n create_seq : CREATE SEQUENCE IF NOT EXISTS\n | CREATE SEQUENCE\n\n tid : LT id\n | LT\n | tid LT\n | tid id\n | tid COMMAT\n | tid RT\n null : NULL\n | NOT NULL\n f_call : id LP RP\n | id LP f_call RP\n | id LP multi_id RP\n | id LP pid RP\n multi_id : id\n | multi_id id\n | f_call\n | multi_id f_call\n funct_args : LP multi_id RPfunct : id LP multi_id RPmultiple_funct : funct\n | multiple_funct COMMA funct\n | multiple_funct COMMA\n funct_expr : LP multi_id RP\n | multi_id\n dot_id : id DOT iddefault : DEFAULT id\n | DEFAULT STRING\n | DEFAULT NULL\n | default FOR dot_id\n | DEFAULT funct_expr\n | DEFAULT LP pid RP\n | DEFAULT LP funct_expr pid RP\n | default id\n | default LP RP\n enforced : ENFORCED\n | NOT ENFORCED\n collate : COLLATE id\n | COLLATE STRING\n \n constraint : CONSTRAINT id\n \n generated : gen_always funct_expr\n | gen_always funct_expr id\n | gen_always LP multi_id RP\n | gen_always f_call\n \n gen_always : GENERATED id AS\n check_st : CHECK LP id\n | check_st id\n | check_st STRING\n | check_st id STRING\n | check_st id RP\n | check_st STRING RP\n | check_st funct_args\n | check_st LP pid RP\n using_tablespace : USING INDEX tablespacepid : id\n | STRING\n | pid id\n | pid STRING\n | STRING LP RP\n | id LP RP\n | pid COMMA id\n | pid COMMA STRING\n index_pid : id\n | index_pid id\n | index_pid COMMA index_pid\n foreign : FOREIGN KEY LP pid RP\n | FOREIGN KEYref : REFERENCES t_name\n | ref LP pid RP\n | ref ON DELETE id\n | ref ON UPDATE id\n | ref DEFERRABLE INITIALLY id\n | ref NOT DEFERRABLE\n expr : pkeyuniq : UNIQUE LP pid RPstatem_by_id : id LP pid RP\n | id KEY LP pid RP\n pkey : pkey_statement LP pid RP\n | pkey_statement ID LP pid RP\n pkey_statement : PRIMARY KEYcomment : COMMENT STRINGtablespace : TABLESPACE id\n | TABLESPACE id properties\n expr : expr tablespaceby_smthg : BY id\n | BY ROW\n | BY LP pid RP\n " _lr_action_items = { "CREATE": ( @@ -33,63 +33,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -100,38 +98,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -140,167 +138,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -308,222 +306,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ 3, - 85, - -232, - -215, + 86, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, - -412, - -191, - -192, - -193, - -196, - -197, - -198, - -199, - -200, - -201, - -203, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, + -412, + -413, + -192, + -193, + -194, + -197, + -198, + -199, + -200, + -201, + -202, -204, -205, -206, @@ -533,355 +533,355 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "DROP": ( [ 0, 26, - 40, - 109, - 145, - 340, + 41, + 110, + 146, 342, - 538, - 540, - 687, - 772, + 344, + 541, + 543, + 690, + 775, ], [ 6, - 136, + 137, + -178, -177, - -176, + -337, + -290, + -177, + -292, -336, - -289, - -176, -291, - -335, - -290, - -337, + -338, ], ), "ALTER": ( [ 0, 26, - 40, - 109, - 145, - 340, + 41, + 110, + 146, 342, - 538, - 540, - 687, - 772, + 344, + 541, + 543, + 690, + 775, ], [ 28, - 139, + 140, + -178, -177, - -176, + -337, + -290, + -177, + -292, -336, - -289, - -176, -291, - -335, - -290, - -337, + -338, ], ), "PRIMARY": ( [ 0, - 40, - 71, - 109, - 123, - 127, - 135, - 145, - 159, - 204, - 205, - 216, - 235, - 255, - 261, - 263, - 264, - 268, - 269, - 270, - 272, - 273, - 274, - 275, + 41, + 72, + 110, + 124, + 128, + 136, + 146, + 161, + 206, + 207, + 218, + 237, + 257, + 263, + 265, + 266, + 270, + 271, + 272, + 274, + 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -890,147 +890,148 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 328, - 333, - 339, - 354, - 406, - 412, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 330, + 335, + 341, + 357, + 409, + 415, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ 27, - -177, + -178, 27, - -176, - 271, - -190, - 332, - -336, - -180, - 271, + -177, + 273, + -191, + 334, + -337, + -181, + 273, 27, - -213, - -22, - 271, - -424, - -411, + -214, + -20, + 273, + -425, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -1040,118 +1041,119 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 271, - -166, - -182, - -172, - -173, - -360, + -144, + 273, + -167, -183, - 529, - 271, - 271, - -181, - -214, - -396, - -403, + -173, + -174, + -361, + -184, + 532, + 273, + 273, + -182, + -215, + -397, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 271, - 271, - 271, - -335, - -405, + -365, + -360, + 273, + 273, + 273, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "$end": ( @@ -1178,63 +1180,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -1245,38 +1245,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -1285,167 +1285,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -1453,221 +1453,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ 0, - -232, - -215, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -1677,267 +1679,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, - -395, - -397, - -371, - -373, - -167, - -170, - -174, + -159, + -372, + -385, + -386, + -388, + -382, + -374, + -395, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "INDEX": ( @@ -1965,66 +1969,64 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 101, + 84, + 94, 102, - 108, + 103, 109, - 111, - 114, - 116, - 118, - 120, + 110, + 112, + 115, + 117, + 119, 121, - 123, - 127, - 130, - 144, + 122, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -2035,38 +2037,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -2075,167 +2077,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -2243,225 +2245,227 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ 35, - -232, - 100, - -215, + -233, + 101, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - 168, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + 170, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + 249, + 250, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + 267, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - 247, - 248, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - 265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -2471,270 +2475,272 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, - -116, - -117, + -408, + -403, + -328, + -145, + -147, + -116, + -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), - "LOCATION": ( + "ENGINE": ( [ 1, 2, @@ -2758,63 +2764,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -2825,38 +2829,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -2865,167 +2869,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -3033,221 +3037,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ 39, - -232, - -215, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -3257,270 +3263,272 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, + -45, + -19, -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, - -19, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), - "INHERITS": ( + "LOCATION": ( [ 1, 2, @@ -3544,63 +3552,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -3611,38 +3617,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -3651,167 +3657,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -3819,221 +3825,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 41, - -232, - -215, + 40, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -4043,270 +4051,272 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), - "CLUSTER": ( + "INHERITS": ( [ 1, 2, @@ -4330,63 +4340,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -4397,38 +4405,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -4437,167 +4445,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -4605,221 +4613,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ 42, - -232, - -215, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -4829,270 +4839,272 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), - "PARTITION": ( + "CLUSTER": ( [ 1, 2, @@ -5116,63 +5128,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -5183,38 +5193,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -5223,167 +5233,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -5391,221 +5401,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ 43, - -232, - -215, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -5615,278 +5627,278 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), - "ID": ( + "PARTITION": ( [ 1, 2, - 3, 4, 5, 7, - 8, 10, 11, 12, @@ -5900,145 +5912,65 @@ 21, 22, 23, - 24, - 25, - 26, - 30, - 31, - 32, - 33, 34, - 35, 36, 37, 38, - 39, - 40, - 44, + 41, 45, - 46, - 47, 48, - 50, - 52, - 53, - 54, + 51, 55, - 56, - 57, 58, - 59, - 65, - 66, - 67, - 68, - 69, - 70, + 60, 71, 72, 73, - 74, - 75, - 76, - 78, - 79, 80, 81, 82, 83, 84, - 85, - 89, - 90, - 91, - 93, 94, - 95, - 96, - 97, - 98, - 99, - 100, - 103, - 105, - 106, - 107, - 108, 109, 110, - 111, 112, - 113, - 114, - 116, + 115, 117, - 118, 119, - 120, - 122, - 123, + 121, 124, - 125, - 126, - 127, 128, - 129, - 130, - 133, - 135, - 137, - 140, - 141, - 142, - 143, - 144, + 131, 145, 146, 147, - 149, - 150, 151, - 152, 153, - 154, - 156, - 157, + 155, 158, 159, 160, 161, 162, - 163, 164, - 165, - 167, - 168, 169, 170, 171, 172, - 173, 174, - 175, + 176, 177, 179, - 180, - 181, - 182, 183, - 184, 185, - 186, - 187, 188, 189, - 190, - 195, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -6049,60 +5981,38 @@ 210, 211, 212, + 213, 214, - 215, - 216, - 219, - 220, - 221, + 218, 222, - 223, 224, - 225, 226, 227, 228, 229, + 230, 231, - 232, - 233, 234, - 235, 236, 237, 238, 240, - 241, - 242, - 243, - 244, - 245, 247, - 248, - 250, - 252, - 253, - 254, - 255, 256, 257, - 261, - 262, 263, 264, + 265, 266, - 267, - 268, - 269, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -6111,21 +6021,15 @@ 286, 287, 288, + 289, 290, 292, - 294, - 295, - 296, 298, - 299, 300, - 301, 302, - 306, - 307, - 308, + 303, + 304, 309, - 310, 311, 312, 313, @@ -6133,139 +6037,76 @@ 315, 316, 317, - 318, 319, - 320, 321, - 323, - 325, - 326, - 328, - 329, + 322, 331, - 333, - 334, 335, - 336, 337, - 338, - 339, - 340, - 342, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 353, - 354, - 355, + 341, + 352, 356, 357, 358, 359, + 360, 361, - 362, 364, - 365, - 366, - 367, 368, - 369, 370, 371, - 372, 373, 374, - 375, 376, 377, 378, - 379, 380, - 381, 382, - 383, 384, 385, - 386, 387, - 388, - 389, + 390, 391, - 392, - 393, 394, + 395, 396, - 398, - 399, - 400, + 397, 401, 402, - 403, 404, 406, 407, - 408, 409, 411, 412, - 413, 415, - 416, - 417, - 418, 419, 420, 421, - 422, 423, - 424, - 425, 426, 427, 428, - 431, - 432, - 433, + 429, 435, 436, - 437, - 439, + 438, 440, - 441, - 445, - 447, - 449, - 450, - 451, + 444, 452, 453, 454, 455, - 456, - 457, - 458, - 459, - 460, - 461, 462, - 465, - 466, - 467, + 463, + 464, 468, 469, - 470, - 471, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, @@ -6275,21 +6116,14 @@ 487, 488, 489, - 490, 491, 492, 493, 494, - 495, 496, - 498, + 497, 499, - 502, - 503, - 504, - 505, 506, - 507, 508, 509, 510, @@ -6298,106 +6132,56 @@ 513, 514, 515, - 516, 517, 518, - 519, - 520, - 521, - 522, 524, - 526, - 528, - 530, - 531, - 533, + 527, + 529, 534, - 535, 536, - 537, 538, 539, - 540, - 541, - 542, 543, 544, 545, - 546, - 547, - 548, 549, 550, 551, 552, - 553, 554, 555, - 556, 557, - 558, - 559, - 560, 561, - 562, 564, - 565, - 566, - 567, 568, 569, - 570, 571, 572, 573, - 574, + 575, 576, - 577, - 578, - 579, 580, 582, - 583, 585, - 586, - 588, 589, - 591, - 593, - 595, - 596, - 597, - 598, - 600, - 601, - 602, + 592, + 594, 603, 604, 605, - 606, - 607, - 608, - 609, 610, 611, 613, - 614, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, + 624, 625, 626, - 628, - 629, - 630, - 631, - 632, 633, 634, 635, @@ -6407,411 +6191,221 @@ 639, 640, 641, - 643, + 642, 644, - 645, 646, 647, 648, - 649, - 650, - 651, - 652, - 653, 654, 655, 656, 657, 658, 659, - 661, - 662, - 663, - 664, - 665, - 666, - 667, 668, + 669, 670, 671, - 672, - 674, + 673, 675, - 676, 677, 678, - 680, - 681, - 682, + 679, 684, 685, - 686, - 687, - 689, - 690, - 691, - 692, - 694, + 693, 695, - 696, 697, 698, 699, 700, - 701, 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, 720, 721, 722, - 723, - 724, - 725, 726, 727, - 728, - 729, - 730, 731, 732, 733, - 734, - 735, 736, - 738, - 740, - 741, - 742, - 743, - 746, - 747, - 748, - 749, - 750, + 737, + 744, 751, - 752, - 753, - 754, - 755, 756, 758, 759, - 760, - 762, 763, - 764, + 765, 766, 767, - 768, - 769, - 770, - 771, 772, - 773, 774, 775, 776, 777, 778, 779, - 781, + 782, 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, 792, 793, - 794, - 795, - 797, - 799, - 800, - 801, + 796, 802, - 803, 804, 805, + 806, 807, - 808, - 809, - 810, - 811, 812, 813, 814, 815, - 816, 817, - 818, - 820, - 821, - 822, - 823, + 819, 825, 826, - 827, - 829, - 830, - 831, - 832, - 833, - 834, 835, 836, - 837, - 838, - 840, 841, - 842, - 843, 844, - 845, 847, 848, - 849, 850, - 852, + 855, ], [ 44, - -232, - 98, - 109, - 109, - -247, - 109, - -260, + -233, + -216, + -217, + -248, -261, -262, - 109, + -263, -264, - -266, + -265, -267, -268, -269, -270, - 109, - -430, - -340, - 109, - 109, - 109, - 109, - 109, - 148, - 109, + -271, + -311, + -431, + -341, -1, - 109, - 109, - -328, - -8, - 109, - -177, - -176, - 109, - 173, - -47, - 109, - 109, - 109, - 109, - -93, - 109, - 109, - -96, - 191, - -104, - 109, - 109, - 109, - 109, - 109, -218, - 109, - -326, - 109, - 109, - 109, - 109, - 109, - 109, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - 109, - 230, - 109, - 109, - 109, - -58, - 109, - 109, - 109, - -219, - -176, - 109, - 109, - -132, - -358, - -252, - 109, - -231, - -176, - 109, - -235, - 109, - 109, - -246, - -259, - 109, - -283, - 109, - -265, - 109, - 109, - 109, - 109, - 109, - -190, - -329, - -330, - 320, - 109, - 109, - 109, - 109, - -436, - 342, - 109, - -338, - -336, - -356, - 109, - -251, -10, - 109, - -36, - 109, - -37, -11, - -12, - -13, - -180, - 109, - 109, - -55, - 109, - 109, - 109, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - 109, - -86, - 373, - -62, - -63, - -46, - 109, - 109, - -79, - 109, - -85, - 109, - 109, + -111, -87, - -94, - 109, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - 109, - -157, - 109, - -39, - 109, + -96, + -104, + -158, + -160, + -40, -161, -162, - 109, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - 109, - 109, - 109, - 109, - 109, - 109, - 109, - 109, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -49, - -64, - 109, - -16, - -22, - 109, - 109, - 109, - 109, - -136, - -258, - -220, - 109, - -56, - 109, - 109, - 109, - 109, - 109, - -236, - 109, - 109, - 109, - -424, - 109, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - 109, - -419, - -191, + -413, -192, -193, - -196, + -194, -197, - 109, + -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -6821,483 +6415,1697 @@ -210, -211, -212, - -365, - 109, - 109, - 109, - -392, - -29, - 109, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 109, - 109, - 109, - -331, - 109, - 109, - 109, - -173, - 109, + -144, + -310, + -332, + -167, -183, - 109, - 109, - 109, - -225, - -176, - 191, - 109, - 109, - 109, - 109, - 109, - 109, - 109, - 109, - -279, - 109, - 109, - 109, - 109, - -289, - 109, - 109, - 109, - 109, - 109, - -248, - 109, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - 109, - 109, - -181, - 109, - -51, - -54, + -6, + -182, -179, - 109, - 109, - 109, - 109, - 109, - 109, - 109, - 109, - 109, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - 109, - -41, - -75, - -73, - 109, + -443, + -42, + -76, -74, - 109, - -71, - 109, - -65, + -75, + -72, + -66, + -84, -83, - 109, - -82, - 109, - 109, - 109, - -68, - 109, - 109, - -78, - -111, + -179, + -69, + -179, + -79, -112, - 109, - -139, - -149, - 109, - -40, - 109, - -319, - -322, - 109, - 594, - -325, - -20, - 109, - -396, - 109, - 109, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - 109, - -423, - 109, - 109, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -48, - 109, - 109, - 109, - -107, - 109, - 109, - 109, - -255, - 109, - -57, - -134, - -253, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - 109, - 109, - 109, - 109, - 109, - 109, - -429, - -413, + -235, + -430, -414, - 109, - -410, - -301, - -420, - 109, - -194, + -415, + -411, + -302, -195, - 109, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - 109, - 109, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - 109, - 109, - -371, - 109, - -373, - 109, - 109, - 109, - 109, - 109, - 109, - -174, - 109, - -361, + -396, + -398, + -372, + -374, + -168, + -171, + -175, + -176, -362, -363, -364, - -359, - 109, - -222, - 673, - 109, - 109, - 109, - 109, - -238, - -243, - 109, - 109, - 109, - 109, - 109, - -281, + -365, + -360, + -223, + -225, + -244, + -245, + -287, + -282, + -273, + -3, -272, - 109, - 109, - 109, - 109, - -291, - 109, - -335, - -355, - -434, - 109, - -250, - 109, - -7, - -105, + -336, + -356, + -435, + -4, -106, - -50, - 109, - -53, - 109, - 109, - -15, - 109, - 109, - 109, - 109, - 109, - 109, - -72, - 109, - 109, - -66, - -84, - 109, - 109, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - 109, - -70, - -77, - 109, - 109, - 109, - 109, - -156, - 109, - -154, - 109, - -371, - -42, - 109, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - 109, - 109, - 109, - 109, - 109, - -405, + -325, -406, -407, - 109, - 109, - -371, - 109, - -402, - -327, - 109, - -144, - 109, - -146, - 109, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - 109, - 109, - -257, - -131, - -138, - -357, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - 109, - -386, - -391, - -30, - -32, - 109, - 109, - 109, - 109, - 109, - -372, - -374, - -4, - -5, - -6, - -398, - 109, - -371, - 109, - -371, - 109, - -401, - 109, - -334, - -332, - 109, - -171, - 109, - 109, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -239, - -240, - 109, - -280, - -282, - 109, - 109, - 109, - -290, - 109, - -435, - -249, - -45, - 109, - 109, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - 109, - -34, - -443, - -147, - 109, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - 109, - 109, - 109, - -43, + -152, -44, - 109, - 109, - -411, - -21, - -431, - -432, - 109, - 109, - -409, - -375, - 109, - 109, - 109, - 109, - 109, - -135, - -256, - 109, - -371, - -367, - -373, - 109, - 109, - 109, - -388, - 109, - -380, - -380, - 109, - 109, - -165, - -168, - -185, - 109, - 109, - 109, - 109, - -277, - 109, - -273, - -337, - -52, - -295, - -298, - -26, - 109, - 109, - -69, - -141, - 109, - -371, - -367, - 109, - 109, + -45, -19, + -432, -433, - 109, - -367, - -422, - 109, - 109, - -133, - -382, - 109, - -368, - -369, - -370, + -410, + -376, + -103, + -368, -389, - 109, + -381, + -381, + -166, + -169, + -186, + -187, + -278, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, -371, + -390, + -334, + -188, + -229, + -279, + -276, + -62, + -16, + -82, + -189, + -277, + -146, + -153, + -165, + -127, + -154, + -164, + ], + ), + "ID": ( + [ + 1, + 2, + 3, + 4, + 5, + 7, + 8, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 21, + 22, + 23, + 24, + 25, + 26, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 45, + 46, + 47, + 48, + 49, + 51, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 90, + 91, + 92, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 104, + 106, + 107, + 108, 109, + 110, + 111, + 112, + 113, + 114, + 115, + 117, + 118, + 119, + 120, + 121, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 134, + 136, + 138, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 150, + 151, + 152, + 153, + 154, + 155, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 179, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 197, + 199, + 200, + 201, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 216, + 217, + 218, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 242, + 243, + 244, + 245, + 246, + 247, + 249, + 250, + 252, + 254, + 255, + 256, + 257, + 258, + 259, + 263, + 264, + 265, + 266, + 268, + 269, + 270, + 271, + 272, + 274, + 275, + 276, + 277, + 278, + 279, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 292, + 294, + 296, + 297, + 298, + 300, + 301, + 302, + 303, + 304, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 325, + 327, + 328, + 330, + 331, + 333, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 344, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 364, + 365, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 394, + 395, + 396, + 397, + 399, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 409, + 410, + 411, + 412, + 414, + 415, + 416, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 434, + 435, + 436, + 438, + 439, + 440, + 442, + 443, + 444, + 448, + 450, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 477, + 479, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 501, + 502, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 527, + 529, + 531, + 533, + 534, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 579, + 580, + 581, + 582, + 583, + 585, + 586, + 588, + 589, + 591, + 592, + 594, + 596, + 598, + 599, + 600, + 601, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 628, + 629, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 673, + 674, + 675, + 677, + 678, + 679, + 680, + 681, + 683, + 684, + 685, + 687, + 688, + 689, + 690, + 692, + 693, + 694, + 695, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 714, + 715, + 717, + 718, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 741, + 743, + 744, + 745, + 746, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 761, + 762, + 763, + 765, + 766, + 767, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 784, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 800, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 823, + 824, + 825, + 826, + 828, + 829, + 830, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 843, + 844, + 845, + 846, + 847, + 848, + 850, + 851, + 852, + 853, + 855, + ], + [ + 45, + -233, + 99, + 110, + 110, + -248, + 110, + -261, + -262, + -263, + 110, + -265, + -267, + -268, + -269, + -270, + -271, + 110, + -431, + -341, + 110, + 110, + 110, + 110, + 110, + 149, + 110, + -1, + 110, + 110, + -329, + -5, + 110, + 110, + -178, + -177, + 110, + 175, + -48, + 110, + 110, + 110, + 110, + -94, + 110, + 110, + -97, + 193, + -105, + 110, + 110, + 110, + 110, + 110, + -219, + 110, + -327, + 110, + 110, + 110, + 110, + 110, + 110, + -354, + -355, + -441, + -7, + 110, + 232, + 110, + 110, + 110, + -59, + 110, + 110, + 110, + -220, + -177, + 110, + 110, + -133, + -359, + -253, + 110, + -232, + -177, + 110, + -236, + 110, + 110, + -247, + -260, + 110, + -284, + 110, + -266, + 110, + 110, + 110, + 110, + 110, + -191, + -330, + -331, + 322, + 110, + 110, + 110, + 110, + -437, + 344, + 110, + -339, + -337, + -357, + 110, + -252, + -8, + 110, + -37, + 110, + -38, + 110, + -9, + -10, + -11, + -181, + 110, + 110, + -56, + 110, + 110, + 110, + -36, + -81, + -110, + -111, + 110, + -87, + 376, + -63, + -64, + -47, + 110, + 110, + -80, + 110, + -86, + 110, + 110, + -88, + -95, + 110, + -96, + -104, + 110, + -158, + 110, + -40, + 110, + -162, + -163, + 110, + -314, + -315, + -316, + -317, + -318, + -319, + -321, + -322, + 110, + 110, + 110, + 110, + 110, + 110, + 110, + 110, + -348, + -349, + -350, + -351, + -352, + -15, + -50, + -65, + 110, + -14, + -20, + 110, + 110, + 110, + 110, + -137, + -259, + -221, + 110, + -57, + 110, + 110, + 110, + 110, + 110, + -237, + 110, + 110, + 110, + -425, + 110, + -412, + -413, + 110, + -420, + -192, + -193, + -194, + -197, + -198, + 110, + -200, + -201, + -202, + -204, + -205, + -206, + -207, + -208, + -209, + -210, + -211, + -212, + -213, + -366, + 110, + 110, + 110, + -393, + -30, + 110, + -190, + -143, + -144, + 110, + 110, + 110, + -332, + 110, + 110, + 110, + -174, + 110, + -184, + 110, + 110, + 110, + -226, + -177, + 193, + 110, + 110, + 110, + 110, + 110, + 110, + 110, + 110, + -280, + 110, + 110, + 110, + 110, + -290, + 110, + 110, + 110, + 110, + 110, + -249, + 110, + -2, + 110, + 110, + -6, + -182, + 110, + -52, + -55, + -180, + 110, + 110, + 110, + 110, + 110, + 110, + 110, + 110, + 110, + -442, + -443, + 110, + -42, + -76, + -74, + 110, + -75, + 110, + -72, + 110, + -66, + -84, + 110, + -83, + 110, + 110, + 110, + -69, + 110, + 110, + -79, + -112, + -113, + 110, + -140, + -150, + 110, + -41, + 110, + -320, + -323, + 110, + 597, + -326, + -18, + 110, + -397, + 110, + 110, + -404, + -405, + -409, + 110, + -424, + 110, + 110, + -344, + -343, + -347, + -346, + -49, + 110, + 110, + 110, + -108, + 110, + 110, + 110, + -256, + 110, + -58, + -135, + -254, + -230, + -231, + -234, + -235, + 110, + 110, + 110, + 110, + 110, + 110, + -430, + -414, + -415, + 110, + -411, + -302, + -421, + 110, + -195, + -196, + 110, + -391, + -203, + -32, + -34, + -438, + -367, + -394, + -159, + -372, + -385, + -386, + -388, + 110, + 110, + -374, + -395, + -396, + 110, + 110, + -372, + 110, + -374, + 110, + 110, + 110, + 110, + 110, + 110, + -175, + 110, + -362, + -363, + -364, + -365, + -360, + 110, + -223, + 676, + 110, + 110, + 110, + 110, + -239, + -244, + 110, + 110, + 110, + 110, + 110, + -282, + -273, + 110, + 110, + 110, + 110, + -292, + 110, + -336, + -356, + -435, + 110, + -251, + 110, + -4, + -106, + -107, + -51, + 110, + -54, + 110, + 110, + -13, + 110, + 110, + 110, + 110, + 110, + 110, + -73, + 110, + 110, + -67, + -85, + 110, + 110, + -179, + -68, + 110, + -71, + -78, + 110, + 110, + 110, + 110, + -157, + 110, + -155, + 110, + -372, + -43, + 110, + -324, + -325, + 110, + 110, + 110, + 110, + 110, + -406, + -407, + -408, + 110, + 110, + -372, + 110, + -403, + -328, + 110, + -145, + 110, + -147, + 110, + -116, + -117, + -118, + -119, + -120, + -109, + -39, + 110, + 110, + -258, + -132, + -139, + -358, + -238, + -255, + -426, + -427, + -428, + -429, + -418, + -419, + -417, + -416, + 110, + -387, + -392, + -31, + -33, + 110, + 110, + 110, + 110, + 110, + -373, + -375, + -27, + -28, + -29, + -399, + 110, + -372, + 110, + -372, + 110, + -402, + 110, + -335, -333, - 109, + 110, + -172, + 110, + 110, + -227, -228, - -278, - 109, - -275, - 109, + -242, + -243, + -240, + -241, + 110, + -281, + -283, + 110, + 110, + 110, + -291, + 110, + -436, + -250, + -46, + 110, + 110, + -21, + -23, + 110, + -35, + -444, + -148, + 110, + -149, + -60, -61, - 109, - 109, - 109, + -89, + -91, + -90, + -92, + -114, + -115, + -128, + -129, + -156, + -151, + -152, + 110, + 110, + 110, + -44, + -45, + 110, + 110, + -412, + -19, + -432, + -433, + 110, + 110, + -410, + -376, + 110, + 110, + 110, + 110, + 110, + -136, + -257, + 110, + -372, + -368, + -374, + 110, + 110, + 110, + -389, + 110, + -381, + -381, + 110, + 110, + -166, + -169, + -186, + 110, + 110, + 110, + 110, + -278, + 110, + -274, + -338, + -53, + -296, + -299, + -24, + 110, + 110, + -70, + -142, + 110, + -372, + -368, + 110, + 110, + -17, + -434, + 110, + -368, + -423, + 110, + 110, + -134, + -383, + 110, -369, - -18, - -81, - 109, - -137, - -367, - 109, - 109, -370, - 109, + -371, + -390, + 110, + -372, + 110, + -334, + 110, + -229, + -279, + 110, -276, - 109, - 109, - -367, - 109, - -145, - 109, - -152, + 110, + -62, + 110, + 110, + 110, + -370, + -16, + -82, + 110, + -138, + -368, + 110, + 110, + -371, + 110, + -277, + 110, + 110, + -368, + 110, + -146, + 110, + -153, + -372, + 110, + -165, + -127, + -154, -371, - 109, + 110, + 110, -164, - -126, - -153, - -370, - 109, - 109, - -163, ], ), "INTO": ( @@ -7324,63 +8132,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -7391,38 +8197,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -7431,167 +8237,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -7599,221 +8405,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 46, - -232, - -215, + 47, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -7823,267 +8631,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "WITH": ( @@ -8110,64 +8920,62 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 75, - 79, + 73, + 76, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -8178,38 +8986,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, - 234, - 235, - 236, - 238, - 245, - 254, - 255, - 261, - 262, + 230, + 231, + 234, + 236, + 237, + 238, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -8218,167 +9026,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -8386,222 +9194,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 49, - -232, - -215, + 50, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - 223, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, + 225, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + 305, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - 303, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - 303, - -313, + -163, + 305, -314, -315, -316, -317, -318, - -320, - 410, - -213, - -341, - -344, - -347, + -319, + -321, + 413, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - 303, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + 305, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -8611,267 +9421,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 303, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + 305, + -332, + -167, -183, - -221, - -225, - -176, - -285, - 303, - -279, - 303, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + 305, + -280, + 305, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, - 303, - -286, - -281, - -272, - 303, - 303, - -335, - -355, - -434, - -7, - -105, + -365, + -360, + -223, + -225, + -244, + 305, + -287, + -282, + -273, + 305, + 305, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "TBLPROPERTIES": ( @@ -8898,63 +9710,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -8965,38 +9775,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -9005,167 +9815,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -9173,221 +9983,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 51, - -232, - -215, + 52, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -9397,267 +10209,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, - -395, - -397, - -371, - -373, - -167, - -170, - -174, + -159, + -372, + -385, + -386, + -388, + -382, + -374, + -395, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "DATA_RETENTION_TIME_IN_DAYS": ( @@ -9684,63 +10498,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -9751,38 +10563,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -9791,167 +10603,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -9959,221 +10771,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 52, - -232, - -215, + 53, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -10183,267 +10997,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, + -429, + -418, + -419, -417, - -418, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "ON": ( @@ -10471,63 +11287,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -10538,39 +11352,39 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 246, - 254, - 255, - 261, - 262, + 240, + 247, + 248, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -10579,172 +11393,172 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 343, - 350, - 354, - 355, + 337, + 341, + 345, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 431, - 432, - 433, + 427, + 428, + 429, + 434, 435, - 437, - 441, - 442, - 443, - 449, - 450, - 451, + 436, + 438, + 440, + 444, + 445, + 446, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, 564, - 565, - 566, + 567, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -10752,224 +11566,226 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, - 713, 714, 715, + 716, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 45, - -232, - -215, + 46, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, - 143, + -271, + -311, + -431, + -341, + 144, -1, - -217, - -328, - -8, - -177, - 166, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + 168, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + 260, + -284, + -266, + 299, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - 258, - -283, - -265, - 297, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - 297, - -313, + -163, + 299, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -304, - -236, - 297, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -305, + -237, + 299, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, - 258, - -203, + -201, + 260, -204, -205, -206, @@ -10979,273 +11795,275 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 297, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + 299, + -332, + -167, -183, - -221, - -225, - -176, - -285, - 297, - -279, - 297, - -306, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + 299, + -280, + 299, + -307, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - 258, - 595, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + 260, + 598, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - 617, - -439, - -107, - -97, - -99, - -57, - -305, - -307, - -229, + 620, + -440, + -108, + -98, + -100, + -58, + -306, + -308, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - 258, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + 260, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, - 297, - -286, - -281, - -272, - 297, - 297, - -335, - -355, - -434, - -7, - -105, + -365, + -360, + -223, + -225, + -244, + 299, + -287, + -282, + -273, + 299, + 299, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - 705, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, + 708, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, - 258, - -405, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, + -324, + 260, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - 780, - -127, + -115, + 783, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "MAX_DATA_EXTENSION_TIME_IN_DAYS": ( @@ -11272,63 +12090,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -11339,38 +12155,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -11379,167 +12195,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -11547,221 +12363,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 53, - -232, - -215, + 54, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, - -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, - -10, - -36, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, -37, + -38, + -9, + -10, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -11771,267 +12589,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "CHANGE_TRACKING": ( @@ -12058,63 +12878,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -12125,38 +12943,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -12165,167 +12983,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -12333,491 +13151,495 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 55, - -232, - -215, + 56, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, -207, -208, -209, - -210, - -211, - -212, - -365, - -392, - -29, - -189, - -142, + -210, + -211, + -212, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "TEXTIMAGE_ON": ( @@ -12844,63 +13666,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -12911,38 +13731,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -12951,167 +13771,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -13119,221 +13939,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 56, - -232, - -215, + 57, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -13343,267 +14165,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "COMMENT": ( @@ -13630,63 +14454,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -13697,38 +14519,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -13737,168 +14559,168 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 520, - 521, + 517, + 518, + 523, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -13906,222 +14728,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, + 677, 678, + 679, 681, - 682, - 690, - 692, - 694, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 58, - -232, - -215, + 59, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + 291, + 291, + 323, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - 289, - 289, - 321, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - 289, - -313, + -163, + 291, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - 289, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + 291, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -14131,269 +14955,271 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 289, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + 291, + -332, + -167, -183, - -221, - -225, - -176, - -285, - 289, - -279, - 289, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + 291, + -280, + 291, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - 321, - 289, - -243, - 289, - -286, - -281, - -272, - 289, - 289, - -335, - -355, - -434, - -7, - -105, + -365, + -360, + -223, + 323, + 291, + -244, + 291, + -287, + -282, + -273, + 291, + 291, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - 289, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + 291, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - 289, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + 291, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - 289, - -150, + -129, + 291, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "MAP": ( @@ -14420,63 +15246,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -14487,38 +15311,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -14527,167 +15351,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -14695,221 +15519,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 60, - -232, - -215, + 61, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -14919,267 +15745,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "SKEWED": ( @@ -15206,63 +16034,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -15273,38 +16099,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -15313,167 +16139,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -15481,221 +16307,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 61, + 62, + -233, + -216, + -217, + -248, + -261, + -262, + -263, + -264, + -265, + -267, + -268, + -269, + -270, + -271, + -311, + -431, + -341, + -1, + -218, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, + -353, + -354, + -355, + -441, + -7, + -59, -232, - -215, - -216, + -177, + -236, -247, -260, - -261, - -262, - -263, - -264, + -284, -266, - -267, - -268, - -269, - -270, - -310, - -430, - -340, - -1, - -217, - -328, + -309, + -191, + -224, + -339, + -337, + -357, -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, - -218, - -312, - -326, - -352, - -353, - -354, - -440, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -15705,267 +16533,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, + -389, + -381, + -381, + -166, + -169, + -186, + -187, + -278, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, -369, -370, - -389, - -333, - -187, - -228, - -278, - -275, - -61, - -18, - -81, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "COLLECTION": ( @@ -15992,63 +16822,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -16059,38 +16887,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -16099,167 +16927,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -16267,221 +17095,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 62, - -232, - -215, + 63, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -16491,267 +17321,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "STORED": ( @@ -16778,63 +17610,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, - 189, - 190, - 197, - 198, + 185, + 188, + 189, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -16845,38 +17675,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -16885,167 +17715,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -17053,221 +17883,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 63, - -232, - -215, + 64, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -17277,267 +18109,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "PARTITIONED": ( @@ -17564,63 +18398,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -17631,38 +18463,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -17671,167 +18503,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, - 435, - 437, - 441, - 449, - 450, - 451, + 427, + 428, + 429, + 435, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -17839,221 +18671,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 64, - -232, - -215, + 65, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -18063,267 +18897,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "CATALOG": ( @@ -18350,63 +19186,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -18417,38 +19251,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -18457,167 +19291,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -18625,221 +19459,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 65, - -232, - -215, + 66, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -18849,267 +19685,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "FILE_FORMAT": ( @@ -19136,63 +19974,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -19203,38 +20039,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -19243,167 +20079,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -19411,221 +20247,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 66, - -232, - -215, + 67, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -19635,267 +20473,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, - -114, - -127, - -128, - -155, - -150, - -151, - -43, - -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -90, + -92, + -114, + -115, + -128, + -129, + -156, + -151, + -152, + -44, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "STAGE_FILE_FORMAT": ( @@ -19922,63 +20762,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -19989,38 +20827,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -20029,167 +20867,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -20197,221 +21035,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 67, - -232, - -215, + 68, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, - -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, - -10, - -36, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, -37, - -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -38, + -9, + -10, + -11, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -20421,267 +21261,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "TABLE_FORMAT": ( @@ -20708,63 +21550,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, - 81, - 82, - 83, - 93, - 108, - 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 81, + 82, + 83, + 84, + 94, + 109, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -20775,38 +21615,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -20815,167 +21655,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -20983,221 +21823,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 68, - -232, - -215, + 69, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -21207,267 +22049,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "AUTO_REFRESH": ( @@ -21494,63 +22338,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -21561,38 +22403,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -21601,167 +22443,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, - 361, - 365, - 367, + 359, + 360, + 361, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -21769,221 +22611,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 69, - -232, - -215, + 70, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -21993,267 +22837,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, - -343, - -342, - -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -405, + -409, + -424, + -344, + -343, + -347, + -346, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "COMMA": ( @@ -22280,63 +23126,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -22347,40 +23191,40 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, + 265, 266, - 267, 268, 269, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -22389,118 +23233,118 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 324, - 325, - 329, - 333, + 321, + 322, + 326, + 327, + 331, 335, - 339, - 346, - 350, - 354, - 355, + 337, + 341, + 348, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, + 427, + 428, 429, - 430, 432, 433, - 434, 435, + 436, 437, - 441, - 449, - 450, - 451, + 438, + 440, + 444, 452, + 453, 454, 455, - 459, - 460, - 461, - 465, - 466, - 467, + 457, + 458, + 462, + 463, + 464, + 468, 469, 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, @@ -22509,81 +23353,81 @@ 513, 514, 515, + 516, 517, 518, - 519, 520, 521, 522, 523, 524, + 525, 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, + 538, + 539, 543, + 544, 545, 546, - 547, 548, 549, + 550, 551, 552, - 553, 554, 555, 556, + 557, 558, 559, - 560, 561, + 562, 563, - 565, + 564, 566, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, 580, - 581, 582, 583, 584, + 585, 586, + 587, 589, - 591, - 596, - 597, + 592, + 594, + 599, 600, - 601, - 602, 603, + 604, 605, - 607, + 606, 608, - 609, 610, + 611, 612, 613, 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -22593,262 +23437,264 @@ 639, 640, 641, + 642, 643, 644, - 645, + 646, + 647, 648, 651, - 652, - 653, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, 677, 678, 679, + 680, 681, 682, 684, - 690, - 692, - 694, + 685, + 687, + 693, 695, - 696, 697, 698, 699, 700, 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, 720, + 721, + 722, 723, - 724, 726, 727, - 728, 729, 730, 731, + 732, 733, 734, 736, 737, 739, - 741, - 747, - 748, + 740, + 742, + 744, + 750, 751, - 753, 754, - 755, 756, - 760, - 762, + 757, + 758, + 759, 763, - 764, + 765, + 766, 767, - 769, 770, - 771, 772, 773, 774, 775, 776, + 777, + 778, 779, - 781, 782, + 784, 785, 788, - 789, - 790, 791, 792, 793, 794, + 795, 796, + 797, 799, - 801, 802, - 803, 804, + 805, + 806, 807, - 808, - 809, 810, 811, 812, 813, 814, + 815, 816, + 817, 819, 822, - 823, - 824, + 825, + 826, 827, - 832, - 833, + 830, 835, 836, - 837, 838, 839, + 840, 841, 842, - 843, 844, 845, 846, 847, 848, + 849, 850, - 852, + 851, + 853, + 855, ], [ - 71, - -232, - -215, + 72, + -233, -216, - 113, - -260, + -217, + 114, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - 361, - -35, - -80, - -109, + -181, + -297, + 364, + -36, + -81, -110, - -86, - -62, - -63, - 376, - 383, - -85, + -111, -87, - -94, + -63, + -64, + 379, + 386, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - 462, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + 465, -412, - 468, - -419, - -191, + -413, + 471, + -420, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -22858,342 +23704,344 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - 361, - -296, - -285, - -274, - -279, - -14, - 462, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + 364, + -297, + -286, + -275, + -280, + -12, + 465, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - 462, - 462, - -411, - -441, + -52, + -55, + -180, + -295, + 465, + 465, + -412, -442, - -41, - 383, - 376, - -74, - -71, - -65, + -443, + -42, + 386, + 379, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - 578, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + 581, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - 614, - -129, - -439, - -107, - 361, - -97, - -99, - -57, - -229, + 617, + -130, + -440, + -108, + 364, + -98, + -100, + -58, -230, - -233, + -231, -234, - 462, - 462, - -429, - -413, + -235, + 465, + 465, + -430, -414, - -410, - -301, - -420, - -194, + -415, + -411, + -302, + -421, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - 462, - -174, + -396, + -398, + -372, + -374, + -168, + 465, -175, - -361, + -176, -362, -363, -364, - -359, - 671, - -222, - -224, - -411, - 462, - 677, - -238, - -243, - -178, - -293, + -365, + -360, + 674, + -223, + -225, + -412, + 465, + 680, + -239, -244, - -286, - -281, - -272, + -179, + -294, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - 462, - 462, - -7, - -105, + -272, + -336, + -356, + -435, + 465, + 465, + -4, -106, - -50, - -53, - -300, - 462, - -15, - 462, - 462, - 462, - 462, - 462, - -72, - 614, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + 465, + -13, + 465, + 465, + 465, + 465, + 465, + -73, + 617, -67, - -70, - -77, - -140, - -156, - 462, - 720, - -154, - -411, - -377, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + 465, + 723, + -155, + -412, + -378, + -43, -324, - 462, - 462, - -405, + -325, + 465, + 465, -406, -407, - 462, - -411, - -402, - -327, - -178, - -144, - -121, - -146, - -115, + -408, + 465, + -412, + -403, + -328, + -179, + -145, + -122, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - 468, - -386, - -391, - -30, - -32, - 462, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + 471, + -387, + -392, + -31, + -33, + 465, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -239, + -243, -240, - -292, - -280, - -282, - 462, - -435, - -45, - -299, - -297, + -241, + -293, + -281, + -283, + 465, + -436, + -46, + -300, + -298, + -21, -23, - -25, - 462, - -34, - -443, - -147, + 465, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -379, - -43, - -44, - 468, - -411, - -21, - -431, - -432, - 462, - -409, - -375, - 462, - -120, - -130, - -102, - -411, - -367, - 462, - -388, - 462, - -380, + -152, -380, - -165, - -168, - -185, - -186, - 462, - -277, - 462, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, - -378, - -411, - 468, + -44, + -45, + 471, + -412, -19, + -432, -433, - 462, - -416, - -422, - -178, - -123, - -382, + 465, + -410, + -376, + 465, + -121, + -131, + -103, + -412, -368, - -369, - -370, + 465, -389, - -411, - 462, - -333, + 465, + -381, + -381, + -166, + -169, + -186, -187, - -228, + 465, -278, - 462, - -275, - -61, - -376, - -18, - -81, - -122, - -416, + 465, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -379, + -412, + 471, + -17, + -434, + 465, + -417, + -423, + -179, + -124, + -383, + -369, + -370, + -371, + -390, + -412, + 465, + -334, -188, + -229, + -279, + 465, -276, - 462, - -416, - -178, - -145, - -125, - -152, - -411, - 462, - -164, + -62, + -377, + -16, + -82, + -123, + -417, + -189, + -277, + 465, + -417, + -179, + -146, -126, - -124, -153, - 849, - 462, - -163, + -412, + 465, + -165, + -127, + -125, + -154, + 852, + 465, + -164, ], ), "DEFAULT": ( @@ -23220,63 +24068,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -23287,38 +24133,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -23327,167 +24173,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -23495,221 +24341,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 73, - -232, - -215, + 74, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + 296, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - 294, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - 294, - -313, + -163, + 296, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - 294, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + 296, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -23719,267 +24567,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 294, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + 296, + -332, + -167, -183, - -221, - -225, - -176, - -285, - 294, - -279, - 294, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + 296, + -280, + 296, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, - -395, - -397, - -371, - -373, - -167, - -170, - -174, - -175, - -361, - -362, - -363, - -364, - -359, - -222, - -224, - -243, - 294, - -286, - -281, - -272, - 294, - 294, - -335, - -355, - -434, - -7, - -105, + -159, + -372, + -385, + -386, + -388, + -382, + -374, + -395, + -396, + -398, + -372, + -374, + -168, + -171, + -175, + -176, + -362, + -363, + -364, + -365, + -360, + -223, + -225, + -244, + 296, + -287, + -282, + -273, + 296, + 296, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "RP": ( @@ -24006,63 +24856,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -24073,40 +24921,40 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, + 265, 266, - 267, 268, 269, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -24115,130 +24963,130 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 324, - 325, - 329, - 333, + 321, + 322, + 326, + 327, + 331, 335, - 339, - 346, - 350, + 337, + 341, + 348, 352, 354, - 355, 356, 357, 358, 359, 360, 361, + 362, 363, - 365, - 367, + 364, + 366, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, - 389, 390, 391, 392, 393, 394, - 398, - 399, + 395, + 396, + 397, 401, 402, - 403, 404, + 405, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, + 427, 428, 429, - 430, + 431, 432, 433, - 434, 435, + 436, 437, - 441, - 449, - 450, - 451, + 438, + 440, + 444, 452, + 453, 454, 455, - 459, - 460, - 461, + 457, + 458, + 462, 463, 464, - 465, 466, 467, + 468, 469, 470, 472, 473, - 474, + 475, 476, - 478, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 501, - 503, - 505, + 497, + 499, + 504, 506, - 507, 508, 509, 510, @@ -24247,31 +25095,31 @@ 513, 514, 515, + 516, 517, 518, - 519, 520, 521, 522, 523, 524, + 525, 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, + 538, + 539, 543, + 544, 545, 546, - 547, 548, 549, + 550, 551, 552, - 553, 554, 555, 556, @@ -24282,18 +25130,18 @@ 561, 562, 563, + 564, 565, 566, 568, 569, - 570, + 571, 572, 573, 575, - 577, - 579, + 576, + 578, 580, - 581, 582, 583, 584, @@ -24302,33 +25150,33 @@ 587, 588, 589, + 590, 591, - 596, - 597, + 592, + 594, + 599, 600, - 601, - 602, 603, 604, 605, + 606, 607, 608, - 609, 610, + 611, 612, 613, 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -24338,42 +25186,42 @@ 639, 640, 641, + 642, 643, 644, - 645, 646, + 647, 648, - 650, + 649, 651, - 652, 653, 654, 655, 656, 657, 658, + 659, + 660, 661, - 662, + 664, 665, - 666, - 667, 668, 669, 670, + 671, 672, - 674, + 673, 675, - 676, 677, 678, 679, + 680, 681, 682, 684, - 690, - 692, + 685, + 687, 693, - 694, 695, 696, 697, @@ -24381,9 +25229,9 @@ 699, 700, 701, + 702, 703, 704, - 705, 706, 707, 708, @@ -24391,32 +25239,32 @@ 710, 711, 712, + 713, 714, 715, 717, 718, - 719, 720, 721, 722, 723, 724, + 725, 726, 727, - 728, 729, 730, 731, + 732, 733, 734, - 735, 736, 737, + 738, 739, - 741, - 747, - 748, - 749, + 740, + 742, + 744, 750, 751, 752, @@ -24424,28 +25272,28 @@ 754, 755, 756, + 757, + 758, 759, - 760, - 761, 762, 763, 764, 765, + 766, 767, - 769, + 768, 770, - 771, 772, 773, 774, 775, 776, + 777, + 778, 779, - 781, 782, 784, 785, - 786, 787, 788, 789, @@ -24454,174 +25302,176 @@ 792, 793, 794, + 795, 796, + 797, 799, - 800, - 801, 802, 803, 804, + 805, + 806, 807, - 808, - 809, 810, 811, 812, 813, 814, + 815, 816, + 817, 819, - 820, - 821, 822, 823, 824, 825, + 826, 827, + 828, 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, ], [ 37, - -232, - -215, + -233, -216, - 114, - -260, + -217, + 115, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - 377, - 382, - -85, + -111, -87, - -94, + -63, + -64, + 380, + 385, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - 466, - -419, - -191, + -413, + 469, + -420, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -24631,389 +25481,391 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - 521, - -296, - -285, - -274, - -279, - -14, - 542, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + 524, + -297, + -286, + -275, + -280, + -12, + 545, -2, - 546, - -181, - -178, - -51, - -54, + 549, + -6, + -182, + -179, + -52, + -55, + -180, -179, - -178, - 551, - -294, 554, - -24, - -27, - -411, - -441, + -295, + 557, + -22, + -25, + -412, -442, - -41, - 382, - 377, - -74, - -71, - 565, + -443, + -42, + 385, + 380, + -75, + -72, + 568, + -84, -83, - -82, - -178, - -68, - -178, - 572, - -178, - -78, - -111, + -179, + -69, + -179, + 575, + -179, + -79, -112, - -139, - 579, - -40, - 586, - -319, - -322, - -214, - -325, - -20, - -396, - 601, - 602, - -408, - -423, + -113, + -140, + 582, + -41, + 589, + -320, + -323, + -215, + -326, + -18, + -397, + 604, + 605, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - 610, 613, - -129, - -439, - -107, - 621, - -97, - -99, - -57, - -229, + 616, + -130, + -440, + -108, + 624, + -98, + -100, + -58, -230, - -233, + -231, -234, - 631, - 632, - -429, - -413, + -235, + 634, + 635, + -430, -414, - 638, - 639, - -410, - -301, - -420, - -194, + -415, + 641, + 642, + -411, + -302, + -421, -195, - -390, - 643, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + 646, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - 665, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + 668, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 670, - -222, - -224, - -411, - 675, - 676, - -238, - -243, - -178, - -293, + -365, + -360, + 673, + -223, + -225, + -412, + 678, + 679, + -239, -244, - -286, - -281, - -272, + -179, + -294, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - 690, - 692, - -7, - -105, - -106, - -50, - -53, - -300, + -272, + -336, + -356, + -435, + 693, 695, - -15, - 696, - 697, - 638, - -28, + -4, + -106, + -107, + -51, + -54, + -301, + 698, + -13, 699, 700, - -72, - 701, + 641, + -26, + 702, 703, - -66, - -84, - -92, - -178, + -73, + 704, + 706, -67, - -70, - -77, - 713, - -140, - -156, - 718, - 719, - -154, - -411, - -377, - -371, - -42, - 723, - 724, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + 716, + -141, + -157, + 721, + 722, + -155, + -412, + -378, + -372, + -43, + 726, + 727, -324, - 729, - 730, - -405, + -325, + 732, + 733, -406, -407, - 733, - 734, - -371, - -402, - -327, - -178, - -144, - -121, - -146, - -115, + -408, + 736, + 737, + -372, + -403, + -328, + -179, + -145, + -122, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -421, - -386, - -391, - -30, - -32, - 748, - 753, - 755, - -372, - -374, - -4, - -5, - -6, - -398, + -422, + -387, + -392, + -31, + -33, + 751, 756, - -371, - -371, - 760, - -334, - -332, - -169, - -171, + 758, + -373, + -375, + -27, + -28, + -29, + -399, + 759, + -372, + -372, 763, - -184, - -226, + -335, + -333, + -170, + -172, + 766, + -185, -227, - -241, + -228, -242, - -239, + -243, -240, - -292, - -280, - -282, - 769, - -435, - -45, - 773, - -299, - -297, - -23, - -25, + -241, + -293, + -281, + -283, + 772, + -436, + -46, 776, - -34, - -443, - -147, + -300, + -298, + -21, + -23, + 779, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - 779, - -113, + -90, + -92, + 782, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -379, - 638, - 786, - -43, - -44, + -152, + -380, + 641, 789, - -411, - -21, - -431, - -432, - 790, - -409, - -375, + -44, + -45, 792, + -412, + -19, + -432, + -433, 793, - -120, - -130, - -102, - -371, - -367, - 801, - 802, - 803, - 755, - -388, + -410, + -376, + 795, + 796, + -121, + -131, + -103, + -372, + -368, 804, - -380, - -380, - 748, - -165, - 809, - -168, - -185, - -186, - 810, + 805, + 806, + 758, + -389, + 807, + -381, + -381, + 751, + -166, 812, - -277, - 814, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, - -378, - 819, - -371, - -42, - 821, + -169, + -186, + -187, + 813, + 815, + -278, + 817, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -379, 822, - -19, - -433, - 823, - -367, - -422, - -178, - -123, - -382, - 827, + -372, + -43, + 824, + 825, + -17, + -434, + 826, -368, + -423, + -179, + -124, + -383, + 830, -369, -370, - -389, -371, - 831, - -333, - -187, - -228, - -278, - 833, - -275, - -61, - -376, - 836, - -44, - -18, - -81, - -122, - 838, - -367, - 792, - 844, + -390, + -372, + 834, + -334, -188, + -229, + -279, + 836, -276, - 845, - -42, - -178, - -145, - -125, - -152, - -371, + -62, + -377, + 839, + -45, + -16, + -82, + -123, + 841, + -368, + 795, + 847, + -189, + -277, 848, - -164, + -43, + -179, + -146, -126, - -124, -153, - -370, + -372, 851, - 852, - -163, + -165, + -127, + -125, + -154, + -371, + 854, + 855, + -164, ], ), "INCREMENT": ( @@ -25040,63 +25892,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -25107,38 +25957,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -25147,167 +25997,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -25315,221 +26165,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 74, - -232, - -215, + 75, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -25539,267 +26391,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, - -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -272, + -336, + -356, + -435, + -4, + -106, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "START": ( @@ -25826,63 +26680,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -25893,38 +26745,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -25933,167 +26785,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -26101,221 +26953,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 75, - -232, - -215, + 76, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -26325,267 +27179,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, - -242, - -280, - -282, - -435, - -45, - -299, - -297, + -228, + -242, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "MINVALUE": ( @@ -26612,64 +27468,62 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 77, - 79, + 73, + 78, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -26680,38 +27534,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -26720,167 +27574,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -26888,222 +27742,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 76, - -232, - -215, + 77, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - 225, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, + 227, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -27113,267 +27969,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "NO": ( @@ -27400,63 +28258,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -27467,38 +28323,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -27507,167 +28363,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -27675,222 +28531,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 77, - -232, - -215, + 78, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, - -321, - -213, - -341, - -344, - -347, - -348, - -349, - -350, - -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -319, + -321, + -322, + -214, + -342, + -345, + -348, + -349, + -350, + -351, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - 475, - -204, + -202, + 478, -205, -206, -207, @@ -27899,267 +28757,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "MAXVALUE": ( @@ -28186,64 +29046,62 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 77, - 79, + 73, + 78, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -28254,38 +29112,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -28294,167 +29152,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -28462,222 +29320,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 78, - -232, - -215, + 79, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - 226, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, + 228, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -28687,267 +29547,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "CACHE": ( @@ -28974,63 +29836,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -29041,38 +29901,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -29081,167 +29941,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -29249,221 +30109,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 79, - -232, - -215, + 80, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -29473,267 +30335,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, - -395, - -397, - -371, - -373, - -167, - -170, - -174, + -159, + -372, + -385, + -386, + -388, + -382, + -374, + -395, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "NOORDER": ( @@ -29760,63 +30624,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -29827,38 +30689,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -29867,167 +30729,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -30035,221 +30897,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 80, - -232, - -215, + 81, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + 304, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - 302, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - 302, - -313, + -163, + 304, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - 302, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + 304, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -30259,267 +31123,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 302, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + 304, + -332, + -167, -183, - -221, - -225, - -176, - -285, - 302, - -279, - 302, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + 304, + -280, + 304, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, - 302, - -286, - -281, - -272, - 302, - 302, - -335, - -355, - -434, - -7, - -105, + -365, + -360, + -223, + -225, + -244, + 304, + -287, + -282, + -273, + 304, + 304, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "ORDER": ( @@ -30546,63 +31412,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -30613,38 +31477,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -30653,167 +31517,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -30821,221 +31685,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 81, - -232, - -215, + 82, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + 303, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - 301, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - 301, - -313, + -163, + 303, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - 301, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + 303, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -31045,267 +31911,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 301, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + 303, + -332, + -167, -183, - -221, - -225, - -176, - -285, - 301, - -279, - 301, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + 303, + -280, + 303, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, - 301, - -286, - -281, - -272, - 301, - 301, - -335, - -355, - -434, - -7, - -105, + -365, + -360, + -223, + -225, + -244, + 303, + -287, + -282, + -273, + 303, + 303, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, - -60, - -88, - -90, - -89, - -91, - -113, - -114, - -127, - -128, - -155, - -150, - -151, - -43, - -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -149, + -60, + -61, + -89, + -91, + -90, + -92, + -114, + -115, + -128, + -129, + -156, + -151, + -152, + -44, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "DQ_STRING": ( @@ -31343,19 +32211,19 @@ 38, 39, 40, - 44, + 41, 45, - 47, + 46, 48, - 50, - 52, + 49, + 51, 53, 54, 55, 56, 57, - 59, - 65, + 58, + 60, 66, 67, 68, @@ -31367,17 +32235,17 @@ 74, 75, 76, - 78, + 77, 79, 80, 81, 82, 83, 84, - 89, + 85, 90, 91, - 93, + 92, 94, 95, 96, @@ -31385,8 +32253,8 @@ 98, 99, 100, - 103, - 105, + 101, + 104, 106, 107, 108, @@ -31396,12 +32264,12 @@ 112, 113, 114, - 116, + 115, 117, 118, 119, 120, - 122, + 121, 123, 124, 125, @@ -31410,10 +32278,10 @@ 128, 129, 130, - 133, - 135, - 137, - 140, + 131, + 134, + 136, + 138, 141, 142, 143, @@ -31421,13 +32289,13 @@ 145, 146, 147, - 149, + 148, 150, 151, 152, 153, 154, - 156, + 155, 157, 158, 159, @@ -31437,17 +32305,17 @@ 163, 164, 165, + 166, 167, - 168, 169, 170, 171, 172, + 173, 174, - 175, + 176, 177, 179, - 180, 181, 182, 183, @@ -31459,12 +32327,12 @@ 189, 190, 191, - 195, + 192, + 193, 197, - 198, 199, + 200, 201, - 202, 203, 204, 205, @@ -31475,11 +32343,11 @@ 210, 211, 212, + 213, 214, - 215, 216, - 219, - 220, + 217, + 218, 221, 222, 223, @@ -31489,46 +32357,46 @@ 227, 228, 229, + 230, 231, - 232, 233, 234, 235, 236, 237, 238, + 239, 240, - 241, 242, 243, 244, 245, + 246, 247, - 248, + 249, 250, 252, - 253, 254, 255, 256, 257, - 261, - 262, + 258, + 259, 263, 264, + 265, 266, - 267, 268, 269, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -31537,18 +32405,18 @@ 286, 287, 288, + 289, 290, 292, 294, - 295, 296, + 297, 298, - 299, 300, 301, 302, - 306, - 307, + 303, + 304, 308, 309, 310, @@ -31562,41 +32430,41 @@ 318, 319, 320, - 323, + 321, + 322, 325, - 326, + 327, 328, - 329, + 330, 331, 333, - 334, 335, 336, 337, 338, 339, 340, + 341, 342, 344, - 345, 346, 347, 348, 349, 350, 351, + 352, 353, - 354, 355, 356, 357, 358, 359, + 360, 361, 362, 364, 365, - 366, 367, 368, 369, @@ -31620,28 +32488,28 @@ 387, 388, 389, + 390, 391, 392, - 393, 394, + 395, 396, - 398, + 397, 399, - 400, 401, 402, 403, 404, + 405, 406, 407, - 408, 409, + 410, 411, 412, - 413, + 414, 415, 416, - 417, 418, 419, 420, @@ -31653,20 +32521,20 @@ 426, 427, 428, + 429, + 430, 431, - 432, - 433, + 434, 435, 436, - 437, + 438, 439, 440, - 441, - 445, - 447, - 449, + 442, + 443, + 444, + 448, 450, - 451, 452, 453, 454, @@ -31678,19 +32546,19 @@ 460, 461, 462, + 463, + 464, 465, - 466, - 467, 468, 469, 470, 471, 472, + 473, 474, - 476, - 478, + 475, + 477, 479, - 480, 481, 482, 483, @@ -31707,11 +32575,11 @@ 494, 495, 496, + 497, 498, 499, + 501, 502, - 503, - 504, 505, 506, 507, @@ -31730,14 +32598,14 @@ 520, 521, 522, + 523, 524, - 526, - 528, - 530, + 525, + 527, + 529, 531, 533, 534, - 535, 536, 537, 538, @@ -31765,9 +32633,9 @@ 560, 561, 562, + 563, 564, 565, - 566, 567, 568, 569, @@ -31776,11 +32644,12 @@ 572, 573, 574, + 575, 576, 577, - 578, 579, 580, + 581, 582, 583, 585, @@ -31788,14 +32657,13 @@ 588, 589, 591, - 593, - 595, + 592, + 594, 596, - 597, 598, + 599, 600, 601, - 602, 603, 604, 605, @@ -31805,9 +32673,9 @@ 609, 610, 611, + 612, 613, 614, - 615, 616, 617, 618, @@ -31816,11 +32684,11 @@ 621, 622, 623, + 624, 625, 626, 628, 629, - 630, 631, 632, 633, @@ -31832,9 +32700,9 @@ 639, 640, 641, + 642, 643, 644, - 645, 646, 647, 648, @@ -31849,37 +32717,37 @@ 657, 658, 659, + 660, 661, 662, - 663, 664, 665, 666, 667, 668, + 669, 670, 671, - 672, 673, 674, 675, 676, 677, 678, + 679, 680, 681, - 682, + 683, 684, 685, - 686, 687, + 688, 689, 690, - 691, 692, + 693, 694, 695, - 696, 697, 698, 699, @@ -31893,13 +32761,13 @@ 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, 720, 721, 722, @@ -31917,14 +32785,14 @@ 734, 735, 736, + 737, 738, - 740, + 739, 741, - 742, 743, + 744, + 745, 746, - 747, - 748, 749, 750, 751, @@ -31933,15 +32801,15 @@ 754, 755, 756, + 757, 758, 759, - 760, + 761, 762, 763, - 764, + 765, 766, 767, - 768, 769, 770, 771, @@ -31953,10 +32821,10 @@ 777, 778, 779, + 780, 781, + 782, 784, - 785, - 786, 787, 788, 789, @@ -31966,17 +32834,17 @@ 793, 794, 795, + 796, 797, - 799, + 798, 800, - 801, 802, 803, 804, 805, + 806, 807, 808, - 809, 810, 811, 812, @@ -31986,16 +32854,16 @@ 816, 817, 818, + 819, 820, 821, - 822, 823, + 824, 825, 826, - 827, + 828, 829, 830, - 831, 832, 833, 834, @@ -32003,237 +32871,241 @@ 836, 837, 838, + 839, 840, 841, - 842, 843, 844, 845, + 846, 847, 848, - 849, 850, + 851, 852, + 853, + 855, ], [ - 40, - -232, - 40, - 40, - 40, - -247, - 40, - -260, + 41, + -233, + 41, + 41, + 41, + -248, + 41, -261, -262, - 40, - -264, - -266, + -263, + 41, + -265, -267, -268, -269, -270, - 40, - -430, - -340, - 40, - 40, - 40, - 40, - 40, - 40, + -271, + 41, + -431, + -341, + 41, + 41, + 41, + 41, + 41, + 41, -1, - 40, - 40, - -328, - -8, - 157, - -177, - 170, - 40, - -47, - 40, - 40, - 40, - 40, - -93, - 40, - 40, - -96, - -104, - 40, - 40, - 40, - 40, - 40, - -218, - 40, - -326, - 40, - 40, - 40, - 40, - 40, - 40, - -353, - -354, - -440, - -9, - 40, - 40, - 40, - 40, - -58, - 40, - 40, - 40, - -219, - -176, - 40, - 40, - -132, - -358, - -252, - 40, - -231, - -176, - 40, - -235, - 40, - 40, - -246, - -259, - 40, - -283, - 40, - -265, - 40, - 40, - 40, - 40, - 40, - -190, + 41, + 41, -329, + -5, + 41, + 159, + -178, + 172, + 41, + -48, + 41, + 41, + 41, + 41, + -94, + 41, + 41, + -97, + -105, + 41, + 41, + 41, + 41, + 41, + -219, + 41, + -327, + 41, + 41, + 41, + 41, + 41, + 41, + -354, + -355, + -441, + -7, + 41, + 41, + 41, + 41, + -59, + 41, + 41, + 41, + -220, + -177, + 41, + 41, + -133, + -359, + -253, + 41, + -232, + -177, + 41, + -236, + 41, + 41, + -247, + -260, + 41, + -284, + 41, + -266, + 41, + 41, + 41, + 41, + 41, + -191, -330, - 40, - 40, - 40, - 40, - 40, - -436, - 40, - 40, - -338, - -336, - -356, - 40, - -251, - -10, - 40, - -36, - 40, + -331, + 41, + 41, + 41, + 41, + 41, + -437, + 41, + 41, + -339, + -337, + -357, + 41, + -252, + -8, + 41, -37, + 41, + -38, + 41, + -9, + -10, -11, - -12, - -13, - -180, - 40, - 40, - -55, - 40, - 40, - 40, - -35, - -80, - -109, + -181, + 41, + 41, + -56, + 41, + 41, + 41, + -36, + -81, -110, - 40, - -86, - -62, - -63, - -46, - 40, - 40, - -79, - 40, - -85, - 40, - 40, + -111, + 41, -87, - -94, - 40, + -63, + -64, + -47, + 41, + 41, + -80, + 41, + -86, + 41, + 41, + -88, -95, - -103, - 394, - 40, - -157, - 40, - -39, - 40, - -161, + 41, + -96, + -104, + 397, + 41, + -158, + 41, + -40, + 41, -162, - 40, - -313, + -163, + 41, -314, -315, -316, -317, -318, - -320, + -319, -321, - 40, - 40, - 40, - 40, - 40, - 40, - 40, - 40, - -347, + -322, + 41, + 41, + 41, + 41, + 41, + 41, + 41, + 41, -348, -349, -350, -351, - -17, - -49, - -64, - 40, - -16, - -22, - 40, - 40, - 40, - 40, - -136, - -258, - -220, - 40, - -56, - 40, - 40, - 40, - 40, - 40, - -236, - 40, - 40, - 40, - -424, - 40, - -411, + -352, + -15, + -50, + -65, + 41, + -14, + -20, + 41, + 41, + 41, + 41, + -137, + -259, + -221, + 41, + -57, + 41, + 41, + 41, + 41, + 41, + -237, + 41, + 41, + 41, + -425, + 41, -412, - 40, - -419, - -191, + -413, + 41, + -420, -192, -193, - -196, + -194, -197, - 40, - -199, + -198, + 41, -200, -201, - -203, + -202, -204, -205, -206, @@ -32243,483 +33115,485 @@ -210, -211, -212, - -365, - 40, - 40, - 40, - -392, - -29, - 40, - -189, - -142, + -213, + -366, + 41, + 41, + 41, + -393, + -30, + 41, + -190, -143, - 40, - 40, - 40, - -331, - 40, - 40, - 40, - -173, - 40, - -183, - 40, - 40, - 40, - -225, - 170, - 40, - 40, - 40, - 40, - 40, - 40, - 40, - 40, - -279, - 40, - 40, - 40, - 40, - -289, - 40, - 40, - 40, - 40, - 40, - -248, - 40, + -144, + 41, + 41, + 41, + -332, + 41, + 41, + 41, + -174, + 41, + -184, + 41, + 41, + 41, + -226, + 172, + 41, + 41, + 41, + 41, + 41, + 41, + 41, + 41, + -280, + 41, + 41, + 41, + 41, + -290, + 41, + 41, + 41, + 41, + 41, + -249, + 41, -2, - 40, - 40, - -181, - 40, - -51, - -54, - -179, - 40, - 40, - 40, - 40, - 40, - 40, - 40, - 40, - 40, - -441, + 41, + 41, + -6, + -182, + 41, + -52, + -55, + -180, + 41, + 41, + 41, + 41, + 41, + 41, + 41, + 41, + 41, -442, - 40, - -41, - -75, - -73, - 40, + -443, + 41, + -42, + -76, -74, - 40, - -71, - 40, - -65, + 41, + -75, + 41, + -72, + 41, + -66, + -84, + 41, -83, - 40, - -82, - 40, - 40, - 40, - -68, - 40, - 40, - -78, - -111, + 41, + 41, + 41, + -69, + 41, + 41, + -79, -112, - 40, - -139, - -149, - 40, - -40, - 40, - -319, - -322, - 40, - 40, - -325, - -20, - 40, - -396, - 40, - 40, - -403, + -113, + 41, + -140, + -150, + 41, + -41, + 41, + -320, + -323, + 41, + 41, + -326, + -18, + 41, + -397, + 41, + 41, -404, - -408, - 40, - -423, - 40, - 40, + -405, + -409, + 41, + -424, + 41, + 41, + -344, -343, - -342, + -347, -346, - -345, - -48, - 40, - 40, - 40, - -107, - 40, - 40, - 40, - -255, - 40, - -57, - -134, - -253, - -229, + -49, + 41, + 41, + 41, + -108, + 41, + 41, + 41, + -256, + 41, + -58, + -135, + -254, -230, - -233, + -231, -234, - 40, - 40, - 40, - 40, - 40, - 40, - -429, - -413, + -235, + 41, + 41, + 41, + 41, + 41, + 41, + -430, -414, - 40, - -410, - -301, - -420, - 40, - -194, + -415, + 41, + -411, + -302, + -421, + 41, -195, - 40, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - 40, - 40, - -373, + -196, + 41, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + 41, + 41, + -374, -395, - 40, - 40, - -371, - 40, - -373, - 40, - 40, - 40, - 40, - 40, - 40, - -174, - 40, - -361, + -396, + 41, + 41, + -372, + 41, + -374, + 41, + 41, + 41, + 41, + 41, + 41, + -175, + 41, -362, -363, -364, - -359, - 40, - -222, - -224, - 40, - 40, - 40, - 40, - -238, - -243, - 40, - 40, - 40, - 40, - 40, - -281, - -272, - 40, - 40, - 40, - 40, - -291, - 40, - -335, - -355, - -434, - 40, - -250, - 40, - -7, - -105, + -365, + -360, + 41, + -223, + -225, + 41, + 41, + 41, + 41, + -239, + -244, + 41, + 41, + 41, + 41, + 41, + -282, + -273, + 41, + 41, + 41, + 41, + -292, + 41, + -336, + -356, + -435, + 41, + -251, + 41, + -4, -106, - -50, - 40, - -53, - 40, - 40, - -15, - 40, - 40, - 40, - 40, - 40, - 40, - -72, - 40, - 40, - -66, - -84, - 40, - 40, - -178, + -107, + -51, + 41, + -54, + 41, + 41, + -13, + 41, + 41, + 41, + 41, + 41, + 41, + -73, + 41, + 41, -67, - 40, - -70, - -77, - 40, - 40, - 40, - 40, - -156, - 40, - -154, - 40, - -371, - -42, - 40, - -323, + -85, + 41, + 41, + -179, + -68, + 41, + -71, + -78, + 41, + 41, + 41, + 41, + -157, + 41, + -155, + 41, + -372, + -43, + 41, -324, - 40, - 40, - 40, - 40, - 40, - -405, + -325, + 41, + 41, + 41, + 41, + 41, -406, -407, - 40, - 40, - -371, - 40, - -402, - -327, - 40, - -144, - 40, - -146, - 40, - -115, + -408, + 41, + 41, + -372, + 41, + -403, + -328, + 41, + -145, + 41, + -147, + 41, -116, -117, -118, -119, - -108, - -38, - 40, - 40, - -257, - -131, - -138, - -357, - -237, - -254, - -425, + -120, + -109, + -39, + 41, + 41, + -258, + -132, + -139, + -358, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - 40, - -386, - -391, - -30, - -32, - 40, - 40, - 40, - 40, - 40, + 41, + -387, + -392, + -31, + -33, + 41, + 41, + 41, + 41, + 41, + -373, + -375, + -27, + -28, + -29, + -399, + 41, -372, - -374, - -4, - -5, - -6, - -398, - 40, - -371, - 40, - -371, - 40, - -401, - 40, - -334, - -332, - 40, - -171, - 40, - 40, - -226, - 170, + 41, + -372, + 41, + -402, + 41, + -335, + -333, + 41, + -172, + 41, + 41, -227, - -241, + 172, + -228, -242, - -239, + -243, -240, - 40, - -280, - -282, - 40, - 40, - 40, - -290, - 40, - -435, - -249, - -45, - 40, - 40, + -241, + 41, + -281, + -283, + 41, + 41, + 41, + -291, + 41, + -436, + -250, + -46, + 41, + 41, + -21, -23, - -25, - 40, - -34, - -443, - -147, - 40, + 41, + -35, + -444, -148, - -59, + 41, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - 40, - 40, - 40, - -43, + -152, + 41, + 41, + 41, -44, - 40, - 40, - -411, - -21, - -431, - -432, - 40, - 40, - -409, - -375, - 40, - 40, - 40, - 40, - 40, - -135, - -256, - 40, - -371, - -367, - -373, - 40, - 40, - 40, - -388, - 40, - -380, - -380, - 40, - 40, - -165, - -168, - -185, - 40, - 40, - 40, - 40, - -277, - 40, - -273, - -337, - -52, - -295, - -298, - -26, - 40, - 40, - -69, - -141, - 40, - -371, - -367, - 40, - 40, + -45, + 41, + 41, + -412, -19, + -432, -433, - 40, - -367, - -422, - 40, - 40, - -133, - -382, - 40, + 41, + 41, + -410, + -376, + 41, + 41, + 41, + 41, + 41, + -136, + -257, + 41, + -372, -368, - -369, - -370, + -374, + 41, + 41, + 41, -389, - 40, - -371, - 40, - -333, - 40, - -228, + 41, + -381, + -381, + 41, + 41, + -166, + -169, + -186, + 41, + 41, + 41, + 41, -278, - 40, - -275, - 40, - -61, - 40, - 40, - 40, + 41, + -274, + -338, + -53, + -296, + -299, + -24, + 41, + 41, + -70, + -142, + 41, + -372, + -368, + 41, + 41, + -17, + -434, + 41, + -368, + -423, + 41, + 41, + -134, + -383, + 41, -369, - -18, - -81, - 40, - -137, - -367, - 40, - 40, -370, - 40, + -371, + -390, + 41, + -372, + 41, + -334, + 41, + -229, + -279, + 41, -276, - 40, - 40, - -367, - 40, - -145, - 40, - -152, + 41, + -62, + 41, + 41, + 41, + -370, + -16, + -82, + 41, + -138, + -368, + 41, + 41, -371, - 40, - -164, - -126, + 41, + -277, + 41, + 41, + -368, + 41, + -146, + 41, -153, - -370, - 40, - 40, - -163, + -372, + 41, + -165, + -127, + -154, + -371, + 41, + 41, + -164, ], ), "USING": ( @@ -32746,63 +33620,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -32813,38 +33685,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -32853,167 +33725,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -33021,222 +33893,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 84, - -232, - -215, + 85, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, - 121, - -266, + -264, + 122, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - 477, - -204, + -202, + 480, -205, -206, -207, @@ -33245,267 +34119,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, - -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -144, + -310, + -332, + -167, + -183, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "ROW": ( @@ -33532,64 +34408,62 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, 171, 172, + 173, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -33600,38 +34474,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -33640,168 +34514,168 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 431, - 432, - 433, + 427, + 428, + 429, + 434, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -33809,222 +34683,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 86, - -232, - -215, + 87, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - 371, - -86, - -62, - -63, - -46, - -79, - -85, + -111, + 374, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -34034,268 +34910,270 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - 619, - -439, - -107, - -97, - -99, - -57, - -229, + 622, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "STORAGE": ( @@ -34322,63 +35200,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -34389,38 +35265,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -34429,168 +35305,168 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 431, - 432, - 433, + 427, + 428, + 429, + 434, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -34598,221 +35474,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 87, - -232, - -215, + 88, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -34822,268 +35700,270 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - 618, - -439, - -107, - -97, - -99, - -57, - -229, + 621, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "TAG": ( @@ -35110,64 +35990,62 @@ 36, 37, 38, - 40, - 44, - 47, - 49, + 41, + 45, + 48, 50, - 54, - 57, - 59, - 70, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -35178,38 +36056,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -35218,168 +36096,168 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, 303, - 307, + 304, + 305, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -35387,222 +36265,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 88, - -232, - -215, + 89, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - 178, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + 180, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + 89, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - 88, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - 88, - -313, + -163, + 89, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - 88, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + 89, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -35612,268 +36492,270 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 178, - 88, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + 180, + 89, + -332, + -167, -183, - -221, - -225, - -176, - -285, - 88, - -279, - 88, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + 89, + -280, + 89, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, - 88, - -286, - -281, - -272, - 88, - 88, - -335, - -355, - -434, - -7, - -105, + -365, + -360, + -223, + -225, + -244, + 89, + -287, + -282, + -273, + 89, + 89, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "CLONE": ( @@ -35900,64 +36782,62 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, + 110, + 112, + 115, + 117, + 119, + 121, 124, - 127, - 130, - 144, + 125, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -35968,38 +36848,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -36008,167 +36888,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -36176,222 +37056,224 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 89, - 89, - -215, + 90, + 90, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - 129, - -430, - -340, + -271, + 130, + -431, + -341, -1, - -217, - -328, + -218, + -329, + -5, + -178, + -177, + 90, + -77, + -94, + -97, + -105, + -219, + -313, + -327, + -353, + -354, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + 130, + -191, + -224, + -339, + -337, + -357, -8, - -177, - -176, - 89, - -76, - -93, - -96, - -104, - -218, - -312, - -326, - -352, - -353, - -354, - -440, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - 129, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + -246, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -36401,267 +37283,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "ENCODE": ( @@ -36688,63 +37572,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -36755,38 +37637,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -36795,167 +37677,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -36963,221 +37845,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 90, - -232, - -215, + 91, + -233, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + 91, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - 90, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - 90, - -313, + -163, + 91, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, - -348, - -349, - -350, - -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - 90, - -424, - -284, - -411, + -322, + -214, + -342, + -345, + -348, + -349, + -350, + -351, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + 91, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -37187,267 +38071,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 90, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + 91, + -332, + -167, -183, - -221, - -225, - -176, - -285, - 90, - -279, - 90, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + 91, + -280, + 91, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, - 90, - -286, - -281, - -272, - 90, - 90, - -335, - -355, - -434, - -7, - -105, + -365, + -360, + -223, + -225, + -244, + 91, + -287, + -282, + -273, + 91, + 91, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "TABLESPACE": ( @@ -37475,65 +38361,63 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 95, - 98, - 108, + 84, + 94, + 96, + 99, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -37544,40 +38428,40 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 239, - 245, - 254, - 255, - 261, - 262, + 240, + 241, + 247, + 256, + 257, 263, 264, 265, - 268, - 269, + 266, + 267, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -37586,167 +38470,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -37754,226 +38638,228 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 91, - -232, - 94, - -215, + 92, + -233, + 95, -216, - -247, - -260, + -217, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, + -271, + -311, + -431, + -341, -1, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + 242, + -177, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + -309, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - 240, - -176, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - -308, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - -311, - -313, + -163, + -312, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - 436, - -56, - -236, - -245, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + 439, + -57, + -237, + -246, + -425, + -285, -412, - 91, - -191, + -413, + 92, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -37983,267 +38869,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - -309, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + -310, + -332, + -167, -183, - -221, - -225, - -176, - -285, - -274, - -279, - -14, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + -275, + -280, + -12, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, + -365, + -360, + -223, + -225, -244, - -286, - -281, - -272, + -245, + -287, + -282, + -273, -3, - -271, - -335, - -355, - -434, - -7, - -105, + -272, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "OPTIONS": ( @@ -38270,63 +39158,61 @@ 36, 37, 38, - 40, - 44, - 47, - 50, - 54, - 57, - 59, - 70, + 41, + 45, + 48, + 51, + 55, + 58, + 60, 71, 72, - 79, + 73, 80, 81, 82, 83, - 93, - 108, + 84, + 94, 109, - 111, - 114, - 116, - 118, - 120, - 123, - 127, - 130, - 144, + 110, + 112, + 115, + 117, + 119, + 121, + 124, + 128, + 131, 145, 146, - 150, - 152, - 154, - 156, - 157, + 147, + 151, + 153, + 155, 158, 159, 160, + 161, 162, - 167, - 168, + 164, 169, 170, + 171, 172, 174, - 175, + 176, 177, - 181, + 179, 183, - 186, - 187, + 185, + 188, 189, - 190, - 197, - 198, + 191, + 192, 199, + 200, 201, - 202, 203, 204, 205, @@ -38337,38 +39223,38 @@ 210, 211, 212, - 216, - 220, + 213, + 214, + 218, 222, 224, - 225, 226, 227, 228, 229, - 232, + 230, + 231, 234, - 235, 236, + 237, 238, - 245, - 254, - 255, - 261, - 262, + 240, + 247, + 256, + 257, 263, 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -38377,167 +39263,167 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, + 303, + 304, 309, - 310, 311, 312, 313, 314, 315, + 316, 317, 319, - 320, - 329, - 333, + 321, + 322, + 331, 335, - 339, - 350, - 354, - 355, + 337, + 341, + 352, 356, 357, 358, + 359, + 360, 361, - 365, - 367, + 364, 368, 370, 371, 373, 374, - 375, + 376, 377, - 379, - 381, + 378, + 380, 382, 384, + 385, 387, - 388, + 390, 391, - 392, - 393, 394, - 398, - 399, + 395, + 396, + 397, 401, - 403, + 402, 404, 406, - 408, + 407, 409, + 411, 412, - 416, - 417, - 418, + 415, + 419, 420, + 421, 423, - 424, - 425, 426, - 432, - 433, + 427, + 428, + 429, 435, - 437, - 441, - 449, - 450, - 451, + 436, + 438, + 440, + 444, 452, - 459, - 460, - 461, - 465, - 466, + 453, + 454, + 455, + 462, + 463, + 464, + 468, 469, - 470, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, + 513, 514, 515, - 521, + 517, + 518, 524, - 526, - 531, - 533, - 535, + 527, + 529, + 534, 536, - 540, - 541, - 542, - 546, - 547, - 548, + 538, + 539, + 543, + 544, + 545, 549, + 550, 551, 552, 554, - 558, + 555, + 557, 561, - 565, - 566, + 564, 568, 569, - 570, + 571, 572, 573, - 577, - 579, + 575, + 576, + 580, 582, - 586, + 585, 589, - 591, - 600, - 601, - 602, - 607, - 608, + 592, + 594, + 603, + 604, + 605, 610, + 611, 613, - 615, 616, - 617, 618, 619, 620, 621, 622, 623, - 630, - 631, - 632, + 624, + 625, + 626, 633, 634, 635, @@ -38545,221 +39431,223 @@ 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 665, - 666, - 667, + 657, + 658, + 659, 668, + 669, 670, - 672, - 674, + 671, + 673, 675, - 676, - 681, - 682, - 690, - 692, - 694, + 677, + 678, + 679, + 684, + 685, + 693, 695, - 696, 697, + 698, 699, 700, - 701, + 702, 703, 704, - 705, 706, 707, 708, 709, + 710, 711, 712, 714, 715, 717, 718, - 719, - 723, - 724, - 728, - 729, - 730, + 720, + 721, + 722, + 726, + 727, + 731, + 732, 733, - 734, - 741, - 748, - 753, - 755, + 736, + 737, + 744, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 769, - 771, + 765, + 766, + 767, 772, - 773, 774, 775, 776, + 777, + 778, 779, - 781, - 789, - 790, + 782, + 784, + 792, 793, - 799, - 801, + 796, 802, - 803, 804, - 809, - 810, - 811, + 805, + 806, + 807, 812, + 813, 814, - 816, - 822, - 823, - 832, - 833, - 838, + 815, + 817, + 819, + 825, + 826, + 835, + 836, 841, 844, - 845, 847, - 852, + 848, + 850, + 855, ], [ - 92, - -232, - 92, - 92, - -247, - -260, + 93, + -233, + 93, + 93, + -248, -261, -262, -263, -264, - -266, + -265, -267, -268, -269, -270, - -310, - -430, - -340, - 92, - -217, - -328, - -8, - -177, - -176, - -47, - -76, - -93, - -96, - -104, + -271, + -311, + -431, + -341, + 93, -218, - -312, - -326, - -352, + -329, + -5, + -178, + -177, + -48, + -77, + -94, + -97, + -105, + -219, + -313, + -327, -353, -354, - -440, + -355, + -441, + -7, + -59, + -232, + -177, + -236, + -247, + -260, + -284, + -266, + 93, + -191, + -224, + -339, + -337, + -357, + -8, + -37, + -38, -9, - -58, - -231, - -176, - -235, - -246, - -259, - -283, - -265, - 92, - -190, - -223, - -338, - -336, - -356, -10, - -36, - -37, -11, - -12, - -13, - -180, - -296, - -55, - -35, - -80, - -109, + -181, + -297, + -56, + -36, + -81, -110, - -86, - -62, - -63, - -46, - -79, - -85, + -111, -87, - -94, + -63, + -64, + -47, + -80, + -86, + -88, -95, - -103, - -157, - -159, - -39, + -96, + -104, + -158, -160, + -40, -161, -162, - 92, - -313, + -163, + 93, -314, -315, -316, -317, -318, - -320, + -319, -321, - -213, - -341, - -344, - -347, + -322, + -214, + -342, + -345, -348, -349, -350, -351, - -17, - -64, - -16, - -22, - -438, - -100, - -56, - -236, - 92, - -424, - -284, - -411, + -352, + -15, + -65, + -14, + -20, + -439, + -101, + -57, + -237, + 93, + -425, + -285, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -38769,267 +39657,269 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 92, - -331, - -166, - -182, - -172, - -173, - -360, + -144, + 93, + -332, + -167, -183, - -221, - -225, - -176, - -285, - 92, - -279, - 92, + -173, + -174, + -361, + -184, + -222, + -226, + -177, + -286, + 93, + -280, + 93, -2, - -181, - -178, - -51, - -54, + -6, + -182, -179, - -294, - -24, - -27, - -411, - -441, + -52, + -55, + -180, + -295, + -22, + -25, + -412, -442, - -41, - -75, - -73, + -443, + -42, + -76, -74, - -71, - -65, + -75, + -72, + -66, + -84, -83, - -82, - -178, - -68, - -178, - -78, - -111, + -179, + -69, + -179, + -79, -112, - -139, - -149, - -40, - -319, - -322, - -214, - -325, - -20, - -396, - -403, + -113, + -140, + -150, + -41, + -320, + -323, + -215, + -326, + -18, + -397, -404, - -408, - -423, + -405, + -409, + -424, + -344, -343, - -342, + -347, -346, - -345, - -439, - -107, - -97, - -99, - -57, - -229, + -440, + -108, + -98, + -100, + -58, -230, - -233, + -231, -234, - -429, - -413, + -235, + -430, -414, - -410, - -301, - -194, + -415, + -411, + -302, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - -222, - -224, - -243, - 92, - -286, - -281, - -272, - 92, - 92, - -335, - -355, - -434, - -7, - -105, + -365, + -360, + -223, + -225, + -244, + 93, + -287, + -282, + -273, + 93, + 93, + -336, + -356, + -435, + -4, -106, - -50, - -53, - -300, - -15, - -28, - -72, - -66, - -84, - -92, - -178, + -107, + -51, + -54, + -301, + -13, + -26, + -73, -67, - -70, - -77, - -140, - -156, - -154, - -42, - -323, + -85, + -93, + -179, + -68, + -71, + -78, + -141, + -157, + -155, + -43, -324, - -405, + -325, -406, -407, - -402, - -327, - -144, - -146, - -115, + -408, + -403, + -328, + -145, + -147, -116, -117, -118, -119, - -108, - -38, - -101, - -98, - -237, - -254, - -425, + -120, + -109, + -39, + -102, + -99, + -238, + -255, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -334, - -332, - -169, - -171, - -184, - -226, + -387, + -392, + -31, + -33, + -373, + -375, + -27, + -28, + -29, + -399, + -335, + -333, + -170, + -172, + -185, -227, - -241, + -228, -242, - -280, - -282, - -435, - -45, - -299, - -297, + -243, + -281, + -283, + -436, + -46, + -300, + -298, + -21, -23, - -25, - -34, - -443, - -147, + -35, + -444, -148, - -59, + -149, -60, - -88, - -90, + -61, -89, -91, - -113, + -90, + -92, -114, - -127, + -115, -128, - -155, - -150, + -129, + -156, -151, - -43, + -152, -44, - -21, - -431, - -432, - -409, - -375, - -102, - -367, - -388, - -380, - -380, - -165, - -168, - -185, - -186, - -277, - -273, - -337, - -52, - -295, - -298, - -26, - -69, - -141, + -45, -19, + -432, -433, - -422, - -382, + -410, + -376, + -103, -368, - -369, - -370, -389, - -333, + -381, + -381, + -166, + -169, + -186, -187, - -228, -278, - -275, - -61, - -18, - -81, + -274, + -338, + -53, + -296, + -299, + -24, + -70, + -142, + -17, + -434, + -423, + -383, + -369, + -370, + -371, + -390, + -334, -188, + -229, + -279, -276, - -145, - -152, - -164, - -126, + -62, + -16, + -82, + -189, + -277, + -146, -153, - -163, + -165, + -127, + -154, + -164, ], ), "DOMAIN": ( @@ -39037,63 +39927,61 @@ 3, ], [ - 96, + 97, ], ), "SCHEMA": ( [ 3, - 98, + 99, ], [ - 97, - 243, + 98, + 245, ], ), "DATABASE": ( [ 3, - 85, - 98, - 230, + 86, + 99, + 232, ], [ - 99, - 99, - 244, - 244, + 100, + 100, + 246, + 246, ], ), "UNIQUE": ( [ 3, - 40, - 71, - 109, - 123, - 127, - 135, - 145, - 159, - 204, - 205, - 216, - 235, - 255, - 261, + 41, + 72, + 110, + 124, + 128, + 136, + 146, + 161, + 206, + 207, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -39102,147 +39990,148 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 328, - 333, - 339, - 354, - 406, - 412, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 330, + 335, + 341, + 357, + 409, + 415, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ - 101, + 102, + -178, + 215, -177, - 213, - -176, - 272, - -190, - 330, - -336, - -180, - 272, - 213, - -213, - -22, - 272, - -424, - -411, - -412, + 274, -191, + 332, + -337, + -181, + 274, + 215, + -214, + -20, + 274, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -39252,118 +40141,119 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 272, - -166, - -182, - -172, - -173, - -360, + -144, + 274, + -167, -183, - 527, - 272, - 272, - -181, - -214, - -396, - -403, + -173, + -174, + -361, + -184, + 530, + 274, + 274, + -182, + -215, + -397, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 272, - 272, - 272, - -335, - -405, + -365, + -360, + 274, + 274, + 274, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "CLUSTERED": ( @@ -39371,7 +40261,7 @@ 3, ], [ - 102, + 103, ], ), "TABLE": ( @@ -39380,32 +40270,32 @@ 6, 25, 28, - 40, - 95, - 98, - 109, - 149, - 250, - 348, - 446, - 544, - 691, + 41, + 96, + 99, + 110, + 150, + 252, + 350, + 449, + 547, + 694, ], [ - 103, - 112, - 134, - 142, + 104, + 113, + 135, + 143, + -178, + 243, -177, - 241, - -176, - -176, + -177, + -252, + 448, + -249, + 631, -251, - 445, - -248, - 628, -250, - -249, ], ), "OR": ( @@ -39413,7 +40303,7 @@ 3, ], [ - 104, + 105, ], ), "SEQUENCE": ( @@ -39421,41 +40311,39 @@ 3, ], [ - 105, + 106, ], ), "TYPE": ( [ 3, - 250, + 252, ], [ - 106, - 447, + 107, + 450, ], ), "REFERENCES": ( [ 9, - 40, - 109, - 123, - 127, - 145, - 159, - 204, - 207, - 216, - 235, - 255, - 261, + 41, + 110, + 124, + 128, + 146, + 161, + 206, + 209, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, @@ -39471,149 +40359,150 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 327, - 333, - 339, - 354, - 405, - 406, - 416, - 417, - 418, + 316, + 317, + 329, + 335, + 341, + 357, + 408, + 409, + 419, 420, - 459, - 460, - 461, - 469, - 470, + 421, + 423, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 525, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 528, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 793, - 799, - 801, + 765, + 766, + 767, + 775, + 796, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ - 117, + 118, + -178, -177, - -176, - 117, - -190, - -336, - -180, - 117, - 117, - -213, - -22, - 117, - -424, - -411, - -412, + 118, -191, + -337, + -181, + 118, + 118, + -214, + -20, + 118, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - 117, - -203, + -202, + 118, -204, -205, -206, @@ -39623,207 +40512,208 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, - -143, - 117, - -166, - -182, - -172, - -173, - -360, - -183, - -287, - 117, - 117, - -181, - 117, - -214, - -403, - -404, - -408, - -423, - -429, - -413, - -414, - -194, - -195, - -390, - -202, - -31, - -33, - -437, + -213, -366, -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, - -394, - -395, - -397, - -371, - -373, + -30, + -190, + -143, + -144, + 118, -167, - -170, + -183, + -173, -174, - -175, -361, - -362, - -363, - -364, - -359, - 117, + -184, -288, - 117, - 117, - -335, + 118, + 118, + -182, + 118, + -215, + -404, -405, - -406, - -407, - -402, - -144, - -146, - -38, - -425, - -426, - -427, - -428, - -417, - -418, - -416, + -409, + -424, + -430, + -414, -415, - -386, + -195, + -196, -391, - -30, + -203, -32, + -34, + -438, + -367, + -394, + -159, -372, + -385, + -386, + -388, + -382, -374, - -4, - -5, - -6, + -395, + -396, -398, - -169, + -372, + -374, + -168, -171, - -184, + -175, + -176, + -362, + -363, + -364, + -365, + -360, + 118, + -289, + 118, + 118, + -336, + -406, + -407, + -408, + -403, + -145, -147, - -148, - -409, + -39, + -426, + -427, + -428, + -429, + -418, + -419, + -417, + -416, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -422, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -423, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "FOR": ( [ 13, - 40, - 109, - 118, - 159, - 215, - 262, - 263, + 41, + 110, + 119, + 161, + 217, 264, - 274, - 335, - 354, - 460, - 461, - 472, - 483, - 484, - 485, + 265, + 266, + 276, + 337, + 357, + 463, + 464, + 475, 486, + 487, 488, 489, - 531, - 636, - 637, - 638, + 491, + 492, + 534, 639, + 640, 641, - 643, - 651, - 652, - 681, - 682, - 748, - 753, - 755, - 799, - 801, + 642, + 644, + 646, + 654, + 655, + 684, + 685, + 751, + 756, + 758, 802, - 803, 804, + 805, + 806, + 807, ], [ - 119, + 120, + -178, -177, - -176, - -283, - -180, - 415, -284, - -411, - -412, - 471, - -279, -181, + 418, + -285, + -412, -413, + 474, + -280, + -182, -414, - -390, - -371, - -384, - -385, - -387, - -381, - -373, - -281, - -417, - -418, - -416, -415, - -386, -391, -372, - -374, - -280, - -282, - -367, + -385, + -386, -388, - -380, -382, + -374, + -282, + -418, + -419, + -417, + -416, + -387, + -392, + -373, + -375, + -281, + -283, -368, + -389, + -381, + -383, -369, -370, - -389, + -371, + -390, ], ), "LP": ( @@ -39833,1252 +40723,1250 @@ 25, 32, 36, - 39, 40, 41, - 44, - 49, - 51, + 42, + 45, + 50, 52, 53, - 65, - 68, - 87, + 54, + 66, + 69, 88, - 92, - 109, - 115, + 89, + 93, + 110, 116, - 127, - 132, - 134, - 141, - 144, + 117, + 128, + 133, + 135, + 142, 145, - 148, + 146, 149, - 152, - 157, + 150, + 153, 159, - 160, + 161, 162, 164, - 165, 166, - 171, - 176, - 177, + 167, + 168, + 173, 178, - 193, - 196, - 200, - 213, + 179, + 180, + 195, + 198, + 202, 215, - 216, + 217, 218, - 261, + 220, 263, - 264, - 274, - 277, - 294, - 299, - 305, - 309, - 310, + 265, + 266, + 276, + 279, + 296, + 301, + 307, 311, 312, 313, 314, 315, - 324, - 325, - 329, - 330, - 343, - 348, - 354, - 355, - 356, + 316, + 317, + 326, + 327, + 331, + 332, + 345, + 350, + 357, 358, + 359, 361, - 368, - 375, - 377, - 379, - 406, - 407, - 408, + 364, + 371, + 378, + 380, + 382, + 409, 410, - 414, - 416, + 411, + 413, 417, - 418, + 419, 420, - 434, - 459, - 460, - 461, - 472, - 474, - 479, - 483, - 484, - 485, + 421, + 423, + 437, + 462, + 463, + 464, + 475, + 477, + 482, 486, 487, 488, 489, - 494, - 503, - 505, + 490, + 491, + 492, + 497, 506, - 507, 508, 509, 510, 511, 512, - 517, + 513, + 514, + 515, 520, - 522, 523, + 525, 526, - 527, - 532, - 540, - 544, - 549, + 529, + 530, + 535, + 543, + 547, 552, - 561, - 569, - 582, - 583, + 555, + 564, + 572, 585, - 591, - 592, + 586, + 588, 594, - 599, - 600, - 601, + 595, + 597, 602, + 603, + 604, 605, - 607, - 632, - 633, - 634, + 608, + 610, 635, 636, 637, 638, 639, + 640, 641, - 643, - 651, - 652, - 653, - 658, + 642, + 644, + 646, + 654, + 655, + 656, 661, - 663, - 667, - 668, + 664, + 666, 670, - 678, - 679, - 683, - 688, + 671, + 673, + 681, + 682, + 686, 691, 694, - 695, - 704, - 705, - 717, - 727, - 733, - 734, - 747, - 748, - 753, - 755, - 762, - 763, - 764, - 772, - 774, + 697, + 698, + 707, + 708, + 720, + 730, + 736, + 737, + 750, + 751, + 756, + 758, + 765, + 766, + 767, 775, - 780, + 777, + 778, 783, - 785, - 799, - 801, + 786, + 788, 802, - 803, 804, + 805, + 806, 807, 810, - 816, - 832, - 842, + 813, + 819, + 835, + 845, ], [ - 122, - 124, - 133, - 147, - 153, - 161, - -177, + 123, + 125, + 134, + 148, + 154, 163, - -176, - 179, - 182, - 185, - 161, - 161, - 161, - 232, - 233, - 237, - -176, - 256, - 257, - 316, - 323, - 326, - -436, - -338, - -336, - 347, - -251, - 351, + -178, + 165, -177, - -180, - 161, - 362, - 364, - 366, - 369, - 372, - 182, - 179, - 378, - 396, - 400, - 402, - 411, - 413, - 419, - 421, - -424, - 463, - 464, - 473, - 257, - 487, - 495, - 499, - -339, - -166, - -182, - -172, - -173, - -360, - -183, - 362, - -296, - 419, - 530, - -302, - -248, + 181, + 184, + 187, + 163, + 163, + 163, + 234, + 235, + 239, + -177, + 258, + 259, + 318, + 325, + 328, + -437, + -339, + -337, + 349, + -252, + 353, + -178, -181, - 161, - -293, - -179, + 163, + 365, + 367, + 369, + 372, + 375, + 184, + 181, + 381, + 399, + 403, + 405, + 414, + 416, + 422, + 424, + -425, + 466, + 467, + 476, + 259, + 490, + 498, + 502, + -340, + -167, + -183, + -173, + -174, + -361, + -184, + 365, + -297, + 422, + 533, + -303, + -249, + -182, + 163, -294, - 557, - 179, - -74, - -71, - 419, - 593, - 257, - 179, - 598, - -403, + -180, + -295, + 560, + 181, + -75, + -72, + 422, + 596, + 259, + 181, + 601, -404, - -408, - 606, - 362, - -429, - -413, + -405, + -409, + 609, + 365, + -430, -414, - -390, - 257, - -437, - 646, - -384, + -415, + -391, + 259, + -438, + 649, -385, - -387, - 647, - -381, - -373, - 646, - -167, - -170, - -174, + -386, + -388, + 650, + -382, + -374, + 649, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 463, - 316, - -178, + -365, + -360, + 466, + 318, + -179, + -294, + 422, + 683, + 688, + -336, + -251, -293, - 419, - 680, - 685, - -335, - -250, - -292, - -300, - -72, - -178, - 316, - 721, - 722, - 257, + -301, + -73, + -179, + 318, + 724, 725, - 347, - 732, - -405, + 259, + 728, + 349, + 735, -406, -407, - 735, - -402, - -425, + -408, + 738, + -403, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - 646, - -374, - 646, - 646, - 759, - -401, - -169, - -171, - -184, - 316, - -292, - 768, - -303, - -249, - -299, - -297, - -59, - -60, - 316, - 463, - -409, + -387, + -392, + 649, -375, - 800, - -367, - -388, - -380, - -168, + 649, + 649, + 762, + -402, + -170, + -172, -185, - -186, - -337, - -295, + 318, + -293, + 771, + -304, + -250, + -300, -298, - 817, - 818, - 820, - -382, + -60, + -61, + 318, + 466, + -410, + -376, + 803, -368, - -369, - -370, -389, - 830, + -381, + -169, + -186, -187, - -61, + -338, + -296, + -299, + 820, + 821, + 823, + -383, + -369, + -370, + -371, + -390, + 833, -188, - 735, + -62, + -189, + 738, ], ), "LIKE": ( [ 21, - 40, - 109, - 124, - 144, + 41, + 110, + 125, 145, - 309, - 540, - 772, + 146, + 311, + 543, + 775, ], [ - 128, + 129, + -178, -177, - -176, - 128, - -338, - -336, + 129, -339, - -335, -337, + -340, + -336, + -338, ], ), "IF": ( [ 24, - 97, - 103, - 105, - 142, - 241, + 98, + 104, + 106, + 143, 243, - 445, - 628, + 245, + 448, + 631, ], [ - 131, - -219, - 249, - 251, - 341, - 438, + 132, -220, - 627, - 745, + 251, + 253, + 343, + 441, + -221, + 630, + 748, ], ), "ADD": ( [ 26, - 40, - 109, - 145, - 340, + 41, + 110, + 146, 342, - 538, - 540, - 687, - 772, + 344, + 541, + 543, + 690, + 775, ], [ - 135, + 136, + -178, -177, - -176, + -337, + -290, + -177, + -292, -336, - -289, - -176, -291, - -335, - -290, - -337, + -338, ], ), "RENAME": ( [ 26, - 40, - 109, - 145, - 340, + 41, + 110, + 146, 342, - 538, - 540, - 687, - 772, + 344, + 541, + 543, + 690, + 775, ], [ - 138, + 139, + -178, -177, - -176, + -337, + -290, + -177, + -292, -336, - -289, - -176, -291, - -335, - -290, - -337, + -338, ], ), "MODIFY": ( [ 26, - 40, - 109, - 145, - 340, + 41, + 110, + 146, 342, - 538, - 540, - 687, - 772, + 344, + 541, + 543, + 690, + 775, ], [ - 140, + 141, + -178, -177, - -176, + -337, + -290, + -177, + -292, -336, - -289, - -176, -291, - -335, - -290, - -337, + -338, ], ), "KEY": ( [ 27, 36, - 40, - 44, - 109, - 215, + 41, + 45, + 110, 217, - 271, - 272, - 332, - 529, + 219, + 273, + 274, + 334, + 532, ], [ - 141, - 154, + 142, + 155, + -178, -177, - -176, - -176, - 414, - 420, - 469, - 470, - 532, - 683, + -177, + 417, + 423, + 472, + 473, + 535, + 686, ], ), "TERMINATED": ( [ 36, - 40, - 44, - 192, + 41, + 45, 194, + 196, ], [ - 155, + 156, + -178, -177, - -176, - 395, - 397, + 398, + 400, ], ), "STRING_BASE": ( [ - 39, 40, - 44, - 48, - 58, - 109, - 119, - 147, - 156, - 157, + 41, + 45, + 49, + 59, + 110, + 120, + 148, + 158, 159, - 160, 161, - 164, - 165, - 169, - 175, - 182, + 162, + 163, + 166, + 167, + 171, + 177, 184, - 185, - 188, + 186, + 187, 190, - 191, - 216, - 231, - 252, - 253, - 256, - 257, - 262, - 263, + 192, + 193, + 218, + 233, + 254, + 255, + 258, + 259, 264, - 279, - 289, - 294, - 295, - 298, - 310, - 311, + 265, + 266, + 281, + 291, + 296, + 297, + 300, 312, 313, 314, - 320, - 323, + 315, + 316, + 322, 325, - 329, + 327, 331, - 346, - 347, - 351, + 333, + 348, + 349, 353, - 354, 355, + 357, 358, - 362, - 364, + 361, 365, - 366, 367, 368, 369, + 370, + 371, 372, - 383, + 375, 386, - 387, - 391, - 393, - 398, - 400, - 406, - 411, - 413, + 389, + 390, + 394, + 396, + 401, + 403, + 409, + 414, 416, - 417, - 418, 419, - 427, - 428, + 420, + 421, + 422, + 430, 431, - 450, - 452, - 454, + 434, + 453, 455, - 460, - 461, - 462, - 476, - 477, - 478, + 457, + 458, + 463, + 464, + 465, 479, - 484, + 480, + 481, + 482, 487, - 489, - 491, + 490, 492, - 503, - 505, + 494, + 495, 506, - 507, 508, 509, 510, 511, 512, - 517, - 518, - 522, - 526, - 528, - 530, + 513, + 514, + 515, + 520, + 521, + 525, + 529, 531, - 543, - 545, + 533, + 534, + 546, 548, - 550, + 551, 553, - 555, 556, - 557, 558, 559, 560, + 561, 562, - 567, - 568, + 563, + 565, + 570, 571, 574, - 576, 577, + 579, 580, 583, - 593, + 586, 596, - 597, - 598, + 599, 600, 601, - 602, 603, + 604, 605, 606, - 607, + 608, 609, - 616, - 636, - 637, - 638, + 610, + 612, + 619, 639, - 644, - 645, - 646, + 640, + 641, + 642, + 647, 648, 649, - 650, 651, 652, + 653, 654, - 667, - 668, - 673, - 680, - 682, - 684, + 655, + 657, + 670, + 671, + 676, + 683, 685, - 694, - 698, - 707, - 708, - 712, + 687, + 688, + 697, + 701, + 710, + 711, 715, - 716, - 722, - 727, - 731, - 732, - 733, + 718, + 719, + 725, + 730, 734, 735, 736, + 737, 738, - 740, - 747, - 748, + 739, + 741, + 743, + 750, 751, 754, - 755, - 759, + 757, + 758, 762, - 764, + 765, 767, - 768, 770, - 777, - 781, - 785, - 791, - 792, + 771, + 773, + 780, + 784, + 788, 794, - 800, - 801, - 802, + 795, + 797, 803, - 807, - 808, - 813, - 817, + 804, + 805, + 806, + 810, + 811, + 816, 820, - 825, - 827, + 823, + 828, 830, - 832, - 834, + 833, 835, - 836, 837, - 842, - 843, - 849, - 850, + 838, + 839, + 840, + 845, + 846, + 852, + 853, ], [ - 159, - -177, - 159, - 159, - 159, - -176, - 159, - 159, - 354, + 161, + -178, + 161, + 161, + 161, -177, - -180, - 159, - 159, - 159, - 159, - 354, - 354, - 159, - 159, - 159, - 159, - 354, - 159, - 159, - -49, - 159, - 159, - 159, - 159, - 159, - -411, - 354, - 159, - 159, - 159, - 159, - -29, - -166, - 159, - -172, - -173, - -360, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, + 161, + 161, + 357, + -178, -181, - 159, - 354, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 354, - 159, - 159, - 354, - 159, - 159, - 159, - 159, - 159, - 159, - 354, - -408, - 159, - -48, - 159, - 159, - 354, - 354, - 159, - 159, - -413, - 354, - 159, - -31, - 159, - 354, - 354, - 354, - 159, - -373, - 354, - 159, + 161, + 161, + 161, + 161, + 357, + 357, + 161, + 161, + 161, + 161, + 357, + 161, + 161, + -50, + 161, + 161, + 161, + 161, + 161, + -412, + 357, + 161, + 161, + 161, + 161, + -30, -167, - 159, + 161, + -173, -174, - -175, -361, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + -182, + 161, + 357, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 357, + 161, + 161, + 357, + 161, + 161, + 161, + 161, + 161, + 161, + 357, + -409, + 161, + -49, + 161, + 161, + 357, + 357, + 161, + 161, + -414, + 357, + 161, + -32, + 161, + 357, + 357, + 357, + 161, + -374, + 357, + 161, + -168, + 161, + -175, + -176, -362, -363, -364, - -359, - -411, - 159, - 159, - 159, - 159, - 159, - 354, - 159, - 159, - 354, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 159, - 354, - 159, - -411, - 159, - 159, - 159, - 159, - 354, - -406, + -365, + -360, + -412, + 161, + 161, + 161, + 161, + 161, + 357, + 161, + 161, + 357, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 161, + 357, + 161, + -412, + 161, + 161, + 161, + 161, + 357, -407, - 159, - -371, - 159, - -402, - 159, - 354, + -408, + 161, + -372, + 161, + -403, + 161, + 357, + -418, + 357, -417, - 354, -416, - -415, - -30, - 354, - 159, - 159, - 159, + -31, + 357, + 161, + 161, + 161, + -382, + -373, + -375, + 357, + -170, + -172, + 161, + 161, + 357, + 161, + 161, + 161, + 161, + 357, + 357, + 357, + 357, + 161, + 161, + -412, + 161, + 161, + -410, + -376, + 161, + 161, + 161, + 161, + -412, + -368, + 161, + 161, -381, - -372, - -374, - 354, + 161, -169, - -171, - 159, - 159, - 354, - 159, - 159, - 159, - 159, - 354, - 354, - 354, - 354, - 159, - 159, - -411, - 159, - 159, - -409, - -375, - 159, - 159, - 159, - 159, - -411, - -367, - 159, - 159, - -380, - 159, - -168, - 159, - 159, - 159, - 159, - 159, - 354, - -411, - 159, - -367, - 159, - 159, + 161, + 161, + 161, + 161, + 161, + 357, + -412, + 161, -368, + 161, + 161, -369, -370, - -411, - 159, - 159, - 159, - 159, - 159, - -416, - 159, - 159, - 159, - 159, - -416, - 159, - -411, - 159, - 159, - 159, + -371, + -412, + 161, + 161, + 161, + 161, + 161, + -417, + 161, + 161, + 161, + 161, + -417, + 161, + -412, + 161, + 161, + 161, ], ), "ARRAY": ( [ - 40, - 109, - 126, - 159, - 215, - 263, - 264, - 310, - 311, + 41, + 110, + 127, + 161, + 217, + 265, + 266, 312, 313, 314, - 331, - 354, - 460, - 461, - 503, - 505, + 315, + 316, + 333, + 357, + 463, + 464, 506, - 507, 508, 509, 510, 511, 512, - 517, - 583, - 636, - 637, - 638, + 513, + 514, + 515, + 520, + 586, 639, - 667, - 668, + 640, + 641, + 642, 670, - 762, - 764, - 810, - 832, + 671, + 673, + 765, + 767, + 813, + 835, ], [ + -178, -177, - -176, - 313, - -180, - 313, - -411, - -412, - -166, - 506, - -172, - -173, - -360, - 313, + 315, -181, + 315, + -412, -413, - -414, -167, - -170, + 509, + -173, -174, - -175, -361, + 315, + -182, + -414, + -415, + -168, + -171, + -175, + -176, -362, -363, -364, - -359, - 313, - 313, - -417, + -365, + -360, + 315, + 315, -418, + -419, + -417, -416, - -415, + -170, + -172, + 315, -169, - -171, - 313, - -168, - 506, - 313, - 506, + 509, + 315, + 509, ], ), "LT": ( [ - 40, - 109, - 126, - 159, - 215, - 263, - 264, - 310, - 311, + 41, + 110, + 127, + 161, + 217, + 265, + 266, 312, 313, 314, - 331, - 354, - 460, - 461, - 503, - 505, + 315, + 316, + 333, + 357, + 463, + 464, 506, - 507, 508, 509, 510, 511, 512, - 517, - 583, - 636, - 637, - 638, + 513, + 514, + 515, + 520, + 586, 639, - 667, - 668, + 640, + 641, + 642, 670, - 762, - 764, - 810, - 832, + 671, + 673, + 765, + 767, + 813, + 835, ], [ + -178, -177, - -176, - 314, - -180, - 314, - -411, - -412, - -166, - 314, - 508, - -173, - -360, - 314, + 316, -181, + 316, + -412, -413, - -414, -167, - -170, + 316, + 511, -174, - 508, -361, + 316, + -182, + -414, + -415, + -168, + -171, + -175, + 511, -362, -363, -364, - -359, - 314, - 314, - -417, + -365, + -360, + 316, + 316, -418, + -419, + -417, -416, - -415, + -170, + -172, + 316, -169, - -171, - 314, - -168, - 314, - 314, - 314, + 316, + 316, + 316, ], ), "DOT": ( [ - 40, - 109, - 130, - 145, + 41, + 110, + 131, 146, - 149, - 242, - 254, - 309, - 310, - 342, - 343, - 428, - 501, - 540, - 562, - 642, - 660, - 674, - 704, - 738, - 740, - 757, - 777, - 806, - 828, - ], - [ - -177, - -176, - 318, + 147, + 150, + 244, + 256, + 311, + 312, 344, 345, - 349, - 440, - 453, - 502, + 431, 504, - -176, - 539, - 611, - 664, - 689, - 702, - 746, - 758, - 766, - 778, - 795, - 702, - 805, - 815, - 829, - 840, + 543, + 565, + 645, + 663, + 677, + 707, + 741, + 743, + 760, + 780, + 809, + 831, + ], + [ + -178, + -177, + 320, + 346, + 347, + 351, + 443, + 456, + 505, + 507, + -177, + 542, + 614, + 667, + 692, + 705, + 749, + 761, + 769, + 781, + 798, + 705, + 808, + 818, + 832, + 843, ], ), "AS": ( [ - 40, - 63, - 109, - 123, - 127, - 145, - 149, - 159, - 204, - 216, - 235, - 242, - 255, - 261, + 41, + 64, + 110, + 124, + 128, + 146, + 150, + 161, + 206, + 218, + 237, + 244, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -41087,147 +41975,148 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 406, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 409, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 500, + 497, + 499, 503, - 505, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 544, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 547, + 603, + 604, + 605, 610, 613, - 621, - 625, - 632, - 633, - 634, + 616, + 624, + 628, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, + 197, -177, - 195, - -176, - 305, - -190, - -336, - 348, - -180, - 305, - -213, - -22, - 439, - 305, - -424, - -411, - -412, + 307, -191, + -337, + 350, + -181, + 307, + -214, + -20, + 442, + 307, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -41237,147 +42126,146 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 305, - -166, - -182, - -172, - -173, - -360, + -144, + 307, + -167, -183, - 305, - 305, - -181, - -214, - -403, + -173, + -174, + -361, + -184, + 307, + 307, + -182, + -215, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - 663, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + 666, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 305, - 305, - 305, - -335, - 691, - -405, + -365, + -360, + 307, + 307, + 307, + -336, + 694, -406, -407, - -402, - -144, - -146, - -38, - 743, - -425, + -408, + -403, + -145, + -147, + -39, + 746, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "NULL": ( [ - 40, - 109, - 123, - 127, - 145, - 159, - 204, - 216, - 235, - 255, - 261, + 41, + 110, + 124, + 128, + 146, + 161, + 206, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -41386,143 +42274,144 @@ 286, 287, 288, + 289, 290, - 291, - 294, + 292, + 293, 296, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 406, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 409, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, -177, - -176, - 290, - -190, - -336, - -180, - 290, - -213, - -22, - 290, - -424, - -411, - -412, + 292, -191, + -337, + -181, + 292, + -214, + -20, + 292, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -41532,150 +42421,149 @@ -210, -211, -212, - -365, - 480, - 485, - -392, - -29, - -189, - -142, - -143, - 290, - -166, - -182, - -172, - -173, - -360, - -183, - 290, - 290, - -181, - -214, - -403, - -404, - -408, - -429, - -413, - -414, - -194, - -195, - -390, - -202, - -31, - -33, - -437, + -213, -366, + 483, + 488, -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, - -394, - -395, - -397, - -371, - -373, + -30, + -190, + -143, + -144, + 292, -167, - -170, + -183, + -173, -174, - -175, -361, + -184, + 292, + 292, + -182, + -215, + -404, + -405, + -409, + -430, + -414, + -415, + -195, + -196, + -391, + -203, + -32, + -34, + -438, + -367, + -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, + -395, + -396, + -398, + -372, + -374, + -168, + -171, + -175, + -176, -362, -363, -364, - -359, - 290, - 290, - 290, - -335, - -405, + -365, + -360, + 292, + 292, + 292, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "NOT": ( [ - 40, - 109, - 116, - 123, - 127, - 131, - 145, - 159, - 204, - 216, - 235, - 249, + 41, + 110, + 117, + 124, + 128, + 132, + 146, + 161, + 206, + 218, + 237, 251, - 255, - 261, + 253, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -41684,153 +42572,154 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 404, - 406, - 408, - 416, - 417, - 418, - 438, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 407, + 409, + 411, + 419, + 420, + 421, + 441, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 542, - 591, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 545, + 594, + 603, + 604, + 605, 610, 613, - 621, - 627, - 632, - 633, - 634, + 616, + 624, + 630, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 690, - 701, - 703, - 733, - 734, - 745, + 671, + 673, + 693, + 704, + 706, + 736, + 737, 748, - 753, - 755, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, -177, - -176, - 260, - 291, - -190, - 322, - -336, - -180, - 291, - -213, - -22, - 444, - 448, - 291, - -424, - -411, - -412, + 262, + 293, -191, + 324, + -337, + -181, + 293, + -214, + -20, + 447, + 451, + 293, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, - 260, - -203, + -201, + 262, -204, -205, -206, @@ -41840,152 +42729,151 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 291, - -166, - -182, - -172, - -173, - -360, + -144, + 293, + -167, -183, - 291, - 291, - -181, - 590, - -214, - 260, - -403, + -173, + -174, + -361, + -184, + 293, + 293, + -182, + 593, + -215, + 262, -404, - -408, - 624, - -429, - -413, + -405, + -409, + 627, + -430, -414, - -194, + -415, -195, - -390, - 260, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + 262, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 291, - 291, - 291, - -335, - -434, - 260, - -405, + -365, + -360, + 293, + 293, + 293, + -336, + -435, + 262, -406, -407, - -402, - -144, - -146, - -38, - 744, - -425, + -408, + -403, + -145, + -147, + -39, + 747, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -435, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - 798, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -436, + -148, + -149, + -410, + -376, + 801, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "COLLATE": ( [ - 40, - 109, - 123, - 127, - 145, - 159, - 204, - 216, - 235, - 255, - 261, + 41, + 110, + 124, + 128, + 146, + 161, + 206, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -41994,141 +42882,142 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 406, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 409, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, -177, - -176, - 295, - -190, - -336, - -180, - 295, - -213, - -22, - 295, - -424, - -411, - -412, + 297, -191, + -337, + -181, + 297, + -214, + -20, + 297, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -42138,144 +43027,143 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 295, - -166, - -182, - -172, - -173, - -360, + -144, + 297, + -167, -183, - 295, - 295, - -181, - -214, - -403, + -173, + -174, + -361, + -184, + 297, + 297, + -182, + -215, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 295, - 295, - 295, - -335, - -405, + -365, + -360, + 297, + 297, + 297, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "ENFORCED": ( [ - 40, - 109, - 123, - 127, - 145, - 159, - 204, - 216, - 235, - 255, - 261, + 41, + 110, + 124, + 128, + 146, + 161, + 206, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -42284,146 +43172,147 @@ 286, 287, 288, + 289, 290, - 291, - 296, + 292, + 293, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 404, - 406, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 407, + 409, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 542, - 590, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 545, + 593, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 690, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 693, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, - 763, - 764, - 772, - 799, - 801, + 758, + 759, + 763, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, -177, - -176, - 296, - -190, - -336, - -180, - 296, - -213, - -22, - 296, - -424, - -411, - -412, + 298, -191, + -337, + -181, + 298, + -214, + -20, + 298, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -42433,152 +43322,151 @@ -210, -211, -212, - -365, - 481, - -392, - -29, - -189, - -142, + -213, + -366, + 484, + -393, + -30, + -190, -143, - 296, - -166, - -182, - -172, - -173, - -360, + -144, + 298, + -167, -183, - 296, - 296, - -181, - 296, - -214, - -403, + -173, + -174, + -361, + -184, + 298, + 298, + -182, + 298, + -215, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 296, - 296, - 296, - -335, - -434, - 481, - -405, + -365, + -360, + 298, + 298, + 298, + -336, + -435, + 484, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -435, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -436, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "FOREIGN": ( [ - 40, - 71, - 109, - 123, - 127, - 135, - 145, - 159, - 204, - 205, - 216, - 235, - 255, - 261, + 41, + 72, + 110, + 124, + 128, + 136, + 146, + 161, + 206, + 207, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -42587,146 +43475,147 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 328, - 333, - 339, - 354, - 406, - 412, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 330, + 335, + 341, + 357, + 409, + 415, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, + 219, -177, - 217, - -176, - 217, - -190, - 217, - -336, - -180, - 217, - 217, - -213, - -22, - 217, - -424, - -411, - -412, + 219, -191, + 219, + -337, + -181, + 219, + 219, + -214, + -20, + 219, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -42736,146 +43625,145 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 217, - -166, - -182, - -172, - -173, - -360, + -144, + 219, + -167, -183, - 217, - 217, - 217, - -181, - -214, - -396, - -403, + -173, + -174, + -361, + -184, + 219, + 219, + 219, + -182, + -215, + -397, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, - -362, - -363, - -364, - -359, - 217, - 217, - 217, - -335, - -405, + -176, + -362, + -363, + -364, + -365, + -360, + 219, + 219, + 219, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "ENCRYPT": ( [ - 40, - 109, - 123, - 127, - 145, - 159, - 204, - 216, - 235, - 255, - 261, + 41, + 110, + 124, + 128, + 146, + 161, + 206, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -42884,141 +43772,142 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 406, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 409, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, -177, - -176, - 298, - -190, - -336, - -180, - 298, - -213, - -22, - 298, - -424, - -411, - -412, + 300, -191, + -337, + -181, + 300, + -214, + -20, + 300, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -43028,144 +43917,143 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 298, - -166, - -182, - -172, - -173, - -360, + -144, + 300, + -167, -183, - 298, - 298, - -181, - -214, - -403, + -173, + -174, + -361, + -184, + 300, + 300, + -182, + -215, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 298, - 298, - 298, - -335, - -405, + -365, + -360, + 300, + 300, + 300, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "AUTOINCREMENT": ( [ - 40, - 109, - 123, - 127, - 145, - 159, - 204, - 216, - 235, - 255, - 261, + 41, + 110, + 124, + 128, + 146, + 161, + 206, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -43174,141 +44062,142 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 406, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 409, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, - 496, - 503, - 505, + 496, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, -177, - -176, - 300, - -190, - -336, - -180, - 300, - -213, - -22, - 300, - -424, - -411, - -412, + 302, -191, + -337, + -181, + 302, + -214, + -20, + 302, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -43318,144 +44207,143 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 300, - -166, - -182, - -172, - -173, - -360, + -144, + 302, + -167, -183, - 300, - 300, - -181, - -214, - -403, + -173, + -174, + -361, + -184, + 302, + 302, + -182, + -215, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 300, - 300, - 300, - -335, - -405, + -365, + -360, + 302, + 302, + 302, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "MASKING": ( [ - 40, - 109, - 123, - 127, - 145, - 159, - 204, - 216, - 235, - 255, - 261, + 41, + 110, + 124, + 128, + 146, + 161, + 206, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -43464,142 +44352,143 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, 303, - 307, - 310, - 311, + 304, + 305, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 406, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 409, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, -177, - -176, - 304, - -190, - -336, - -180, - 304, - -213, - -22, - 304, - -424, - -411, - -412, + 306, -191, + -337, + -181, + 306, + -214, + -20, + 306, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -43609,148 +44498,147 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 497, - 304, - -166, - -182, - -172, - -173, - -360, + -144, + 500, + 306, + -167, -183, - 304, - 304, - -181, - -214, - -403, + -173, + -174, + -361, + -184, + 306, + 306, + -182, + -215, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, - -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -415, + -195, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 304, - 304, - 304, - -335, - -405, + -365, + -360, + 306, + 306, + 306, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "CHECK": ( [ - 40, - 71, - 109, - 123, - 127, - 135, - 145, - 159, - 204, - 205, - 216, - 235, - 255, - 261, + 41, + 72, + 110, + 124, + 128, + 136, + 146, + 161, + 206, + 207, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -43759,147 +44647,148 @@ 286, 287, 288, + 289, 290, - 293, - 296, + 292, + 295, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 328, - 333, - 339, - 354, - 406, - 412, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 330, + 335, + 341, + 357, + 409, + 415, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, + 220, -177, - 218, - -176, - 218, - -190, - 218, - -336, - -180, - 218, - 218, - -213, - -22, - 218, - -424, - -411, - -412, + 220, -191, + 220, + -337, + -181, + 220, + 220, + -214, + -20, + 220, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -43909,149 +44798,148 @@ -210, -211, -212, - -365, - 218, - -392, - -29, - -189, - -142, + -213, + -366, + 220, + -393, + -30, + -190, -143, - 218, - -166, - -182, - -172, - -173, - -360, + -144, + 220, + -167, -183, - 218, - 218, - 218, - -181, - -214, - -396, - -403, + -173, + -174, + -361, + -184, + 220, + 220, + 220, + -182, + -215, + -397, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 218, - 218, - 218, - -335, - -405, + -365, + -360, + 220, + 220, + 220, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "CONSTRAINT": ( [ - 40, - 71, - 109, - 123, - 127, - 135, - 145, - 159, - 204, - 216, - 235, - 255, - 261, + 41, + 72, + 110, + 124, + 128, + 136, + 146, + 161, + 206, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -44060,143 +44948,144 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 406, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 409, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, + 216, -177, - 214, - -176, - 214, - -190, - 214, - -336, - -180, - 214, - -213, - -22, - 214, - -424, - -411, - -412, + 216, -191, + 216, + -337, + -181, + 216, + -214, + -20, + 216, + -425, + -412, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -44206,144 +45095,143 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 214, - -166, - -182, - -172, - -173, - -360, + -144, + 216, + -167, -183, - 214, - 214, - -181, - -214, - -403, + -173, + -174, + -361, + -184, + 216, + 216, + -182, + -215, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 214, - 214, - 214, - -335, - -405, + -365, + -360, + 216, + 216, + 216, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "GENERATED": ( [ - 40, - 109, - 123, - 127, - 145, - 159, - 204, - 216, - 235, - 255, - 261, + 41, + 110, + 124, + 128, + 146, + 161, + 206, + 218, + 237, + 257, 263, - 264, - 268, - 269, + 265, + 266, 270, + 271, 272, - 273, 274, 275, 276, 277, + 278, 279, - 280, 281, 282, 283, @@ -44352,141 +45240,142 @@ 286, 287, 288, + 289, 290, - 296, + 292, 298, 300, - 301, 302, - 307, - 310, - 311, + 303, + 304, + 309, 312, 313, 314, 315, - 333, - 339, - 354, - 406, - 416, - 417, - 418, - 459, - 460, - 461, - 469, - 470, + 316, + 317, + 335, + 341, + 357, + 409, + 419, + 420, + 421, + 462, + 463, + 464, 472, - 474, - 476, - 478, + 473, + 475, + 477, 479, - 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, - 490, 491, + 492, 493, 494, 496, - 503, - 505, + 497, + 499, 506, - 507, 508, 509, 510, 511, 512, - 524, - 535, - 536, - 540, - 600, - 601, - 602, - 607, + 513, + 514, + 515, + 527, + 538, + 539, + 543, + 603, + 604, + 605, 610, 613, - 621, - 632, - 633, - 634, + 616, + 624, 635, 636, 637, 638, 639, + 640, 641, - 643, + 642, 644, - 645, - 651, - 652, - 653, + 646, + 647, + 648, 654, 655, 656, - 667, - 668, + 657, + 658, + 659, 670, - 701, - 703, - 733, - 734, - 748, - 753, - 755, + 671, + 673, + 704, + 706, + 736, + 737, + 751, 756, - 760, - 762, + 758, + 759, 763, - 764, - 772, - 799, - 801, + 765, + 766, + 767, + 775, 802, - 803, 804, - 810, - 832, - 838, + 805, + 806, + 807, + 813, + 835, 841, 844, 847, - 852, + 850, + 855, ], [ + -178, -177, - -176, - 306, - -190, - -336, - -180, - 306, - -213, - -22, - 306, - -424, - -411, + 308, + -191, + -337, + -181, + 308, + -214, + -20, + 308, + -425, -412, - -191, + -413, -192, -193, - -196, + -194, -197, -198, -199, -200, -201, - -203, + -202, -204, -205, -206, @@ -44496,374 +45385,375 @@ -210, -211, -212, - -365, - -392, - -29, - -189, - -142, + -213, + -366, + -393, + -30, + -190, -143, - 306, - -166, - -182, - -172, - -173, - -360, + -144, + 308, + -167, -183, - 306, - 306, - -181, - -214, - -403, + -173, + -174, + -361, + -184, + 308, + 308, + -182, + -215, -404, - -408, - -429, - -413, + -405, + -409, + -430, -414, - -194, + -415, -195, - -390, - -202, - -31, - -33, - -437, - -366, - -393, - -158, - -371, - -384, - -385, - -387, - -381, - -373, + -196, + -391, + -203, + -32, + -34, + -438, + -367, -394, + -159, + -372, + -385, + -386, + -388, + -382, + -374, -395, - -397, - -371, - -373, - -167, - -170, - -174, + -396, + -398, + -372, + -374, + -168, + -171, -175, - -361, + -176, -362, -363, -364, - -359, - 306, - 306, - 306, - -335, - -405, + -365, + -360, + 308, + 308, + 308, + -336, -406, -407, - -402, - -144, - -146, - -38, - -425, + -408, + -403, + -145, + -147, + -39, -426, -427, -428, - -417, + -429, -418, + -419, + -417, -416, - -415, - -386, - -391, - -30, - -32, - -372, - -374, - -4, - -5, - -6, - -398, - -169, - -171, - -184, - -147, - -148, - -409, + -387, + -392, + -31, + -33, + -373, -375, - -367, - -388, - -380, - -380, - -165, - -168, + -27, + -28, + -29, + -399, + -170, + -172, -185, - -186, - -337, - -382, + -148, + -149, + -410, + -376, -368, - -369, - -370, -389, + -381, + -381, + -166, + -169, + -186, -187, + -338, + -383, + -369, + -370, + -371, + -390, -188, - -145, - -152, - -164, + -189, + -146, -153, - -163, + -165, + -154, + -164, ], ), "DEFERRABLE": ( [ - 40, - 109, - 116, - 145, - 260, - 261, - 277, - 408, - 459, - 474, - 540, - 591, - 632, - 633, - 634, + 41, + 110, + 117, + 146, + 262, + 263, + 279, + 411, + 462, + 477, + 543, + 594, 635, - 772, + 636, + 637, + 638, + 775, ], [ + -178, -177, - -176, - 259, - -336, - 459, - -424, - 259, - 259, - -429, - 259, - -335, - 259, + 261, + -337, + 462, -425, + 261, + 261, + -430, + 261, + -336, + 261, -426, -427, -428, - -337, + -429, + -338, ], ), "COMMAT": ( [ - 40, - 109, - 312, + 41, + 110, 314, - 507, - 508, - 509, + 316, 510, 511, 512, + 513, + 514, + 515, ], [ + -178, -177, - -176, - 510, - -360, - 510, + 513, -361, + 513, -362, -363, -364, - -359, + -365, + -360, ], ), "RT": ( [ - 40, - 109, - 312, + 41, + 110, 314, - 507, - 508, - 509, + 316, 510, 511, 512, + 513, + 514, + 515, ], [ + -178, -177, - -176, - 511, - -360, - 511, + 514, -361, + 514, -362, -363, -364, - -359, + -365, + -360, ], ), "BY": ( [ - 42, 43, 44, - 61, - 64, - 74, - 155, - 395, - 397, + 45, + 62, + 65, + 75, + 156, + 398, + 400, ], [ - 164, - 165, - 171, - 193, - 196, - 221, - 353, - 574, - 576, + 166, + 167, + 173, + 195, + 198, + 223, + 355, + 577, + 579, ], ), "SERDEPROPERTIES": ( [ - 49, + 50, ], [ - 176, + 178, ], ), "KEYS": ( [ - 60, + 61, ], [ - 192, + 194, ], ), "ITEMS": ( [ - 62, + 63, ], [ - 194, + 196, ], ), "FORMAT": ( [ - 86, + 87, ], [ - 231, + 233, ], ), "REPLACE": ( [ - 104, + 105, ], [ - 250, + 252, ], ), "COLUMN": ( [ - 136, - 138, + 137, 139, 140, + 141, ], [ - 334, 336, - 337, 338, + 339, + 340, ], ), "SALT": ( [ - 159, - 279, - 298, - 354, - 475, - 476, + 161, + 281, + 300, + 357, 478, - 644, - 645, + 479, + 481, + 647, + 648, ], [ - -180, - 476, - -29, -181, - 644, - -31, - -33, + 479, -30, + -182, + 647, -32, + -34, + -31, + -33, ], ), "SERDE": ( [ - 231, + 233, ], [ - 427, + 430, ], ), "DELETE": ( [ - 258, + 260, ], [ - 456, + 459, ], ), "UPDATE": ( [ - 258, - 297, + 260, + 299, ], [ - 457, - 492, + 460, + 495, ], ), "INITIALLY": ( [ - 259, + 261, ], [ - 458, + 461, ], ), "POLICY": ( [ - 304, - 497, + 306, + 500, ], [ - 498, - 659, + 501, + 662, ], ), "EXISTS": ( [ - 322, - 341, - 444, - 448, - 624, - 744, - 798, + 324, + 343, + 447, + 451, + 627, + 747, + 801, ], [ - 516, - 537, - 626, + 519, + 540, 629, - 742, - 797, - 826, + 632, + 745, + 800, + 829, ], ), } @@ -44892,7 +45782,7 @@ ], [ 2, - 47, + 48, ], ), "create_schema": ( @@ -45034,13 +45924,13 @@ "pkey": ( [ 0, - 71, - 205, + 72, + 207, ], [ 22, - 208, - 404, + 210, + 407, ], ), "seq_name": ( @@ -45102,13 +45992,13 @@ "pkey_statement": ( [ 0, - 71, - 205, + 72, + 207, ], [ 32, 32, - 407, + 410, ], ), "type_create": ( @@ -45145,640 +46035,644 @@ 35, 36, 39, - 45, - 48, - 50, - 52, + 40, + 46, + 49, + 51, 53, - 55, + 54, 56, - 65, + 57, 66, 67, 68, 69, - 71, - 73, + 70, + 72, 74, 75, 76, - 78, + 77, 79, - 84, - 89, + 80, + 85, 90, 91, - 94, + 92, 95, 96, - 99, + 97, 100, - 107, - 110, - 112, + 101, + 108, + 111, 113, - 117, - 119, - 122, + 114, + 118, + 120, 123, 124, 125, 126, - 130, - 133, - 135, - 137, - 140, - 142, + 127, + 131, + 134, + 136, + 138, + 141, 143, - 147, - 151, - 153, - 160, - 161, + 144, + 148, + 152, + 154, + 157, + 162, 163, - 164, 165, - 171, - 179, - 180, + 166, + 167, + 173, + 181, 182, 184, - 185, - 188, - 195, - 198, - 201, - 204, - 214, - 215, + 186, + 187, + 190, + 197, + 200, + 203, + 206, 216, - 219, - 220, + 217, + 218, 221, 222, 223, - 233, - 236, - 237, + 224, + 225, + 235, 238, + 239, 240, - 244, - 247, - 248, + 242, + 246, + 249, 250, 252, - 253, + 254, 255, - 256, 257, - 262, - 266, - 274, - 292, + 258, + 259, + 264, + 268, + 276, 294, - 295, - 299, - 306, - 307, + 296, + 297, + 301, 308, + 309, 310, - 311, 312, + 313, 314, 316, - 317, 318, - 323, + 319, + 320, 325, - 326, + 327, 328, - 329, + 330, 331, 333, - 334, + 335, 336, - 337, 338, 339, - 342, + 340, + 341, 344, - 345, 346, 347, + 348, 349, 351, 353, 355, - 359, - 361, + 358, 362, 364, 365, - 366, 367, 368, 369, + 370, + 371, 372, - 376, - 378, - 380, + 375, + 379, + 381, 383, - 385, 386, - 387, + 388, 389, - 391, - 396, - 400, - 402, - 406, - 407, - 411, - 413, - 415, - 419, - 421, + 390, + 392, + 394, + 399, + 403, + 405, + 409, + 410, + 414, + 416, + 418, 422, - 428, + 424, + 425, 431, - 432, + 434, 435, - 436, - 437, + 438, + 439, 440, - 453, - 454, - 455, + 443, 456, 457, 458, - 462, - 468, + 459, + 460, + 461, + 465, 471, - 487, - 488, - 492, - 493, + 474, + 490, + 491, 495, + 496, 498, - 499, + 501, 502, - 503, - 504, 505, + 506, 507, - 513, + 508, + 510, 516, - 517, - 518, 519, + 520, + 521, 522, - 524, - 526, - 528, - 530, - 534, - 535, - 536, + 525, + 527, + 529, + 531, + 533, 537, + 538, 539, - 543, - 545, - 550, - 552, + 540, + 542, + 546, + 548, 553, 555, 556, - 557, 558, 559, 560, + 561, 562, - 564, + 563, + 565, 567, - 568, + 570, 571, 574, - 576, 577, - 578, + 579, 580, + 581, 583, - 588, - 593, - 595, + 586, + 591, 596, - 597, 598, - 603, - 604, + 599, + 600, + 601, 606, + 607, 609, - 611, + 612, 614, - 622, - 623, - 640, - 646, - 647, - 648, + 617, + 625, + 626, + 643, 649, 650, - 657, - 659, + 651, + 652, + 653, + 660, 662, - 664, + 665, 667, 670, - 671, - 680, - 684, - 685, - 686, + 673, + 674, + 683, + 687, + 688, 689, - 694, - 695, + 692, + 697, 698, - 702, - 720, - 721, - 722, + 701, + 705, + 723, + 724, 725, - 726, - 731, - 732, + 728, + 729, + 734, 735, - 736, 738, - 740, + 739, 741, - 746, - 750, - 751, - 752, + 743, + 744, + 749, + 753, 754, - 758, - 759, - 764, - 766, + 755, + 757, + 761, + 762, 767, - 768, + 769, 770, - 777, - 778, - 784, + 771, + 773, + 780, + 781, 787, - 788, + 790, 791, 794, - 795, - 800, - 805, + 797, + 798, + 803, 808, - 810, + 811, 813, - 815, - 817, + 816, 818, 820, - 825, - 829, - 830, + 821, + 823, + 828, 832, - 834, + 833, 835, 837, + 838, 840, 843, - 849, - 850, + 846, + 852, + 853, ], [ 36, - 95, - 107, - 110, - 115, - 118, - 126, - 130, - 132, - 137, - 145, + 96, + 108, + 111, + 116, + 119, + 127, + 131, + 133, + 138, 146, - 149, - 151, + 147, + 150, 152, - 160, - 172, + 153, + 157, + 162, 174, - 180, - 184, - 160, - 188, - 189, - 160, - 200, - 200, - 160, - 188, - 215, - 219, - 220, + 176, + 182, + 186, + 162, + 190, + 191, + 162, + 202, + 202, + 162, + 190, + 217, + 221, 222, 224, - 227, - 228, + 226, 229, - 234, - 235, + 230, + 231, 236, + 237, 238, - 239, - 242, - 245, - 246, - 252, - 253, + 240, + 241, + 244, + 247, + 248, 254, - 126, - 145, - 263, - 267, - 292, - 126, - 309, - 310, - 317, - 325, - 331, - 335, - 126, - 145, - 343, - 263, - 350, + 255, + 256, + 127, + 146, + 265, + 269, + 294, + 127, + 311, + 312, + 319, + 327, + 333, + 337, + 127, + 146, + 345, + 265, 352, - 355, - 359, - 145, - 263, - 368, - 370, - 380, - 381, - 385, - 387, - 389, - 391, - 398, - 200, - 200, - 292, - 412, - 310, - 416, - 422, - 423, - 424, + 354, + 356, + 358, + 362, + 146, + 265, + 371, + 373, + 383, + 384, + 388, + 390, + 392, + 394, + 401, + 202, + 202, + 294, + 415, + 312, + 419, 425, 426, + 427, 428, + 429, 431, - 325, - 431, - 437, - 441, - 442, - 443, + 434, + 327, + 434, + 440, + 444, + 445, 446, 449, - 451, - 292, - 263, - 263, - 460, - 467, - 472, - 482, - 483, - 490, - 494, - 500, - 292, - 501, + 452, + 454, + 294, + 265, + 265, + 463, + 470, + 475, + 485, + 486, + 493, + 497, 503, - 263, - 509, + 294, + 504, + 506, + 265, 512, - 513, - 514, 515, + 516, 517, - 522, - 126, - 528, - 416, - 310, - 292, - 533, - 534, - 126, - 126, - 292, - 145, - 540, - 541, - 460, - 263, + 518, + 520, + 525, + 127, + 531, + 419, + 312, + 294, + 536, + 537, + 127, + 127, + 294, + 146, + 543, 544, - 263, + 463, + 265, 547, - 355, + 265, 550, - 552, - 263, - 263, - 460, - 263, - 460, - 263, - 263, - 263, - 380, - 562, - 564, - 385, + 358, + 553, + 555, + 265, + 265, + 463, + 265, + 463, + 265, + 265, + 265, + 383, + 565, 567, - 568, - 569, + 388, + 570, 571, - 569, - 575, - 583, - 585, - 416, - 592, - 263, - 263, - 599, - 605, - 607, + 572, + 574, + 572, + 578, + 586, + 588, + 419, + 595, + 265, + 265, + 602, 608, - 609, - 615, - 431, - 431, - 622, - 431, + 610, + 611, + 612, + 618, + 434, + 434, 625, - 630, - 460, - 460, + 434, + 628, 633, - 634, - 635, + 463, + 463, 636, - 267, - 642, - 605, - 651, - 653, + 637, + 638, + 639, + 269, + 645, + 608, + 654, 656, - 658, - 660, + 659, 661, - 666, - 667, - 668, - 460, - 509, + 663, + 664, 669, - 674, - 310, - 460, - 126, - 569, - 292, - 416, - 681, - 263, - 686, - 292, - 292, - 145, - 688, - 460, - 460, - 569, - 694, - 460, - 460, - 460, - 263, - 460, - 460, - 460, - 609, - 704, - 706, + 670, + 671, + 463, + 512, + 672, + 677, + 312, + 463, + 127, + 572, + 294, + 419, + 684, + 265, + 689, + 294, + 294, + 146, + 691, + 463, + 463, + 572, + 697, + 463, + 463, + 463, + 265, + 463, + 463, + 463, + 612, + 707, 709, - 569, - 711, + 712, + 572, 714, - 716, - 126, - 460, - 310, - 651, - 727, - 728, - 460, - 460, - 263, - 460, - 651, - 263, - 569, - 738, - 740, - 431, - 431, - 467, - 747, - 658, - 460, - 263, - 651, - 651, - 757, - 651, - 761, - 762, - 310, + 717, + 719, + 127, + 463, + 312, + 654, + 730, + 731, + 463, + 463, + 265, + 463, + 654, + 265, + 572, + 741, + 743, + 434, + 434, + 470, + 750, + 661, + 463, + 265, + 654, + 654, + 760, + 654, + 764, 765, - 263, - 460, - 263, - 771, - 772, - 569, + 312, + 768, + 265, + 463, + 265, + 774, 775, - 460, - 777, - 783, - 658, - 785, - 267, - 467, - 460, - 263, - 747, - 460, - 794, - 609, - 431, - 799, - 651, - 460, - 651, - 460, - 806, - 807, - 263, - 811, - 460, - 263, - 460, - 794, - 816, - 651, - 651, - 467, - 460, - 569, - 825, - 747, + 572, + 778, + 463, + 780, + 786, + 661, + 788, + 269, + 470, + 463, + 265, + 750, + 463, + 797, + 612, + 434, + 802, + 654, + 463, + 654, + 463, + 809, + 810, + 265, + 814, + 463, + 265, + 463, + 797, + 819, + 654, + 654, + 470, + 463, + 572, 828, - 460, - 310, - 460, - 834, - 263, - 658, - 785, - 837, - 841, - 842, - 263, + 750, + 831, + 463, + 312, + 463, 837, - 460, - 569, - 847, - 460, - 263, - 460, + 265, + 661, + 788, + 840, + 844, + 845, + 265, + 840, + 463, + 572, + 850, + 463, + 265, + 463, ], ), "using": ( @@ -45794,7 +46688,7 @@ 1, ], [ - 48, + 49, ], ), "storage": ( @@ -45802,103 +46696,103 @@ 1, ], [ - 50, + 51, ], ), "with": ( [ 1, - 212, + 214, ], [ - 54, - 409, + 55, + 412, ], ), "option_comment": ( [ 1, - 130, - 515, + 131, + 518, ], [ - 57, - 319, - 672, + 58, + 321, + 675, ], ), "option_with_tag": ( [ 1, - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ - 59, - 286, - 286, - 286, - 286, - 286, - 286, - 286, - 286, - 286, + 60, + 288, + 288, + 288, + 288, + 288, + 288, + 288, + 288, + 288, ], ), "clone": ( [ 1, 2, - 47, + 48, ], [ - 70, - 93, - 93, + 71, + 94, + 94, ], ), "encode": ( [ 1, - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ - 72, - 270, - 270, - 270, - 270, - 270, - 270, - 270, - 270, - 270, + 73, + 272, + 272, + 272, + 272, + 272, + 272, + 272, + 272, + 272, ], ), "tablespace": ( [ 1, - 265, + 267, ], [ - 82, - 465, + 83, + 468, ], ), "options": ( @@ -45907,62 +46801,62 @@ 4, 5, 34, - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, - ], - [ - 83, - 108, - 111, - 150, - 283, - 283, - 283, - 283, - 283, - 283, - 283, - 283, - 283, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], - ), - "ref": ( [ - 9, - 123, - 204, - 207, - 255, - 278, - 307, - 333, - 339, - 405, - 524, - 535, - 536, + 84, + 109, + 112, + 151, + 285, + 285, + 285, + 285, + 285, + 285, + 285, + 285, + 285, ], + ), + "ref": ( [ - 116, - 277, - 277, + 9, + 124, + 206, + 209, + 257, + 280, + 309, + 335, + 341, 408, - 277, - 474, - 277, - 277, - 277, - 591, - 277, - 277, - 277, + 527, + 538, + 539, + ], + [ + 117, + 279, + 279, + 411, + 279, + 477, + 279, + 279, + 279, + 594, + 279, + 279, + 279, ], ), "using_tablespace": ( @@ -45970,861 +46864,812 @@ 14, ], [ - 120, + 121, ], ), "defcolumn": ( [ 21, - 71, - 113, - 124, - 135, - 140, - 326, - 337, - 338, + 72, + 114, + 125, + 136, + 141, + 328, + 339, + 340, ], [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], ), "likke": ( [ 21, - 124, + 125, ], [ - 125, - 308, + 126, + 310, ], ), "column": ( [ 21, - 71, - 113, - 124, - 135, - 140, - 323, - 326, - 337, - 338, - 400, - 519, - 578, + 72, + 114, + 125, + 136, + 141, + 325, + 328, + 339, + 340, + 403, + 522, + 581, ], [ - 127, - 127, - 127, - 127, - 127, - 127, - 520, - 127, - 127, - 127, - 582, - 678, - 717, + 128, + 128, + 128, + 128, + 128, + 128, + 523, + 128, + 128, + 128, + 585, + 681, + 720, ], ), "t_name": ( [ 30, - 117, - 142, - 163, - 342, - 537, + 118, + 143, + 165, + 344, + 540, ], [ - 144, - 261, - 340, - 363, - 538, - 687, + 145, + 263, + 342, + 366, + 541, + 690, ], ), "STRING": ( [ - 39, - 44, - 48, - 58, - 119, - 147, - 160, - 161, - 164, - 165, - 182, + 40, + 45, + 49, + 59, + 120, + 148, + 162, + 163, + 166, + 167, 184, - 185, - 188, - 191, - 216, - 252, - 253, - 256, - 257, - 262, - 279, - 289, - 294, - 295, - 311, - 320, - 323, + 186, + 187, + 190, + 193, + 218, + 254, + 255, + 258, + 259, + 264, + 281, + 291, + 296, + 297, + 313, + 322, 325, - 329, + 327, 331, - 346, - 347, - 351, + 333, + 348, + 349, 353, 355, - 362, - 364, + 358, 365, - 366, 367, 368, 369, + 370, + 371, 372, - 383, - 387, - 391, - 398, - 400, - 406, - 411, - 413, + 375, + 386, + 390, + 394, + 401, + 403, + 409, + 414, 416, 419, - 428, + 422, 431, - 454, - 455, - 462, - 477, - 487, - 492, - 505, - 518, - 522, - 526, - 528, - 530, - 543, - 545, - 550, + 434, + 457, + 458, + 465, + 480, + 490, + 495, + 508, + 521, + 525, + 529, + 531, + 533, + 546, + 548, 553, - 555, 556, - 557, 558, 559, 560, + 561, 562, - 567, - 568, + 563, + 565, + 570, 571, 574, - 576, - 580, - 593, + 577, + 579, + 583, 596, - 597, - 598, - 603, + 599, + 600, + 601, 606, 609, - 646, - 648, + 612, 649, - 673, - 680, - 684, - 685, - 694, - 698, - 716, - 722, - 731, - 732, + 651, + 652, + 676, + 683, + 687, + 688, + 697, + 701, + 719, + 725, + 734, 735, - 736, 738, - 740, - 751, + 739, + 741, + 743, 754, - 759, - 764, + 757, + 762, 767, - 768, 770, - 777, - 791, + 771, + 773, + 780, 794, - 800, - 808, - 813, - 817, + 797, + 803, + 811, + 816, 820, - 825, - 830, - 832, - 834, + 823, + 828, + 833, 835, 837, - 843, - 849, - 850, + 838, + 840, + 846, + 852, + 853, ], [ - 156, - 169, - 175, - 190, - 264, - 264, - 358, - 358, - 264, - 264, - 386, - 358, - 358, - 358, - 393, - 417, - 450, - 452, - 264, - 264, - 461, - 478, - 479, - 484, - 491, - 264, - 169, - 264, - 358, - 417, - 531, - 461, - 264, - 264, - 548, - 358, - 264, - 264, - 461, - 264, - 461, - 264, - 264, - 264, - 386, - 358, - 358, - 577, - 264, - 417, - 264, - 264, - 600, - 264, - 358, - 616, - 461, - 461, - 637, - 645, - 264, - 654, - 461, - 461, - 358, - 417, - 682, - 264, - 461, - 461, - 358, - 461, - 461, - 461, - 264, - 461, - 461, - 461, - 358, - 707, - 708, - 358, - 712, + 158, + 171, + 177, + 192, + 266, + 266, + 361, + 361, + 266, + 266, + 389, + 361, + 361, + 361, + 396, + 420, + 453, + 455, + 266, + 266, + 464, + 481, + 482, + 487, + 494, + 266, + 171, + 266, + 361, + 420, + 534, + 464, + 266, + 266, + 551, + 361, + 266, + 266, + 464, + 266, + 464, + 266, + 266, + 266, + 389, + 361, + 361, + 580, + 266, + 420, + 266, + 266, + 603, + 266, + 361, + 619, + 464, + 464, + 640, + 648, + 266, + 657, + 464, + 464, + 361, + 420, + 685, + 266, + 464, + 464, + 361, + 464, + 464, + 464, + 266, + 464, + 464, + 464, + 361, + 710, + 711, + 361, 715, - 461, - 264, - 461, - 461, - 264, - 461, - 264, - 358, - 264, - 461, - 264, - 169, - 264, - 461, - 264, - 358, - 461, - 781, - 264, - 461, - 264, - 264, - 461, - 358, - 358, - 461, - 461, - 264, - 264, - 461, - 264, - 461, - 358, - 461, - 358, - 264, - 461, - 461, - 264, - 264, - 358, - 264, - 264, - 358, - 461, - 358, - 461, - 264, - 461, + 718, + 464, + 266, + 464, + 464, + 266, + 464, + 266, + 361, + 266, + 464, + 266, + 171, + 266, + 464, + 266, + 361, + 464, + 784, + 266, + 464, + 266, + 266, + 464, + 361, + 361, + 464, + 464, + 266, + 266, + 464, + 266, + 464, + 361, + 464, + 361, + 266, + 464, + 464, + 266, + 266, + 361, + 266, + 266, + 361, + 464, + 361, + 464, + 266, + 464, ], ), "table_property_equals": ( [ - 39, - 53, - 65, - 68, - 160, - 355, + 40, + 54, + 66, + 69, + 162, + 358, ], [ - 158, - 186, - 197, - 202, - 357, - 357, + 160, + 188, + 199, + 204, + 360, + 360, ], ), "id_equals": ( [ - 39, - 53, - 65, - 68, - 133, - 160, - 237, - 355, + 40, + 54, + 66, + 69, + 134, + 162, + 239, + 358, ], [ - 162, - 162, - 162, - 162, - 324, - 162, - 434, - 162, + 164, + 164, + 164, + 164, + 326, + 164, + 437, + 164, ], ), "by_smthg": ( [ - 44, + 45, ], [ - 167, + 169, ], ), "with_args": ( [ - 49, - 177, - 375, - 410, + 50, + 179, + 378, + 413, ], [ - 177, - 375, - 375, - 177, + 179, + 378, + 378, + 179, ], ), "multi_assignments": ( [ - 51, - 176, + 52, + 178, ], [ - 181, - 374, + 183, + 377, ], ), "table_property_equals_int": ( [ - 52, + 53, ], [ - 183, + 185, ], ), "table_property_equals_bool": ( [ - 55, - 69, + 56, + 70, ], [ - 187, - 203, + 189, + 205, ], ), "multiple_format_equals": ( [ - 66, 67, + 68, ], [ - 198, - 201, + 200, + 203, ], ), "fmt_equals": ( [ - 66, 67, - 198, - 201, - 402, - 722, - 820, + 68, + 200, + 203, + 405, + 725, + 823, ], [ - 199, - 199, - 401, - 401, - 587, - 587, - 587, + 201, + 201, + 404, + 404, + 590, + 590, + 590, ], ), "constraint": ( [ - 71, - 123, - 135, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 72, + 124, + 136, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ - 205, - 293, - 328, - 293, - 293, - 293, - 293, - 293, - 293, - 293, - 293, + 207, + 295, + 330, + 295, + 295, + 295, + 295, + 295, + 295, + 295, + 295, ], ), "check_ex": ( [ - 71, - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 72, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ - 206, - 273, - 273, - 273, - 273, - 273, - 273, - 273, - 273, - 273, + 208, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, + 275, ], ), "foreign": ( [ - 71, - 123, - 135, - 204, - 205, - 255, - 307, - 328, - 333, - 339, - 524, - 535, - 536, + 72, + 124, + 136, + 206, + 207, + 257, + 309, + 330, + 335, + 341, + 527, + 538, + 539, ], [ - 207, - 278, - 327, - 278, - 405, - 278, - 278, - 525, - 278, - 278, - 278, - 278, - 278, + 209, + 280, + 329, + 280, + 408, + 280, + 280, + 528, + 280, + 280, + 280, + 280, + 280, ], ), "uniq": ( [ - 71, - 205, + 72, + 207, ], [ - 209, - 403, + 211, + 406, ], ), "statem_by_id": ( [ - 71, + 72, ], [ - 210, + 212, ], ), "period_for": ( [ - 71, + 72, ], [ - 211, + 213, ], ), "pkey_constraint": ( [ - 71, + 72, ], [ - 212, + 214, ], ), "check_st": ( [ - 71, - 123, - 135, - 204, - 205, - 255, - 293, - 307, - 328, - 333, - 339, - 524, - 535, - 536, + 72, + 124, + 136, + 206, + 207, + 257, + 295, + 309, + 330, + 335, + 341, + 527, + 538, + 539, ], [ - 216, - 216, - 329, - 216, - 406, - 216, - 406, - 216, - 526, - 216, - 216, - 216, - 216, - 216, + 218, + 218, + 331, + 218, + 409, + 218, + 409, + 218, + 529, + 218, + 218, + 218, + 218, + 218, ], ), "pid": ( [ - 119, - 147, - 164, - 165, - 256, - 257, - 311, - 323, - 347, - 351, - 362, - 364, - 366, - 368, + 120, + 148, + 166, + 167, + 258, + 259, + 313, + 325, + 349, + 353, + 365, + 367, 369, + 371, 372, - 400, - 411, - 413, - 419, - 487, - 530, - 557, - 593, - 598, - 606, - 646, + 375, + 403, + 414, + 416, + 422, + 490, + 533, + 560, + 596, + 601, + 609, 649, - 680, - 685, - 722, - 732, + 652, + 683, + 688, + 725, 735, - 759, - 764, - 768, - 800, - 817, + 738, + 762, + 767, + 771, + 803, 820, - 830, - 832, - 849, + 823, + 833, + 835, + 852, ], [ - 262, - 346, - 365, - 367, - 454, - 455, - 505, - 518, - 543, - 545, - 553, - 555, + 264, + 348, + 368, + 370, + 457, + 458, + 508, + 521, + 546, + 548, 556, 558, 559, - 560, - 580, - 596, - 597, - 603, - 648, - 684, - 698, - 346, - 731, - 736, - 751, + 561, + 562, + 563, + 583, + 599, + 600, + 606, + 651, + 687, + 701, + 348, + 734, + 739, 754, - 767, + 757, 770, - 751, - 791, - 751, - 808, - 505, - 813, - 751, - 835, - 751, - 843, - 505, - 850, + 773, + 754, + 794, + 754, + 811, + 508, + 816, + 754, + 838, + 754, + 846, + 508, + 853, ], ), "index_pid": ( [ - 122, - 468, - 593, - 725, + 123, + 471, + 596, + 728, ], [ - 266, - 640, - 726, - 788, + 268, + 643, + 729, + 791, ], ), "comment": ( [ - 123, - 127, - 204, - 255, - 307, - 333, - 339, - 520, - 524, - 535, - 536, - 582, - 678, - 717, + 124, + 128, + 206, + 257, + 309, + 335, + 341, + 523, + 527, + 538, + 539, + 585, + 681, + 720, ], [ - 268, - 315, - 268, - 268, - 268, - 268, - 268, - 315, - 268, - 268, - 268, - 315, - 315, - 315, + 270, + 317, + 270, + 270, + 270, + 270, + 270, + 317, + 270, + 270, + 270, + 317, + 317, + 317, ], ), "null": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ - 269, - 269, - 269, - 269, - 269, - 269, - 269, - 269, - 269, + 271, + 271, + 271, + 271, + 271, + 271, + 271, + 271, + 271, ], ), "default": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, - ], - [ - 274, - 274, - 274, - 274, - 274, - 274, - 274, - 274, - 274, - ], - ), - "collate": ( - [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, - ], - [ - 275, - 275, - 275, - 275, - 275, - 275, - 275, - 275, - 275, - ], - ), - "enforced": ( - [ - 123, - 204, - 255, - 307, - 333, - 339, - 404, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ 276, @@ -46833,71 +47678,72 @@ 276, 276, 276, - 589, 276, 276, 276, ], ), - "encrypt": ( + "collate": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ - 279, - 279, - 279, - 279, - 279, - 279, - 279, - 279, - 279, + 277, + 277, + 277, + 277, + 277, + 277, + 277, + 277, + 277, ], ), - "generated": ( + "enforced": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 407, + 527, + 538, + 539, ], [ - 280, - 280, - 280, - 280, - 280, - 280, - 280, - 280, - 280, + 278, + 278, + 278, + 278, + 278, + 278, + 592, + 278, + 278, + 278, ], ), - "c_property": ( + "encrypt": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ 281, @@ -46911,17 +47757,17 @@ 281, ], ), - "on_update": ( + "generated": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ 282, @@ -46935,17 +47781,41 @@ 282, ], ), - "autoincrement": ( + "c_property": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, + ], + [ + 283, + 283, + 283, + 283, + 283, + 283, + 283, + 283, + 283, + ], + ), + "on_update": ( + [ + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ 284, @@ -46959,41 +47829,41 @@ 284, ], ), - "option_order_noorder": ( + "autoincrement": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ - 285, - 285, - 285, - 285, - 285, - 285, - 285, - 285, - 285, + 286, + 286, + 286, + 286, + 286, + 286, + 286, + 286, + 286, ], ), - "option_with_masking_policy": ( + "option_order_noorder": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ 287, @@ -47007,398 +47877,422 @@ 287, ], ), + "option_with_masking_policy": ( + [ + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, + ], + [ + 289, + 289, + 289, + 289, + 289, + 289, + 289, + 289, + 289, + ], + ), "as_virtual": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ - 288, - 288, - 288, - 288, - 288, - 288, - 288, - 288, - 288, + 290, + 290, + 290, + 290, + 290, + 290, + 290, + 290, + 290, ], ), "gen_always": ( [ - 123, - 204, - 255, - 307, - 333, - 339, - 524, - 535, - 536, + 124, + 206, + 257, + 309, + 335, + 341, + 527, + 538, + 539, ], [ - 299, - 299, - 299, - 299, - 299, - 299, - 299, - 299, - 299, + 301, + 301, + 301, + 301, + 301, + 301, + 301, + 301, + 301, ], ), "c_type": ( [ - 126, - 215, - 331, - 517, - 583, - 670, - 810, + 127, + 217, + 333, + 520, + 586, + 673, + 813, ], [ - 311, - 311, - 311, - 311, - 311, - 764, - 832, + 313, + 313, + 313, + 313, + 313, + 767, + 835, ], ), "tid": ( [ - 126, - 215, - 311, - 331, - 517, - 583, - 670, - 764, - 810, - 832, + 127, + 217, + 313, + 333, + 520, + 586, + 673, + 767, + 813, + 835, ], [ - 312, - 312, - 507, - 312, - 312, - 312, - 312, - 507, - 312, - 507, + 314, + 314, + 510, + 314, + 314, + 314, + 314, + 510, + 314, + 510, ], ), "id_or_string": ( [ - 160, - 161, - 184, - 185, - 188, - 325, - 355, - 387, - 391, - 428, - 522, - 550, - 562, - 571, - 609, - 694, - 738, - 740, - 777, - 794, - 825, - 834, + 162, + 163, + 186, + 187, + 190, + 327, + 358, + 390, + 394, + 431, + 525, + 553, + 565, + 574, + 612, + 697, + 741, + 743, + 780, + 797, + 828, 837, + 840, ], [ - 356, - 360, - 388, - 390, - 392, - 523, - 549, - 570, + 359, + 363, + 391, + 393, + 395, + 526, + 552, 573, - 612, - 679, - 693, - 612, - 710, - 737, - 774, - 796, - 612, - 796, - 824, - 839, - 839, - 846, + 576, + 615, + 682, + 696, + 615, + 713, + 740, + 777, + 799, + 615, + 799, + 827, + 842, + 842, + 849, ], ), "equals": ( [ - 179, - 376, + 181, + 379, ], [ - 379, - 561, + 382, + 564, ], ), "assignment": ( [ - 182, - 383, + 184, + 386, ], [ - 384, - 566, + 387, + 569, ], ), "pid_with_type": ( [ - 196, + 198, ], [ - 399, + 402, ], ), "funct_args": ( [ - 216, - 329, - 406, - 526, + 218, + 331, + 409, + 529, ], [ - 418, - 418, - 418, - 418, + 421, + 421, + 421, + 421, ], ), "multiple_tag_equals": ( [ - 233, - 378, + 235, + 381, ], [ - 429, - 563, + 432, + 566, ], ), "tag_equals": ( [ - 233, - 378, - 614, + 235, + 381, + 617, ], [ - 430, - 430, - 739, + 433, + 433, + 742, ], ), "properties": ( [ - 236, 238, - 437, - 622, + 240, + 440, + 625, ], [ - 432, 435, - 623, - 741, + 438, + 626, + 744, ], ), "property": ( [ - 236, 238, - 432, + 240, 435, - 437, - 622, - 623, - 741, + 438, + 440, + 625, + 626, + 744, ], [ - 433, - 433, - 620, - 620, - 433, - 433, - 620, - 620, + 436, + 436, + 623, + 623, + 436, + 436, + 623, + 623, ], ), "funct_expr": ( [ - 294, - 299, - 487, + 296, + 301, + 490, ], [ - 486, - 493, - 649, + 489, + 496, + 652, ], ), "multi_id": ( [ - 294, - 299, - 402, - 419, - 487, - 495, - 499, - 646, - 647, - 721, - 722, - 735, - 759, - 800, - 818, - 820, - 830, + 296, + 301, + 405, + 422, + 490, + 498, + 502, + 649, + 650, + 724, + 725, + 738, + 762, + 803, + 821, + 823, + 833, ], [ - 488, - 488, - 588, - 604, - 650, - 657, - 662, - 750, - 752, - 784, + 491, + 491, + 591, + 607, + 653, + 660, + 665, + 753, + 755, 787, - 750, - 750, - 750, - 784, + 790, + 753, + 753, + 753, 787, - 750, + 790, + 753, ], ), "f_call": ( [ - 294, - 299, - 402, - 419, - 487, - 488, - 492, + 296, + 301, + 405, + 422, + 490, + 491, 495, - 499, - 588, - 604, - 646, - 647, + 498, + 502, + 591, + 607, + 649, 650, - 657, - 662, - 721, - 722, - 735, - 750, - 752, - 759, - 784, + 653, + 660, + 665, + 724, + 725, + 738, + 753, + 755, + 762, 787, - 800, - 818, - 820, - 830, + 790, + 803, + 821, + 823, + 833, ], [ - 489, - 496, - 489, - 489, - 489, - 652, + 492, + 499, + 492, + 492, + 492, 655, - 489, - 489, - 652, - 652, - 749, - 489, - 652, - 652, - 652, - 489, - 749, - 749, - 652, - 652, - 749, - 652, - 652, - 749, - 489, - 749, - 749, + 658, + 492, + 492, + 655, + 655, + 752, + 492, + 655, + 655, + 655, + 492, + 752, + 752, + 655, + 655, + 752, + 655, + 655, + 752, + 492, + 752, + 752, ], ), "multiple_column_names": ( [ - 323, + 325, ], [ - 519, + 522, ], ), "multiple_funct": ( [ - 400, + 403, ], [ - 581, + 584, ], ), "funct": ( [ - 400, - 720, + 403, + 723, ], [ - 584, - 782, + 587, + 785, ], ), "dot_id": ( [ - 471, + 474, ], [ - 641, + 644, ], ), } @@ -47429,11 +48323,9 @@ "mssql.py", 6, ), - ("on_update -> ON UPDATE id", "on_update", 3, "p_on_update", "mysql.py", 6), - ("on_update -> ON UPDATE STRING", "on_update", 3, "p_on_update", "mysql.py", 7), - ("on_update -> ON UPDATE f_call", "on_update", 3, "p_on_update", "mysql.py", 8), ("expr -> expr id LP id RP", "expr", 5, "p_expression_distkey", "redshift.py", 6), ("expr -> expr using", "expr", 2, "p_expression_using", "spark_sql.py", 6), + ("expr -> expr ENGINE id id", "expr", 4, "p_engine", "mysql.py", 7), ( "multiple_options -> options", "multiple_options", @@ -47559,6 +48451,9 @@ "sql.py", 16, ), + ("on_update -> ON UPDATE id", "on_update", 3, "p_on_update", "mysql.py", 14), + ("on_update -> ON UPDATE STRING", "on_update", 3, "p_on_update", "mysql.py", 15), + ("on_update -> ON UPDATE f_call", "on_update", 3, "p_on_update", "mysql.py", 16), ("encrypt -> ENCRYPT", "encrypt", 1, "p_encrypt", "oracle.py", 14), ("encrypt -> encrypt NO SALT", "encrypt", 3, "p_encrypt", "oracle.py", 15), ("encrypt -> encrypt SALT", "encrypt", 2, "p_encrypt", "oracle.py", 16), diff --git a/simple_ddl_parser/tokens.py b/simple_ddl_parser/tokens.py index ae17b01..179a560 100644 --- a/simple_ddl_parser/tokens.py +++ b/simple_ddl_parser/tokens.py @@ -79,7 +79,7 @@ common_statements.update(first_liners) definition_statements.update(common_statements) -alter_tokens = {"COLUMN", "RENAME", "TO", "PRIMARY", "KEY", "MODIFY"} +alter_tokens = {"COLUMN", "RENAME", "PRIMARY", "KEY", "MODIFY"} alter_tokens = {value: value for value in alter_tokens} after_columns_tokens = { @@ -119,6 +119,7 @@ "TABLE_FORMAT", "STAGE_FILE_FORMAT", "CATALOG", + "ENGINE", } after_columns_tokens = {value: value for value in after_columns_tokens} diff --git a/tests/dialects/test_mssql_specific.py b/tests/dialects/test_mssql_specific.py index 9f98e94..b8d6254 100644 --- a/tests/dialects/test_mssql_specific.py +++ b/tests/dialects/test_mssql_specific.py @@ -10,7 +10,7 @@ def test_int_identity_type(): ) """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [" NOTE"], "ddl_properties": [], @@ -67,7 +67,7 @@ def test_mssql_foreign_ref_in_column(): ) """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [" NOTE", " ADD THIS COLUMN FOR THE FOREIGN KEY"], "ddl_properties": [], @@ -139,7 +139,7 @@ def test_max_supported_as_column_size(): user_first_name VARCHAR(max) NOT NULL, ) """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "sequences": [], "ddl_properties": [], @@ -195,7 +195,7 @@ def test_constraint_unique(): ) """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [" NOTE"], "sequences": [], @@ -321,7 +321,6 @@ def test_constraint_unique_none(): "schema": None, "table_name": "sqlserverlist", "tablespace": None, - "constraints": {"uniques": None, "checks": None, "references": None}, } ], "types": [], @@ -370,7 +369,7 @@ def test_two_unique_constructs(): ) """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [ " NOTE", @@ -763,7 +762,7 @@ def test_foreign_keys(): ); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [ " NOTE", @@ -1120,7 +1119,7 @@ def test_alter_unique(): ALTER TABLE sqlserverlist ADD CONSTRAINT UC_Person_ening_funds UNIQUE (current_funds,create_date); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [ " NOTE", @@ -1744,7 +1743,7 @@ def test_mysql_constraint_pk(): ); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "sequences": [], "ddl_properties": [], @@ -1884,7 +1883,7 @@ def test_constraint_primary_key(): [id] ASC ) """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") assert result == expected @@ -1912,7 +1911,7 @@ def test_constraint_with_with(): IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON))""" - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [ "***** Object: Table [dbo].[users_WorkSchedule] Script Date: " @@ -2137,7 +2136,7 @@ def test_with_on(): ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY] )""" - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") assert expected == result @@ -2162,7 +2161,7 @@ def test_period_for_system_time(): PERIOD FOR SYSTEM_TIME ([StartHistory], [EndHistory]) ) """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "ddl_properties": [], "domains": [], @@ -2286,7 +2285,7 @@ def test_on_primary_on_table_level(): PERIOD FOR SYSTEM_TIME ([StartHistory], [EndHistory]) )) ON [PRIMARY] """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "ddl_properties": [], "domains": [], @@ -2411,7 +2410,7 @@ def test_with_on_table_level(): ( SYSTEM_VERSIONING = ON )""" - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [ "***** Object: Table [dbo].[users_WorkSchedule] Script Date: " @@ -2502,7 +2501,7 @@ def test_with_on_with_properties(): ( SYSTEM_VERSIONING = ON ( HISTORY_TABLE = [dbo].[users_WorkScheduleHistory] ) )""" - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [ "***** Object: Table [dbo].[users_WorkSchedule] Script Date: " @@ -2649,7 +2648,7 @@ def test_output_separated_by_go_and_textimage(): ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO""" - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [ "***** Object: Table [dbo].[TO_Requests] Script Date: " @@ -2972,7 +2971,7 @@ def test_next_value_for(): ddl = """CREATE TABLE [dbo].[SLIPEVENTO] ( [cdSLIP] [bigint] NOT NULL DEFAULT NEXT VALUE FOR [dbo].[sqCdSLIPEvt] )""" - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "ddl_properties": [], "domains": [], @@ -3028,7 +3027,7 @@ def test_primary_key_clustered(): IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY] ) ON [PRIMARY] GO""" - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mssql") expected = { "comments": [ "***** Object: Table [aud].[tcal_tgt] Script Date: " diff --git a/tests/dialects/test_mysql.py b/tests/dialects/test_mysql.py index b2bc378..c35f72f 100644 --- a/tests/dialects/test_mysql.py +++ b/tests/dialects/test_mysql.py @@ -5,7 +5,7 @@ def test_simple_on_update(): ddl = """CREATE TABLE t1 ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);""" - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="mysql") expected = { "tables": [ { @@ -57,8 +57,8 @@ def test_on_update_with_fcall(): `id` bigint not null, `updated_at` timestamp(3) not null default current_timestamp(3) on update current_timestamp(3), primary key (id));""" - result = DDLParser(ddl).run(group_by_type=True) - expcted = { + result = DDLParser(ddl).run(group_by_type=True, output_mode="mysql") + expected = { "domains": [], "schemas": [], "sequences": [], @@ -100,7 +100,7 @@ def test_on_update_with_fcall(): "ddl_properties": [], "types": [], } - assert expcted == result + assert expected == result def test_default_charset(): @@ -125,7 +125,7 @@ def test_default_charset(): PRIMARY KEY (id) ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '导入元数据管理'; """ - ).run(group_by_type=True) + ).run(group_by_type=True, output_mode="mysql") expected = { "ddl_properties": [], @@ -134,9 +134,8 @@ def test_default_charset(): "sequences": [], "tables": [ { - "ENGINE": "=", + "engine": "INNODB", "alter": {}, - "authorization": "INNODB", "checks": [], "columns": [ { @@ -310,11 +309,10 @@ def test_identity_with_properties(): CREATE TABLE IF NOT EXISTS database.table_name ( [cifno] [numeric](10, 0) IDENTITY(1,1) NOT NULL, - puts (1,1) in the size field ) """ - result = DDLParser(ddl).run() + result = DDLParser(ddl).run(output_mode="mysql") expected = [ { "alter": {}, @@ -333,12 +331,10 @@ def test_identity_with_properties(): } ], "if_not_exists": True, - "in": "the", "index": [], "partitioned_by": [], "primary_key": [], "schema": "database", - "size": "field", "table_name": "table_name", "tablespace": None, } From 1a986882d466b8c5f760663516152cb914e8fa88 Mon Sep 17 00:00:00 2001 From: xnuinside Date: Tue, 9 Jan 2024 02:46:38 +0300 Subject: [PATCH 07/12] hql output mode dialect --- simple_ddl_parser/dialects/sql.py | 4 +- simple_ddl_parser/output/dialects.py | 22 +- simple_ddl_parser/output/table_data.py | 19 +- simple_ddl_parser/parsetab.py | 1374 ++++++++++++------------ tests/dialects/test_hql.py | 40 +- tests/dialects/test_ibm_db2.py | 6 +- 6 files changed, 759 insertions(+), 706 deletions(-) diff --git a/simple_ddl_parser/dialects/sql.py b/simple_ddl_parser/dialects/sql.py index 26e15b1..c4fce75 100644 --- a/simple_ddl_parser/dialects/sql.py +++ b/simple_ddl_parser/dialects/sql.py @@ -1159,11 +1159,13 @@ def p_expression_like_table(self, p: List) -> None: if "." in p: schema = p_list[-3] table_name = p_list[-1] + key = p_list[-4] else: table_name = p_list[-1] schema = None + key = p_list[-2] p[0] = p[1] - p[0].update({p_list[-2]: {"schema": schema, "table_name": table_name}}) + p[0].update({key: {"schema": schema, "table_name": table_name}}) def p_t_name(self, p: List) -> None: """t_name : id DOT id diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index 8841388..e3dcc73 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -148,7 +148,12 @@ class Vertica(Dialect): @dataclass @dialect(name="ibm_db2") class IbmDB2(Dialect): - pass + organize_by: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + index_in: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) @dataclass @@ -195,6 +200,12 @@ class HQL(Dialect): transient: Optional[bool] = field( default=False, metadata={"exclude_if_not_provided": True} ) + into_buckets: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + clustered_on: Optional[list] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) @dataclass @@ -239,7 +250,7 @@ class CommonDialectsFieldsMixin(Dialect): default_factory=dict, metadata={ "exclude_if_not_provided": True, - "output_modes": add_dialects([SparkSQL, Redshift]), + "output_modes": add_dialects([SparkSQL, HQL, Redshift]), }, ) stored_as: Optional[str] = field( @@ -271,6 +282,13 @@ class CommonDialectsFieldsMixin(Dialect): collection_items_terminated_by: Optional[str] = field( default=None, metadata={"output_modes": add_dialects([HQL, Databrics])} ) + clustered_by: Optional[list] = field( + default=None, + metadata={ + "exclude_if_not_provided": True, + "output_modes": add_dialects([HQL, SparkSQL]), + }, + ) transient: Optional[bool] = field( default=False, metadata={ diff --git a/simple_ddl_parser/output/table_data.py b/simple_ddl_parser/output/table_data.py index 5fff595..aa7f002 100644 --- a/simple_ddl_parser/output/table_data.py +++ b/simple_ddl_parser/output/table_data.py @@ -25,6 +25,20 @@ def get_dialect_class(cls, kwargs: dict): return cls + @staticmethod + def pre_process_kwargs(kwargs: dict, aliased_fields: dict) -> dict: + for alias, field_name in aliased_fields.items(): + if alias in kwargs: + kwargs[field_name] = kwargs[alias] + del kwargs[alias] + + # todo: need to figure out how workaround it normally + if ( + "fields_terminated_by" in kwargs + and "_ddl_parser_comma_only_str" == kwargs["fields_terminated_by"] + ): + kwargs["fields_terminated_by"] = "','" + @classmethod def pre_load_mods(cls, main_cls, kwargs): if main_cls.__d_name__ == "bigquery": @@ -40,10 +54,7 @@ def pre_load_mods(cls, main_cls, kwargs): for name, value in cls_fields.items() if value.metadata and "alias" in value.metadata } - for alias, field_name in aliased_fields.items(): - if alias in kwargs: - kwargs[field_name] = kwargs[alias] - del kwargs[alias] + cls.pre_process_kwargs(kwargs, aliased_fields) table_main_args = { k.lower(): v for k, v in kwargs.items() if k.lower() in cls_fields } diff --git a/simple_ddl_parser/parsetab.py b/simple_ddl_parser/parsetab.py index 8dd6fa2..b44ba4f 100644 --- a/simple_ddl_parser/parsetab.py +++ b/simple_ddl_parser/parsetab.py @@ -5,7 +5,7 @@ _lr_method = "LALR" -_lr_signature = "ADD ALTER ARRAY AS AUTOINCREMENT AUTO_REFRESH BY CACHE CATALOG CHANGE_TRACKING CHECK CLONE CLUSTER CLUSTERED COLLATE COLLECTION COLUMN COMMA COMMAT COMMENT CONSTRAINT CREATE DATABASE DATA_RETENTION_TIME_IN_DAYS DEFAULT DEFERRABLE DELETE DOMAIN DOT DQ_STRING DROP ENCODE ENCRYPT ENFORCED ENGINE EXISTS FILE_FORMAT FOR FOREIGN FORMAT GENERATED ID IF INCREMENT INDEX INHERITS INITIALLY INTO ITEMS KEY KEYS LIKE LOCATION LP LT MAP MASKING MAXVALUE MAX_DATA_EXTENSION_TIME_IN_DAYS MINVALUE MODIFY NO NOORDER NOT NULL ON OPTIONS OR ORDER PARTITION PARTITIONED POLICY PRIMARY REFERENCES RENAME REPLACE ROW RP RT SALT SCHEMA SEQUENCE SERDE SERDEPROPERTIES SKEWED STAGE_FILE_FORMAT START STORAGE STORED STRING_BASE TABLE TABLESPACE TABLE_FORMAT TAG TBLPROPERTIES TERMINATED TEXTIMAGE_ON TYPE UNIQUE UPDATE USING WITHexpr : expr multiple_optionsexpr : expr INDEX id idalter_column_sql_server : alt_table ALTER COLUMN defcolumnexpr : expr id LP id RPexpr : expr usingexpr : expr ENGINE id id\n multiple_options : options\n | multiple_options options\n expr : expr LOCATION STRING\n | expr LOCATION DQ_STRING\n | expr LOCATION table_property_equalsalter_column_modify_oracle : alt_table MODIFY defcolumnexpr : expr INHERITS LP t_name RPclone : CLONE idusing : USING idpkey_constraint : constraint pkey_statement id LP index_pid RP\n | constraint pkey_statement LP index_pid RP\n | pkey_constraint with\n | pkey_constraint with ON id\n encode : ENCODE idexpr : expr CLUSTER BY LP pid RP\n | expr CLUSTER BY pid\n expr : expr PARTITION BY LP pid RP\n | expr PARTITION BY id LP pid RP\n | expr PARTITION BY pid\n | expr PARTITION BY id pidon_update : ON UPDATE id\n | ON UPDATE STRING\n | ON UPDATE f_call\n encrypt : ENCRYPT\n | encrypt NO SALT\n | encrypt SALT\n | encrypt USING STRING\n | encrypt STRING\n expr : expr ID ON LP pid RP\n | expr ID by_smthgexpr : expr id id\n | expr id KEY\n options : OPTIONS LP id_equals RPmultiple_format_equals : fmt_equals\n | multiple_format_equals fmt_equals\n expr : expr INTO ID IDfmt_equals : id LP RP\n | id LP fmt_equals RP\n | id LP multi_id RP\n expr : expr id id LP pid RPwith : WITH with_argsexpr : expr database_baserow_format : ROW FORMAT SERDE\n | ROW FORMAT\n table_property_equals : id id id_or_string\n | id id_or_string\n | LP id id id_or_string RP\n | LP id_or_string RP\n | id table_property_equals\n | id_equals\n database_base : CREATE DATABASE id\n | CREATE ID DATABASE id\n | database_base clone\n equals : id id id\n | id id ON\n | id id id DOT id\n expr : expr row_format id\n | expr row_format STRING\n storage : STORAGE LP\n | storage id id\n | storage id id RP\n table_property_equals_int : id id id_or_string\n | id id_or_string\n | LP id id id_or_string RP\n | LP id_or_string RP\n with_args : LP equals\n | with_args COMMA equals\n | with_args with_args\n | with_args RP\n expr : expr WITH SERDEPROPERTIES multi_assignmentsexpr : expr storagetable_property_equals_bool : id id id_or_string\n | id id_or_string\n expr : expr TBLPROPERTIES multi_assignmentsexpr : expr ID INDEXperiod_for : id FOR id LP pid RPmulti_assignments : LP assignment\n | multi_assignments RP\n | multi_assignments COMMA assignmentexpr : expr DATA_RETENTION_TIME_IN_DAYS table_property_equals_intexpr : expr ON idexpr : expr MAX_DATA_EXTENSION_TIME_IN_DAYS table_property_equalsassignment : id id id\n | STRING id STRING\n | id id STRING\n | STRING id id\n | STRING idexpr : expr withexpr : expr CHANGE_TRACKING table_property_equals_boolexpr : expr TEXTIMAGE_ON idexpr : expr option_commentexpr : CREATE TABLESPACE id properties\n | CREATE id TABLESPACE id properties\n | CREATE id TABLESPACE id\n | CREATE TABLESPACE id\n | CREATE id id TABLESPACE id\n | CREATE id id TABLESPACE id properties\n expr : expr COMMENT STRINGexpr : expr option_with_tagexpr : expr id TERMINATED BY id\n | expr id TERMINATED BY STRING\n properties : property\n | properties propertyoption_comment : ID STRING\n | ID DQ_STRING\n | COMMENT ID STRING\n | COMMENT ID DQ_STRING\n expr : expr MAP KEYS TERMINATED BY id\n | expr MAP KEYS TERMINATED BY STRING\n property : id id\n | id STRING\n | id ON\n | id STORAGE\n | id ROW\n tag_equals : id id id_or_string\n | id id_or_string\n | id DOT id id id_or_string\n | id DOT id id_or_string\n | id DOT id DOT id id id_or_string\n | id DOT id DOT id id_or_string\n expr : expr SKEWED BY LP id RP ON LP pid RPexpr : expr COLLECTION ITEMS TERMINATED BY id\n | expr COLLECTION ITEMS TERMINATED BY STRING\n multiple_tag_equals : tag_equals\n | multiple_tag_equals COMMA tag_equals\n create_table : CREATE TABLE IF NOT EXISTS\n | CREATE TABLE\n | CREATE OR REPLACE TABLE IF NOT EXISTS\n | CREATE OR REPLACE TABLE\n | CREATE id TABLE IF NOT EXISTS\n | CREATE id TABLE\n | CREATE OR REPLACE id TABLE IF NOT EXISTS\n | CREATE OR REPLACE id TABLE\n\n expr : expr STORED AS id\n | expr STORED AS id STRING\n | expr STORED AS id STRING id STRING\n option_order_noorder : ORDER\n | NOORDER\n option_with_tag : TAG LP id RP\n | TAG LP id DOT id DOT id RP\n | TAG LP multiple_tag_equals RP\n | WITH TAG LP id RP\n | WITH TAG LP multiple_tag_equals RP\n expr : expr PARTITIONED BY pid_with_type\n | expr PARTITIONED BY LP pid RP\n | expr PARTITIONED BY LP multiple_funct RP\n option_with_masking_policy : MASKING POLICY id DOT id DOT id\n | WITH MASKING POLICY id DOT id DOT id\n pid_with_type : LP column\n | pid_with_type COMMA column\n | pid_with_type RP\n expr : expr CATALOG table_property_equalsc_property : id idexpr : expr FILE_FORMAT multiple_format_equalsexpr : expr STAGE_FILE_FORMAT multiple_format_equalsexpr : expr TABLE_FORMAT table_property_equalsexpr : expr AUTO_REFRESH table_property_equals_boolas_virtual : AS LP id LP id LP pid RP COMMA pid RP RP\n | AS LP id LP pid RP RP\n | AS LP multi_id RPc_type : id\n | id id\n | id id id id\n | id id id\n | c_type pid\n | id DOT id\n | tid\n | ARRAY\n | c_type ARRAY\n | c_type tid\n id : ID\n | DQ_STRINGid_or_string : id\n | STRINGSTRING : STRING_BASE\n | STRING STRING_BASE\n column : id c_type\n | column comment\n | column LP id RP\n | column LP id id RP\n | column LP id RP c_type\n | column LP id COMMA id RP\n | column LP id COMMA id RP c_type\n autoincrement : AUTOINCREMENTdefcolumn : column\n | defcolumn comment\n | defcolumn null\n | defcolumn encode\n | defcolumn PRIMARY KEY\n | defcolumn UNIQUE KEY\n | defcolumn UNIQUE\n | defcolumn check_ex\n | defcolumn default\n | defcolumn collate\n | defcolumn enforced\n | defcolumn ref\n | defcolumn foreign ref\n | defcolumn encrypt\n | defcolumn generated\n | defcolumn c_property\n | defcolumn on_update\n | defcolumn options\n | defcolumn autoincrement\n | defcolumn option_order_noorder\n | defcolumn option_with_tag\n | defcolumn option_with_masking_policy\n | defcolumn as_virtual\n check_ex : check_st\n | constraint check_st\n expr : create_schema\n | create_database\n | expr id\n | expr clone\n c_schema : CREATE SCHEMA\n | CREATE ID SCHEMAcreate_schema : c_schema id id\n | c_schema id id id\n | c_schema id\n | c_schema id DOT id\n | c_schema id option_comment\n | c_schema id DOT id option_comment\n | c_schema IF NOT EXISTS id\n | c_schema IF NOT EXISTS id DOT id\n | create_schema id id id\n | create_schema id id STRING\n | create_schema options\n create_database : database_base\n | create_database id id id\n | create_database id id STRING\n | create_database options\n expr : DROP TABLE id\n | DROP TABLE id DOT id\n multiple_column_names : column\n | multiple_column_names COMMA\n | multiple_column_names column\n type_definition : type_name id LP pid RP\n | type_name id LP multiple_column_names RP\n | type_name LP id_equals RP\n | type_name TABLE LP defcolumn\n | type_definition COMMA defcolumn\n | type_definition RP\n expr : type_definitiontype_name : type_create id AS\n | type_create id DOT id AS\n | type_create id DOT id\n | type_create id\n type_create : CREATE TYPE\n | CREATE OR REPLACE TYPE\n expr : domain_name id LP pid RPdomain_name : CREATE DOMAIN id AS\n | CREATE DOMAIN id DOT id AS\n | CREATE DOMAIN id DOT id\n | CREATE DOMAIN id\n expr : alter_foreign ref\n | alter_drop_column\n | alter_check\n | alter_unique\n | alter_default\n | alter_primary_key\n | alter_primary_key using_tablespace\n | alter_column_add\n | alter_rename_column\n | alter_column_sql_server\n | alter_column_modify\n | alter_column_modify_oracle\n alter_column_modify : alt_table MODIFY COLUMN defcolumnalter_drop_column : alt_table DROP COLUMN idalter_rename_column : alt_table RENAME COLUMN id id idalter_column_add : alt_table ADD defcolumnalter_primary_key : alt_table ADD PRIMARY KEY LP pid RP\n | alt_table ADD constraint PRIMARY KEY LP pid RP\n alter_unique : alt_table ADD UNIQUE LP pid RP\n | alt_table ADD constraint UNIQUE LP pid RP\n alter_default : alt_table id id\n | alt_table ADD constraint id id\n | alt_table ADD id STRING\n | alt_table ADD constraint id STRING\n | alter_default id\n | alter_default FOR pid\n alter_check : alt_table ADD check_st\n | alt_table ADD constraint check_st\n alter_foreign : alt_table ADD foreign\n | alt_table ADD constraint foreign\n alt_table : ALTER TABLE t_name\n | ALTER TABLE IF EXISTS t_name\n | ALTER TABLE ID t_nameid_equals : id id id_or_string\n | id id_or_string\n | id_equals COMMA\n | id_equals COMMA id id id_or_string\n | id\n | id_equals LP pid RP\n | id_equals LP pid RP id\n | id_equals COMMA id id\n | id_equals COMMA id\n expr : index_table_name LP index_pid RPindex_table_name : create_index ON id\n | create_index ON id DOT id\n create_index : CREATE INDEX id\n | CREATE UNIQUE INDEX id\n | create_index ON id\n | CREATE CLUSTERED INDEX id\n expr : table_name defcolumn\n | table_name LP defcolumn\n | table_name\n | expr COMMA defcolumn\n | expr COMMA\n | expr COMMA constraint\n | expr COMMA check_ex\n | expr COMMA foreign\n | expr COMMA pkey\n | expr COMMA uniq\n | expr COMMA statem_by_id\n | expr COMMA constraint uniq\n | expr COMMA period_for\n | expr COMMA pkey_constraint\n | expr COMMA constraint pkey\n | expr COMMA constraint pkey enforced\n | expr COMMA constraint foreign ref\n | expr COMMA foreign ref\n | expr encode\n | expr DEFAULT id id id\n | expr RP\n likke : LIKE\n | CLONE\n expr : table_name likke id\n | table_name likke id DOT id\n | table_name LP likke id DOT id RP\n | table_name LP likke id RP\n t_name : id DOT id\n | id\n | id DOT id DOT id\n table_name : create_table t_name\n | table_name likke id\n expr : seq_name\n | expr INCREMENT id\n | expr INCREMENT BY id\n | expr INCREMENT id id\n | expr START id\n | expr START WITH id\n | expr START id id\n | expr MINVALUE id\n | expr NO MINVALUE\n | expr NO MAXVALUE\n | expr MAXVALUE id\n | expr CACHE id\n | expr CACHE\n | expr NOORDER\n | expr ORDER\n seq_name : create_seq id DOT id\n | create_seq id\n create_seq : CREATE SEQUENCE IF NOT EXISTS\n | CREATE SEQUENCE\n\n tid : LT id\n | LT\n | tid LT\n | tid id\n | tid COMMAT\n | tid RT\n null : NULL\n | NOT NULL\n f_call : id LP RP\n | id LP f_call RP\n | id LP multi_id RP\n | id LP pid RP\n multi_id : id\n | multi_id id\n | f_call\n | multi_id f_call\n funct_args : LP multi_id RPfunct : id LP multi_id RPmultiple_funct : funct\n | multiple_funct COMMA funct\n | multiple_funct COMMA\n funct_expr : LP multi_id RP\n | multi_id\n dot_id : id DOT iddefault : DEFAULT id\n | DEFAULT STRING\n | DEFAULT NULL\n | default FOR dot_id\n | DEFAULT funct_expr\n | DEFAULT LP pid RP\n | DEFAULT LP funct_expr pid RP\n | default id\n | default LP RP\n enforced : ENFORCED\n | NOT ENFORCED\n collate : COLLATE id\n | COLLATE STRING\n \n constraint : CONSTRAINT id\n \n generated : gen_always funct_expr\n | gen_always funct_expr id\n | gen_always LP multi_id RP\n | gen_always f_call\n \n gen_always : GENERATED id AS\n check_st : CHECK LP id\n | check_st id\n | check_st STRING\n | check_st id STRING\n | check_st id RP\n | check_st STRING RP\n | check_st funct_args\n | check_st LP pid RP\n using_tablespace : USING INDEX tablespacepid : id\n | STRING\n | pid id\n | pid STRING\n | STRING LP RP\n | id LP RP\n | pid COMMA id\n | pid COMMA STRING\n index_pid : id\n | index_pid id\n | index_pid COMMA index_pid\n foreign : FOREIGN KEY LP pid RP\n | FOREIGN KEYref : REFERENCES t_name\n | ref LP pid RP\n | ref ON DELETE id\n | ref ON UPDATE id\n | ref DEFERRABLE INITIALLY id\n | ref NOT DEFERRABLE\n expr : pkeyuniq : UNIQUE LP pid RPstatem_by_id : id LP pid RP\n | id KEY LP pid RP\n pkey : pkey_statement LP pid RP\n | pkey_statement ID LP pid RP\n pkey_statement : PRIMARY KEYcomment : COMMENT STRINGtablespace : TABLESPACE id\n | TABLESPACE id properties\n expr : expr tablespaceby_smthg : BY id\n | BY ROW\n | BY LP pid RP\n " +_lr_signature = "ADD ALTER ARRAY AS AUTOINCREMENT AUTO_REFRESH BY CACHE CATALOG CHANGE_TRACKING CHECK CLONE CLUSTER CLUSTERED COLLATE COLLECTION COLUMN COMMA COMMAT COMMENT CONSTRAINT CREATE DATABASE DATA_RETENTION_TIME_IN_DAYS DEFAULT DEFERRABLE DELETE DOMAIN DOT DQ_STRING DROP ENCODE ENCRYPT ENFORCED ENGINE EXISTS FILE_FORMAT FOR FOREIGN FORMAT GENERATED ID IF INCREMENT INDEX INHERITS INITIALLY INTO ITEMS KEY KEYS LIKE LOCATION LP LT MAP MASKING MAXVALUE MAX_DATA_EXTENSION_TIME_IN_DAYS MINVALUE MODIFY NO NOORDER NOT NULL ON OPTIONS OR ORDER PARTITION PARTITIONED POLICY PRIMARY REFERENCES RENAME REPLACE ROW RP RT SALT SCHEMA SEQUENCE SERDE SERDEPROPERTIES SKEWED STAGE_FILE_FORMAT START STORAGE STORED STRING_BASE TABLE TABLESPACE TABLE_FORMAT TAG TBLPROPERTIES TERMINATED TEXTIMAGE_ON TYPE UNIQUE UPDATE USING WITHexpr : expr multiple_optionsexpr : expr INDEX id idalter_column_sql_server : alt_table ALTER COLUMN defcolumnexpr : expr ENGINE id idexpr : expr id LP id RPexpr : expr usingmultiple_options : options\n | multiple_options options\n expr : expr LOCATION STRING\n | expr LOCATION DQ_STRING\n | expr LOCATION table_property_equalsalter_column_modify_oracle : alt_table MODIFY defcolumnexpr : expr INHERITS LP t_name RPclone : CLONE idusing : USING idpkey_constraint : constraint pkey_statement id LP index_pid RP\n | constraint pkey_statement LP index_pid RP\n | pkey_constraint with\n | pkey_constraint with ON id\n on_update : ON UPDATE id\n | ON UPDATE STRING\n | ON UPDATE f_call\n encode : ENCODE idexpr : expr CLUSTER BY LP pid RP\n | expr CLUSTER BY pid\n expr : expr PARTITION BY LP pid RP\n | expr PARTITION BY id LP pid RP\n | expr PARTITION BY pid\n | expr PARTITION BY id pidencrypt : ENCRYPT\n | encrypt NO SALT\n | encrypt SALT\n | encrypt USING STRING\n | encrypt STRING\n expr : expr ID ON LP pid RP\n | expr ID by_smthgexpr : expr id id\n | expr id KEY\n options : OPTIONS LP id_equals RPmultiple_format_equals : fmt_equals\n | multiple_format_equals fmt_equals\n expr : expr INTO ID IDfmt_equals : id LP RP\n | id LP fmt_equals RP\n | id LP multi_id RP\n expr : expr id id LP pid RPwith : WITH with_argsexpr : expr database_baserow_format : ROW FORMAT SERDE\n | ROW FORMAT\n table_property_equals : id id id_or_string\n | id id_or_string\n | LP id id id_or_string RP\n | LP id_or_string RP\n | id table_property_equals\n | id_equals\n database_base : CREATE DATABASE id\n | CREATE ID DATABASE id\n | database_base clone\n equals : id id id\n | id id ON\n | id id id DOT id\n expr : expr row_format id\n | expr row_format STRING\n storage : STORAGE LP\n | storage id id\n | storage id id RP\n table_property_equals_int : id id id_or_string\n | id id_or_string\n | LP id id id_or_string RP\n | LP id_or_string RP\n with_args : LP equals\n | with_args COMMA equals\n | with_args with_args\n | with_args RP\n expr : expr WITH SERDEPROPERTIES multi_assignmentsexpr : expr storagetable_property_equals_bool : id id id_or_string\n | id id_or_string\n expr : expr TBLPROPERTIES multi_assignmentsexpr : expr ID INDEXperiod_for : id FOR id LP pid RPmulti_assignments : LP assignment\n | multi_assignments RP\n | multi_assignments COMMA assignmentexpr : expr DATA_RETENTION_TIME_IN_DAYS table_property_equals_intexpr : expr ON idexpr : expr MAX_DATA_EXTENSION_TIME_IN_DAYS table_property_equalsassignment : id id id\n | STRING id STRING\n | id id STRING\n | STRING id id\n | STRING idexpr : expr withexpr : expr CHANGE_TRACKING table_property_equals_boolexpr : expr TEXTIMAGE_ON idexpr : expr option_commentexpr : CREATE TABLESPACE id properties\n | CREATE id TABLESPACE id properties\n | CREATE id TABLESPACE id\n | CREATE TABLESPACE id\n | CREATE id id TABLESPACE id\n | CREATE id id TABLESPACE id properties\n expr : expr COMMENT STRINGexpr : expr option_with_tagexpr : expr id TERMINATED BY id\n | expr id TERMINATED BY STRING\n properties : property\n | properties propertyoption_comment : ID STRING\n | ID DQ_STRING\n | COMMENT ID STRING\n | COMMENT ID DQ_STRING\n expr : expr MAP KEYS TERMINATED BY id\n | expr MAP KEYS TERMINATED BY STRING\n property : id id\n | id STRING\n | id ON\n | id STORAGE\n | id ROW\n tag_equals : id id id_or_string\n | id id_or_string\n | id DOT id id id_or_string\n | id DOT id id_or_string\n | id DOT id DOT id id id_or_string\n | id DOT id DOT id id_or_string\n expr : expr SKEWED BY LP id RP ON LP pid RPexpr : expr COLLECTION ITEMS TERMINATED BY id\n | expr COLLECTION ITEMS TERMINATED BY STRING\n multiple_tag_equals : tag_equals\n | multiple_tag_equals COMMA tag_equals\n create_table : CREATE TABLE IF NOT EXISTS\n | CREATE TABLE\n | CREATE OR REPLACE TABLE IF NOT EXISTS\n | CREATE OR REPLACE TABLE\n | CREATE id TABLE IF NOT EXISTS\n | CREATE id TABLE\n | CREATE OR REPLACE id TABLE IF NOT EXISTS\n | CREATE OR REPLACE id TABLE\n\n expr : expr STORED AS id\n | expr STORED AS id STRING\n | expr STORED AS id STRING id STRING\n option_order_noorder : ORDER\n | NOORDER\n option_with_tag : TAG LP id RP\n | TAG LP id DOT id DOT id RP\n | TAG LP multiple_tag_equals RP\n | WITH TAG LP id RP\n | WITH TAG LP multiple_tag_equals RP\n expr : expr PARTITIONED BY pid_with_type\n | expr PARTITIONED BY LP pid RP\n | expr PARTITIONED BY LP multiple_funct RP\n option_with_masking_policy : MASKING POLICY id DOT id DOT id\n | WITH MASKING POLICY id DOT id DOT id\n pid_with_type : LP column\n | pid_with_type COMMA column\n | pid_with_type RP\n expr : expr CATALOG table_property_equalsc_property : id idexpr : expr FILE_FORMAT multiple_format_equalsexpr : expr STAGE_FILE_FORMAT multiple_format_equalsexpr : expr TABLE_FORMAT table_property_equalsexpr : expr AUTO_REFRESH table_property_equals_boolas_virtual : AS LP id LP id LP pid RP COMMA pid RP RP\n | AS LP id LP pid RP RP\n | AS LP multi_id RPc_type : id\n | id id\n | id id id id\n | id id id\n | c_type pid\n | id DOT id\n | tid\n | ARRAY\n | c_type ARRAY\n | c_type tid\n id : ID\n | DQ_STRINGid_or_string : id\n | STRINGSTRING : STRING_BASE\n | STRING STRING_BASE\n column : id c_type\n | column comment\n | column LP id RP\n | column LP id id RP\n | column LP id RP c_type\n | column LP id COMMA id RP\n | column LP id COMMA id RP c_type\n autoincrement : AUTOINCREMENTdefcolumn : column\n | defcolumn comment\n | defcolumn null\n | defcolumn encode\n | defcolumn PRIMARY KEY\n | defcolumn UNIQUE KEY\n | defcolumn UNIQUE\n | defcolumn check_ex\n | defcolumn default\n | defcolumn collate\n | defcolumn enforced\n | defcolumn ref\n | defcolumn foreign ref\n | defcolumn encrypt\n | defcolumn generated\n | defcolumn c_property\n | defcolumn on_update\n | defcolumn options\n | defcolumn autoincrement\n | defcolumn option_order_noorder\n | defcolumn option_with_tag\n | defcolumn option_with_masking_policy\n | defcolumn as_virtual\n check_ex : check_st\n | constraint check_st\n expr : create_schema\n | create_database\n | expr id\n | expr clone\n c_schema : CREATE SCHEMA\n | CREATE ID SCHEMAcreate_schema : c_schema id id\n | c_schema id id id\n | c_schema id\n | c_schema id DOT id\n | c_schema id option_comment\n | c_schema id DOT id option_comment\n | c_schema IF NOT EXISTS id\n | c_schema IF NOT EXISTS id DOT id\n | create_schema id id id\n | create_schema id id STRING\n | create_schema options\n create_database : database_base\n | create_database id id id\n | create_database id id STRING\n | create_database options\n expr : DROP TABLE id\n | DROP TABLE id DOT id\n multiple_column_names : column\n | multiple_column_names COMMA\n | multiple_column_names column\n type_definition : type_name id LP pid RP\n | type_name id LP multiple_column_names RP\n | type_name LP id_equals RP\n | type_name TABLE LP defcolumn\n | type_definition COMMA defcolumn\n | type_definition RP\n expr : type_definitiontype_name : type_create id AS\n | type_create id DOT id AS\n | type_create id DOT id\n | type_create id\n type_create : CREATE TYPE\n | CREATE OR REPLACE TYPE\n expr : domain_name id LP pid RPdomain_name : CREATE DOMAIN id AS\n | CREATE DOMAIN id DOT id AS\n | CREATE DOMAIN id DOT id\n | CREATE DOMAIN id\n expr : alter_foreign ref\n | alter_drop_column\n | alter_check\n | alter_unique\n | alter_default\n | alter_primary_key\n | alter_primary_key using_tablespace\n | alter_column_add\n | alter_rename_column\n | alter_column_sql_server\n | alter_column_modify\n | alter_column_modify_oracle\n alter_column_modify : alt_table MODIFY COLUMN defcolumnalter_drop_column : alt_table DROP COLUMN idalter_rename_column : alt_table RENAME COLUMN id id idalter_column_add : alt_table ADD defcolumnalter_primary_key : alt_table ADD PRIMARY KEY LP pid RP\n | alt_table ADD constraint PRIMARY KEY LP pid RP\n alter_unique : alt_table ADD UNIQUE LP pid RP\n | alt_table ADD constraint UNIQUE LP pid RP\n alter_default : alt_table id id\n | alt_table ADD constraint id id\n | alt_table ADD id STRING\n | alt_table ADD constraint id STRING\n | alter_default id\n | alter_default FOR pid\n alter_check : alt_table ADD check_st\n | alt_table ADD constraint check_st\n alter_foreign : alt_table ADD foreign\n | alt_table ADD constraint foreign\n alt_table : ALTER TABLE t_name\n | ALTER TABLE IF EXISTS t_name\n | ALTER TABLE ID t_nameid_equals : id id id_or_string\n | id id_or_string\n | id_equals COMMA\n | id_equals COMMA id id id_or_string\n | id\n | id_equals LP pid RP\n | id_equals LP pid RP id\n | id_equals COMMA id id\n | id_equals COMMA id\n expr : index_table_name LP index_pid RPindex_table_name : create_index ON id\n | create_index ON id DOT id\n create_index : CREATE INDEX id\n | CREATE UNIQUE INDEX id\n | create_index ON id\n | CREATE CLUSTERED INDEX id\n expr : table_name defcolumn\n | table_name LP defcolumn\n | table_name\n | expr COMMA defcolumn\n | expr COMMA\n | expr COMMA constraint\n | expr COMMA check_ex\n | expr COMMA foreign\n | expr COMMA pkey\n | expr COMMA uniq\n | expr COMMA statem_by_id\n | expr COMMA constraint uniq\n | expr COMMA period_for\n | expr COMMA pkey_constraint\n | expr COMMA constraint pkey\n | expr COMMA constraint pkey enforced\n | expr COMMA constraint foreign ref\n | expr COMMA foreign ref\n | expr encode\n | expr DEFAULT id id id\n | expr RP\n likke : LIKE\n | CLONE\n expr : table_name likke id\n | table_name likke id DOT id\n | table_name LP likke id DOT id RP\n | table_name LP likke id RP\n t_name : id DOT id\n | id\n | id DOT id DOT id\n table_name : create_table t_name\n | table_name likke id\n expr : seq_name\n | expr INCREMENT id\n | expr INCREMENT BY id\n | expr INCREMENT id id\n | expr START id\n | expr START WITH id\n | expr START id id\n | expr MINVALUE id\n | expr NO MINVALUE\n | expr NO MAXVALUE\n | expr MAXVALUE id\n | expr CACHE id\n | expr CACHE\n | expr NOORDER\n | expr ORDER\n seq_name : create_seq id DOT id\n | create_seq id\n create_seq : CREATE SEQUENCE IF NOT EXISTS\n | CREATE SEQUENCE\n\n tid : LT id\n | LT\n | tid LT\n | tid id\n | tid COMMAT\n | tid RT\n null : NULL\n | NOT NULL\n f_call : id LP RP\n | id LP f_call RP\n | id LP multi_id RP\n | id LP pid RP\n multi_id : id\n | multi_id id\n | f_call\n | multi_id f_call\n funct_args : LP multi_id RPfunct : id LP multi_id RPmultiple_funct : funct\n | multiple_funct COMMA funct\n | multiple_funct COMMA\n funct_expr : LP multi_id RP\n | multi_id\n dot_id : id DOT iddefault : DEFAULT id\n | DEFAULT STRING\n | DEFAULT NULL\n | default FOR dot_id\n | DEFAULT funct_expr\n | DEFAULT LP pid RP\n | DEFAULT LP funct_expr pid RP\n | default id\n | default LP RP\n enforced : ENFORCED\n | NOT ENFORCED\n collate : COLLATE id\n | COLLATE STRING\n \n constraint : CONSTRAINT id\n \n generated : gen_always funct_expr\n | gen_always funct_expr id\n | gen_always LP multi_id RP\n | gen_always f_call\n \n gen_always : GENERATED id AS\n check_st : CHECK LP id\n | check_st id\n | check_st STRING\n | check_st id STRING\n | check_st id RP\n | check_st STRING RP\n | check_st funct_args\n | check_st LP pid RP\n using_tablespace : USING INDEX tablespacepid : id\n | STRING\n | pid id\n | pid STRING\n | STRING LP RP\n | id LP RP\n | pid COMMA id\n | pid COMMA STRING\n index_pid : id\n | index_pid id\n | index_pid COMMA index_pid\n foreign : FOREIGN KEY LP pid RP\n | FOREIGN KEYref : REFERENCES t_name\n | ref LP pid RP\n | ref ON DELETE id\n | ref ON UPDATE id\n | ref DEFERRABLE INITIALLY id\n | ref NOT DEFERRABLE\n expr : pkeyuniq : UNIQUE LP pid RPstatem_by_id : id LP pid RP\n | id KEY LP pid RP\n pkey : pkey_statement LP pid RP\n | pkey_statement ID LP pid RP\n pkey_statement : PRIMARY KEYcomment : COMMENT STRINGtablespace : TABLESPACE id\n | TABLESPACE id properties\n expr : expr tablespaceby_smthg : BY id\n | BY ROW\n | BY LP pid RP\n " _lr_action_items = { "CREATE": ( @@ -31,8 +31,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -426,7 +426,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -505,7 +505,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -556,15 +556,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -655,14 +655,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -709,9 +709,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -728,8 +728,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -769,7 +769,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -1018,7 +1018,7 @@ 273, 27, -214, - -20, + -23, 273, -425, -412, @@ -1122,9 +1122,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -1178,8 +1178,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -1572,7 +1572,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -1651,7 +1651,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -1702,15 +1702,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -1801,14 +1801,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -1855,9 +1855,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -1874,8 +1874,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -1915,7 +1915,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -1967,8 +1967,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -2365,7 +2365,7 @@ -1, -218, -329, - -5, + -6, -178, 170, -48, @@ -2447,7 +2447,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -2498,15 +2498,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -2597,14 +2597,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -2651,9 +2651,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -2670,8 +2670,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -2711,7 +2711,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -2762,8 +2762,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -3135,7 +3135,7 @@ 855, ], [ - 39, + 37, -233, -216, -217, @@ -3156,7 +3156,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -3235,7 +3235,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -3286,15 +3286,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -3385,14 +3385,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -3439,9 +3439,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -3458,8 +3458,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -3499,7 +3499,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -3550,8 +3550,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -3944,7 +3944,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -4023,7 +4023,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -4074,15 +4074,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -4173,14 +4173,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -4227,9 +4227,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -4246,8 +4246,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -4287,7 +4287,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -4338,8 +4338,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -4732,7 +4732,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -4811,7 +4811,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -4862,15 +4862,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -4961,14 +4961,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -5015,9 +5015,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -5034,8 +5034,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -5075,7 +5075,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -5126,8 +5126,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -5520,7 +5520,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -5599,7 +5599,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -5650,15 +5650,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -5749,14 +5749,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -5803,9 +5803,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -5822,8 +5822,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -5863,7 +5863,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -5914,8 +5914,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -6308,7 +6308,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -6387,7 +6387,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -6438,15 +6438,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -6537,14 +6537,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -6591,9 +6591,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -6610,8 +6610,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -6651,7 +6651,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -7425,9 +7425,9 @@ -1, 110, 110, - -329, - -5, 110, + -329, + -6, 110, -178, -177, @@ -7584,7 +7584,7 @@ -65, 110, -14, - -20, + -23, 110, 110, 110, @@ -7678,7 +7678,7 @@ -2, 110, 110, - -6, + -4, -182, 110, -52, @@ -7841,7 +7841,7 @@ 110, -251, 110, - -4, + -5, -106, -107, -51, @@ -7935,9 +7935,9 @@ 110, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, 110, -372, @@ -7971,8 +7971,8 @@ -46, 110, 110, - -21, - -23, + -24, + -26, 110, -35, -444, @@ -8041,7 +8041,7 @@ -53, -296, -299, - -24, + -27, 110, 110, -70, @@ -8130,8 +8130,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -8524,7 +8524,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -8603,7 +8603,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -8654,15 +8654,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -8753,14 +8753,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -8807,9 +8807,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -8826,8 +8826,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -8867,7 +8867,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -8918,8 +8918,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -9313,7 +9313,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -9393,7 +9393,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -9444,15 +9444,15 @@ -280, 305, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -9543,14 +9543,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -9597,9 +9597,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -9616,8 +9616,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -9657,7 +9657,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -9708,8 +9708,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -10102,7 +10102,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -10181,7 +10181,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -10232,15 +10232,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -10331,14 +10331,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -10385,9 +10385,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -10404,8 +10404,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -10445,7 +10445,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -10496,8 +10496,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -10890,7 +10890,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -10969,7 +10969,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -11020,15 +11020,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -11119,14 +11119,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -11173,9 +11173,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -11192,8 +11192,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -11233,7 +11233,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -11285,8 +11285,8 @@ 29, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -11687,7 +11687,7 @@ -1, -218, -329, - -5, + -6, -178, 168, -48, @@ -11766,7 +11766,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -11819,15 +11819,15 @@ 299, -307, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -11921,14 +11921,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, 708, -67, @@ -11976,9 +11976,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -11995,8 +11995,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -12037,7 +12037,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -12088,8 +12088,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -12482,7 +12482,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -12561,7 +12561,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -12612,15 +12612,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -12711,14 +12711,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -12765,9 +12765,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -12784,8 +12784,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -12825,7 +12825,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -12876,8 +12876,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -13270,7 +13270,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -13349,7 +13349,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -13400,15 +13400,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -13499,14 +13499,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -13553,9 +13553,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -13572,8 +13572,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -13613,7 +13613,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -13664,8 +13664,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -14058,7 +14058,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -14137,7 +14137,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -14188,15 +14188,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -14287,14 +14287,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -14341,9 +14341,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -14360,8 +14360,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -14401,7 +14401,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -14452,8 +14452,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -14848,7 +14848,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -14927,7 +14927,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -14978,15 +14978,15 @@ -280, 291, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -15078,14 +15078,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -15132,9 +15132,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -15152,8 +15152,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -15193,7 +15193,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -15244,8 +15244,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -15638,7 +15638,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -15717,7 +15717,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -15768,15 +15768,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -15867,14 +15867,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -15921,9 +15921,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -15940,8 +15940,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -15981,7 +15981,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -16032,8 +16032,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -16426,7 +16426,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -16505,7 +16505,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -16556,15 +16556,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -16655,14 +16655,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -16709,9 +16709,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -16728,8 +16728,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -16769,7 +16769,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -16820,8 +16820,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -17214,7 +17214,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -17293,7 +17293,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -17344,15 +17344,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -17443,14 +17443,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -17497,9 +17497,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -17516,8 +17516,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -17557,7 +17557,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -17608,8 +17608,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -18002,7 +18002,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -18081,7 +18081,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -18132,15 +18132,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -18231,14 +18231,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -18285,9 +18285,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -18304,8 +18304,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -18345,7 +18345,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -18396,8 +18396,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -18790,7 +18790,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -18869,7 +18869,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -18920,15 +18920,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -19019,14 +19019,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -19073,9 +19073,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -19092,8 +19092,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -19133,7 +19133,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -19184,8 +19184,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -19578,7 +19578,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -19657,7 +19657,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -19708,15 +19708,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -19807,14 +19807,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -19861,9 +19861,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -19880,8 +19880,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -19921,7 +19921,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -19972,8 +19972,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -20366,7 +20366,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -20445,7 +20445,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -20496,15 +20496,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -20595,14 +20595,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -20649,9 +20649,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -20668,8 +20668,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -20709,7 +20709,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -20760,8 +20760,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -21154,7 +21154,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -21233,7 +21233,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -21284,15 +21284,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -21383,14 +21383,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -21437,9 +21437,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -21456,8 +21456,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -21497,7 +21497,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -21548,8 +21548,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -21942,7 +21942,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -22021,7 +22021,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -22072,15 +22072,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -22171,14 +22171,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -22225,9 +22225,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -22244,8 +22244,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -22285,7 +22285,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -22336,8 +22336,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -22730,7 +22730,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -22809,7 +22809,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -22860,15 +22860,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -22959,14 +22959,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -23013,9 +23013,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -23032,8 +23032,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -23073,7 +23073,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -23124,8 +23124,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -23595,7 +23595,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -23674,7 +23674,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -23730,7 +23730,7 @@ -12, 465, -2, - -6, + -4, -182, -179, -52, @@ -23844,7 +23844,7 @@ -435, 465, 465, - -4, + -5, -106, -107, -51, @@ -23916,9 +23916,9 @@ 465, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -23939,8 +23939,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, 465, -35, -444, @@ -23993,7 +23993,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -379, @@ -24066,8 +24066,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -24460,7 +24460,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -24539,7 +24539,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -24590,15 +24590,15 @@ -280, 296, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -24689,14 +24689,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -24743,9 +24743,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -24762,8 +24762,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -24803,7 +24803,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -24854,8 +24854,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -25351,7 +25351,7 @@ 855, ], [ - 37, + 38, -233, -216, -217, @@ -25372,7 +25372,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -25451,7 +25451,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -25508,7 +25508,7 @@ 545, -2, 549, - -6, + -4, -182, -179, -52, @@ -25518,8 +25518,8 @@ 554, -295, 557, - -22, -25, + -28, -412, -442, -443, @@ -25633,7 +25633,7 @@ -435, 693, 695, - -4, + -5, -106, -107, -51, @@ -25644,7 +25644,7 @@ 699, 700, 641, - -26, + -29, 702, 703, -73, @@ -25714,9 +25714,9 @@ 758, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, 759, -372, @@ -25743,8 +25743,8 @@ 776, -300, -298, - -21, - -23, + -24, + -26, 779, -35, -444, @@ -25807,7 +25807,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -379, @@ -25890,8 +25890,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -26284,7 +26284,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -26363,7 +26363,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -26414,15 +26414,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -26513,14 +26513,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -26567,9 +26567,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -26586,8 +26586,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -26627,7 +26627,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -26678,8 +26678,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -27072,7 +27072,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -27151,7 +27151,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -27202,15 +27202,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -27301,14 +27301,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -27355,9 +27355,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -27374,8 +27374,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -27415,7 +27415,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -27466,8 +27466,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -27861,7 +27861,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -27941,7 +27941,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -27992,15 +27992,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -28091,14 +28091,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -28145,9 +28145,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -28164,8 +28164,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -28205,7 +28205,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -28256,8 +28256,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -28650,7 +28650,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -28729,7 +28729,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -28780,15 +28780,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -28879,14 +28879,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -28933,9 +28933,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -28952,8 +28952,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -28993,7 +28993,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -29044,8 +29044,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -29439,7 +29439,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -29519,7 +29519,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -29570,15 +29570,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -29669,14 +29669,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -29723,9 +29723,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -29742,8 +29742,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -29783,7 +29783,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -29834,8 +29834,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -30228,7 +30228,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -30307,7 +30307,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -30358,15 +30358,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -30457,14 +30457,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -30511,9 +30511,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -30530,8 +30530,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -30571,7 +30571,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -30622,8 +30622,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -31016,7 +31016,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -31095,7 +31095,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -31146,15 +31146,15 @@ -280, 304, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -31245,14 +31245,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -31299,9 +31299,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -31318,8 +31318,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -31359,7 +31359,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -31410,8 +31410,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -31804,7 +31804,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -31883,7 +31883,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -31934,15 +31934,15 @@ -280, 303, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -32033,14 +32033,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -32087,9 +32087,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -32106,8 +32106,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -32147,7 +32147,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -32916,9 +32916,9 @@ -1, 41, 41, - -329, - -5, 41, + -329, + -6, 159, -178, 172, @@ -33072,7 +33072,7 @@ -65, 41, -14, - -20, + -23, 41, 41, 41, @@ -33165,7 +33165,7 @@ -2, 41, 41, - -6, + -4, -182, 41, -52, @@ -33328,7 +33328,7 @@ 41, -251, 41, - -4, + -5, -106, -107, -51, @@ -33422,9 +33422,9 @@ 41, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, 41, -372, @@ -33459,8 +33459,8 @@ -46, 41, 41, - -21, - -23, + -24, + -26, 41, -35, -444, @@ -33529,7 +33529,7 @@ -53, -296, -299, - -24, + -27, 41, 41, -70, @@ -33618,8 +33618,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -34012,7 +34012,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -34091,7 +34091,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -34142,15 +34142,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -34241,14 +34241,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -34295,9 +34295,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -34314,8 +34314,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -34355,7 +34355,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -34406,8 +34406,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -34802,7 +34802,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -34882,7 +34882,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -34933,15 +34933,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -35033,14 +35033,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -35087,9 +35087,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -35106,8 +35106,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -35147,7 +35147,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -35198,8 +35198,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -35593,7 +35593,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -35672,7 +35672,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -35723,15 +35723,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -35823,14 +35823,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -35877,9 +35877,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -35896,8 +35896,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -35937,7 +35937,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -35988,8 +35988,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -36384,7 +36384,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -36464,7 +36464,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -36516,15 +36516,15 @@ -280, 89, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -36615,14 +36615,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -36669,9 +36669,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -36688,8 +36688,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -36729,7 +36729,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -36780,8 +36780,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -37175,7 +37175,7 @@ -1, -218, -329, - -5, + -6, -178, -177, 90, @@ -37255,7 +37255,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -37306,15 +37306,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -37405,14 +37405,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -37459,9 +37459,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -37478,8 +37478,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -37519,7 +37519,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -37570,8 +37570,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -37964,7 +37964,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -38043,7 +38043,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -38094,15 +38094,15 @@ -280, 91, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -38193,14 +38193,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -38247,9 +38247,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -38266,8 +38266,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -38307,7 +38307,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -38359,8 +38359,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -38758,7 +38758,7 @@ -1, -218, -329, - -5, + -6, -178, -177, -48, @@ -38839,7 +38839,7 @@ -15, -65, -14, - -20, + -23, -439, -101, 439, @@ -38892,15 +38892,15 @@ -280, -12, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -38991,14 +38991,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -39045,9 +39045,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -39064,8 +39064,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -39105,7 +39105,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -39156,8 +39156,8 @@ 23, 34, 36, - 37, 38, + 39, 41, 45, 48, @@ -39550,7 +39550,7 @@ 93, -218, -329, - -5, + -6, -178, -177, -48, @@ -39629,7 +39629,7 @@ -15, -65, -14, - -20, + -23, -439, -101, -57, @@ -39680,15 +39680,15 @@ -280, 93, -2, - -6, + -4, -182, -179, -52, -55, -180, -295, - -22, -25, + -28, -412, -442, -443, @@ -39779,14 +39779,14 @@ -336, -356, -435, - -4, + -5, -106, -107, -51, -54, -301, -13, - -26, + -29, -73, -67, -85, @@ -39833,9 +39833,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -335, -333, @@ -39852,8 +39852,8 @@ -46, -300, -298, - -21, - -23, + -24, + -26, -35, -444, -148, @@ -39893,7 +39893,7 @@ -53, -296, -299, - -24, + -27, -70, -142, -17, @@ -40118,7 +40118,7 @@ 274, 215, -214, - -20, + -23, 274, -425, -412, @@ -40222,9 +40222,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -40488,7 +40488,7 @@ 118, 118, -214, - -20, + -23, 118, -425, -412, @@ -40595,9 +40595,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -42102,7 +42102,7 @@ -181, 307, -214, - -20, + -23, 442, 307, -425, @@ -42208,9 +42208,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -42398,7 +42398,7 @@ -181, 292, -214, - -20, + -23, 292, -425, -412, @@ -42502,9 +42502,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -42704,7 +42704,7 @@ -181, 293, -214, - -20, + -23, 447, 451, 293, @@ -42814,9 +42814,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -43004,7 +43004,7 @@ -181, 297, -214, - -20, + -23, 297, -425, -412, @@ -43106,9 +43106,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -43299,7 +43299,7 @@ -181, 298, -214, - -20, + -23, 298, -425, -412, @@ -43405,9 +43405,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -43602,7 +43602,7 @@ 219, 219, -214, - -20, + -23, 219, -425, -412, @@ -43706,9 +43706,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -43894,7 +43894,7 @@ -181, 300, -214, - -20, + -23, 300, -425, -412, @@ -43996,9 +43996,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -44184,7 +44184,7 @@ -181, 302, -214, - -20, + -23, 302, -425, -412, @@ -44286,9 +44286,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -44475,7 +44475,7 @@ -181, 306, -214, - -20, + -23, 306, -425, -412, @@ -44578,9 +44578,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -44775,7 +44775,7 @@ 220, 220, -214, - -20, + -23, 220, -425, -412, @@ -44880,9 +44880,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -45072,7 +45072,7 @@ -181, 216, -214, - -20, + -23, 216, -425, -412, @@ -45174,9 +45174,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -45362,7 +45362,7 @@ -181, 308, -214, - -20, + -23, 308, -425, -412, @@ -45464,9 +45464,9 @@ -33, -373, -375, - -27, - -28, - -29, + -20, + -21, + -22, -399, -170, -172, @@ -46034,7 +46034,7 @@ 33, 35, 36, - 39, + 37, 40, 46, 49, @@ -46680,7 +46680,7 @@ 1, ], [ - 38, + 39, ], ), "row_format": ( @@ -48323,9 +48323,9 @@ "mssql.py", 6, ), + ("expr -> expr ENGINE id id", "expr", 4, "p_engine", "mysql.py", 6), ("expr -> expr id LP id RP", "expr", 5, "p_expression_distkey", "redshift.py", 6), ("expr -> expr using", "expr", 2, "p_expression_using", "spark_sql.py", 6), - ("expr -> expr ENGINE id id", "expr", 4, "p_engine", "mysql.py", 7), ( "multiple_options -> options", "multiple_options", @@ -48402,6 +48402,9 @@ "mssql.py", 15, ), + ("on_update -> ON UPDATE id", "on_update", 3, "p_on_update", "mysql.py", 12), + ("on_update -> ON UPDATE STRING", "on_update", 3, "p_on_update", "mysql.py", 13), + ("on_update -> ON UPDATE f_call", "on_update", 3, "p_on_update", "mysql.py", 14), ("encode -> ENCODE id", "encode", 2, "p_encode", "redshift.py", 12), ( "expr -> expr CLUSTER BY LP pid RP", @@ -48451,9 +48454,6 @@ "sql.py", 16, ), - ("on_update -> ON UPDATE id", "on_update", 3, "p_on_update", "mysql.py", 14), - ("on_update -> ON UPDATE STRING", "on_update", 3, "p_on_update", "mysql.py", 15), - ("on_update -> ON UPDATE f_call", "on_update", 3, "p_on_update", "mysql.py", 16), ("encrypt -> ENCRYPT", "encrypt", 1, "p_encrypt", "oracle.py", 14), ("encrypt -> encrypt NO SALT", "encrypt", 3, "p_encrypt", "oracle.py", 15), ("encrypt -> encrypt SALT", "encrypt", 2, "p_encrypt", "oracle.py", 16), diff --git a/tests/dialects/test_hql.py b/tests/dialects/test_hql.py index 0c0adbd..2e5f15b 100644 --- a/tests/dialects/test_hql.py +++ b/tests/dialects/test_hql.py @@ -254,6 +254,7 @@ def test_partitioned_by_hql_output_mode_hql(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, + "temp": False, }, ] @@ -388,6 +389,7 @@ def test_stored_as_hql_showed(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, + "temp": False, } ] assert expected == result @@ -522,6 +524,7 @@ def test_location_showed(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, + "temp": False, } ] assert expected == result @@ -737,6 +740,7 @@ def test_hql_row_format(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, + "temp": False, } ] assert expected == result @@ -816,6 +820,7 @@ def test_fields_terminated_by_hql(): "collection_items_terminated_by": None, "map_keys_terminated_by": None, "lines_terminated_by": None, + "temp": False, } ] assert expected == result @@ -896,6 +901,7 @@ def test_collection_items_terminated_by_hql(): "collection_items_terminated_by": "'\\002'", "map_keys_terminated_by": None, "lines_terminated_by": None, + "temp": False, } ] assert expected == result @@ -978,6 +984,7 @@ def test_map_keys_terminated_by_hql(): "collection_items_terminated_by": "'\\002'", "map_keys_terminated_by": "'\\003'", "lines_terminated_by": None, + "temp": False, } ] @@ -1126,7 +1133,6 @@ def test_complex_structure_test_hql(): "partitioned_by": [], "tablespace": None, "stored_as": None, - "location": None, "row_format": None, "fields_terminated_by": None, "lines_terminated_by": None, @@ -1135,6 +1141,7 @@ def test_complex_structure_test_hql(): "external": False, "schema": "default", "table_name": "salesorderdetail", + "temp": False, } ], "types": [], @@ -1216,7 +1223,6 @@ def test_comment_and_lines(): "fields_terminated_by": "'\t'", "index": [], "lines_terminated_by": "'\n'", - "location": None, "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], @@ -1225,6 +1231,7 @@ def test_comment_and_lines(): "stored_as": "TEXTFILE", "table_name": "employee", "tablespace": None, + "temp": False, } ], "types": [], @@ -1356,7 +1363,6 @@ def test_simple_serde(): "fields_terminated_by": None, "index": [], "lines_terminated_by": None, - "location": None, "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], @@ -1368,6 +1374,7 @@ def test_simple_serde(): "stored_as": "TEXTFILE", "table_name": "apachelog", "tablespace": None, + "temp": False, } ], "types": [], @@ -1500,7 +1507,6 @@ def test_with_serde_properties(): "fields_terminated_by": None, "index": [], "lines_terminated_by": None, - "location": None, "map_keys_terminated_by": None, "partitioned_by": [], "primary_key": [], @@ -1526,6 +1532,7 @@ def test_with_serde_properties(): "stored_as": "TEXTFILE", "table_name": "apachelog", "tablespace": None, + "temp": False, } ], "types": [], @@ -1578,6 +1585,7 @@ def test_comment_without_null_statement(): "stored_as": "PARQUET", "table_name": "test", "tablespace": None, + "temp": False, } ], "types": [], @@ -1621,6 +1629,7 @@ def test_special_characters_in_comment(): "stored_as": "PARQUET", "table_name": "test", "tablespace": None, + "temp": False, } ], "types": [], @@ -1671,7 +1680,6 @@ def test_partitioned_by_multiple_columns(): "fields_terminated_by": None, "index": [], "lines_terminated_by": None, - "location": None, "map_keys_terminated_by": None, "partitioned_by": [ {"name": "snapshot", "size": None, "type": "STRING"}, @@ -1683,6 +1691,7 @@ def test_partitioned_by_multiple_columns(): "stored_as": None, "table_name": "test", "tablespace": None, + "temp": False, } ], "types": [], @@ -1746,6 +1755,7 @@ def test_table_properties(): "'parquet.compression3'": "'SNAPPY3'", "'parquet.compression4'": "'SNAPPY4'", }, + "temp": False, } ], "types": [], @@ -1805,6 +1815,7 @@ def test_output_input_format(): "external": True, "schema": None, "table_name": "test", + "temp": False, } ] assert expected == parse_results @@ -1853,6 +1864,7 @@ def test_skewed_by(): "map_keys_terminated_by": None, "collection_items_terminated_by": None, "external": False, + "temp": False, "schema": None, "table_name": "list_bucket_single", "skewed_by": {"key": "key", "on": ["1", "5", "6"]}, @@ -1866,7 +1878,7 @@ def test_allow_use_tags_in_column_names(): CREATE TABLE IF NOT EXISTS default.salesorderdetail( something<2% ARRAY )""" - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="hql") expected = { "ddl_properties": [], "domains": [], @@ -1892,9 +1904,17 @@ def test_allow_use_tags_in_column_names(): "index": [], "partitioned_by": [], "primary_key": [], + "stored_as": None, + "row_format": None, + "lines_terminated_by": None, + "map_keys_terminated_by": None, + "collection_items_terminated_by": None, + "external": False, + "fields_terminated_by": None, "schema": "default", "table_name": "salesorderdetail", "tablespace": None, + "temp": False, } ], "types": [], @@ -1960,7 +1980,6 @@ def test_clustered(): "fields_terminated_by": None, "index": [], "lines_terminated_by": None, - "location": None, "map_keys_terminated_by": None, "partitioned_by": [{"name": "ds", "size": None, "type": "STRING"}], "primary_key": [], @@ -1969,6 +1988,7 @@ def test_clustered(): "stored_as": None, "table_name": "user_info_bucketed", "tablespace": None, + "temp": False, } ], "types": [], @@ -2033,7 +2053,6 @@ def test_into_buckets(): "index": [], "into_buckets": "256", "lines_terminated_by": None, - "location": None, "map_keys_terminated_by": None, "partitioned_by": [{"name": "ds", "size": None, "type": "STRING"}], "primary_key": [], @@ -2042,6 +2061,7 @@ def test_into_buckets(): "stored_as": None, "table_name": "user_info_bucketed", "tablespace": None, + "temp": False, } ], "types": [], @@ -2108,7 +2128,6 @@ def test_clustered_by_multiple_columns(): "index": [], "into_buckets": "256", "lines_terminated_by": None, - "location": None, "map_keys_terminated_by": None, "partitioned_by": [{"name": "ds", "size": None, "type": "STRING"}], "primary_key": [], @@ -2117,6 +2136,7 @@ def test_clustered_by_multiple_columns(): "stored_as": None, "table_name": "user_info_bucketed", "tablespace": None, + "temp": False, } ], "types": [], @@ -2202,6 +2222,7 @@ def test_multiple_serde_options(): "stored_as": None, "table_name": "x", "tablespace": None, + "temp": False, } ] assert result == expected @@ -2236,6 +2257,7 @@ def test_location_with_table_properties_in_like(): "table_name": "specific_table", "tablespace": None, "tblproperties": {"external.table.purge": "true"}, + "temp": False, } ] assert expected == result diff --git a/tests/dialects/test_ibm_db2.py b/tests/dialects/test_ibm_db2.py index 8521ed3..24b1971 100644 --- a/tests/dialects/test_ibm_db2.py +++ b/tests/dialects/test_ibm_db2.py @@ -14,7 +14,7 @@ def test_in_tablespace(): """ - result = DDLParser(ddl).run() + result = DDLParser(ddl).run(output_mode="ibm_db2") expected = [ { "alter": {}, @@ -85,7 +85,7 @@ def test_index_in(): """ - result = DDLParser(ddl).run() + result = DDLParser(ddl).run(output_mode="ibm_db2") expected = [ { "alter": {}, @@ -155,7 +155,7 @@ def test_organize_by_row(): ORGANIZE BY ROw """ - result = DDLParser(ddl).run() + result = DDLParser(ddl).run(output_mode="ibm_db2") expected = [ { "alter": {}, From 41e17531f3e2f4c1b7b77bdd5b77b1be1c5a21f4 Mon Sep 17 00:00:00 2001 From: xnuinside Date: Tue, 9 Jan 2024 03:07:11 +0300 Subject: [PATCH 08/12] BigQuery dialect --- CHANGELOG.txt | 2 ++ simple_ddl_parser/output/base_data.py | 49 ++++++++++++++------------ simple_ddl_parser/output/core.py | 14 +++++--- simple_ddl_parser/output/dialects.py | 36 ++++++++++++++++--- simple_ddl_parser/output/table_data.py | 3 +- tests/dialects/test_bigquery.py | 44 +++++++++++------------ 6 files changed, 94 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 3e329d5..9482586 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -39,6 +39,8 @@ If you don't see dialect that you want to use - open issue with description and ### MySQL updates: 1. Engine statement now parsed correctly. Previously, output was always '='. +### BigQuery updates: +1. Word 'schema' totally removed from output. `Dataset` used instead of `schema` in BigQuery dialect. **v0.32.1** ### Minor Fixes diff --git a/simple_ddl_parser/output/base_data.py b/simple_ddl_parser/output/base_data.py index 6596ba4..8f47754 100644 --- a/simple_ddl_parser/output/base_data.py +++ b/simple_ddl_parser/output/base_data.py @@ -207,37 +207,39 @@ def to_dict(self): output[name] = value return output - -def prepare_alter_columns(self, statement: Dict) -> None: - """prepare alters column metadata""" - alter_columns = [] - for num, column in enumerate(statement["columns"]): - if statement.get("references"): - alter_columns.append( - self.create_alter_column_references( - num, column, statement["references"] + def prepare_alter_columns(self, statement: Dict) -> None: + """prepare alters column metadata""" + alter_columns = [] + for num, column in enumerate(statement["columns"]): + if statement.get("references"): + alter_columns.append( + self.create_alter_column_references( + num, column, statement["references"] + ) ) - ) + else: + # mean we need to add + alter_columns.append(column) + if not self.alter.get("columns"): + self.alter["columns"] = alter_columns else: - # mean we need to add - alter_columns.append(column) - if not self.alter.get("columns"): - self.alter["columns"] = alter_columns - else: - self.alter["columns"].extend(alter_columns) - - table_columns = self.get_normalized_table_columns_names() - # add columns from 'alter add' - for column in self.alter["columns"]: - if normalize_name(column["name"]) not in table_columns: - self.columns.append(column) + self.alter["columns"].extend(alter_columns) + + table_columns = self.get_normalized_table_columns_names() + # add columns from 'alter add' + for column in self.alter["columns"]: + if normalize_name(column["name"]) not in table_columns: + self.columns.append(column) def get_normalized_table_columns_names(self) -> List[str]: return [normalize_name(column["name"]) for column in self.columns] @staticmethod + def prepare_ref_statement(ref_statement: Dict): + pass + def create_alter_column_references( - index: int, column: Dict, ref_statement: Dict + self, index: int, column: Dict, ref_statement: Dict ) -> Dict: """create alter column metadata""" column_reference = ref_statement["columns"][index] @@ -245,6 +247,7 @@ def create_alter_column_references( "name": column["name"], "constraint_name": column.get("constraint_name"), } + self.prepare_ref_statement(ref_statement) alter_column["references"] = deepcopy(ref_statement) alter_column["references"]["column"] = column_reference del alter_column["references"]["columns"] diff --git a/simple_ddl_parser/output/core.py b/simple_ddl_parser/output/core.py index 3595f70..81e058d 100644 --- a/simple_ddl_parser/output/core.py +++ b/simple_ddl_parser/output/core.py @@ -17,6 +17,10 @@ def __init__( self, parser_output: List[Dict], output_mode: str, group_by_type: bool ) -> None: self.output_mode = output_mode + if output_mode == "bigquery": + self.schema_key = "dataset" + else: + self.schema_key = "schema" self.group_by_type = group_by_type self.parser_output = parser_output @@ -25,8 +29,9 @@ def __init__( def get_table_from_tables_data(self, schema: str, table_name: str) -> Dict: """get table by name and schema or rise exception""" - table_id = get_table_id(schema, table_name) + print(self.tables_dict) + print(table_id) target_table = self.tables_dict.get(table_id) if target_table is None: raise ValueError( @@ -35,7 +40,7 @@ def get_table_from_tables_data(self, schema: str, table_name: str) -> Dict: return target_table def clean_up_index_statement(self, statement: Dict) -> None: - del statement["schema"] + del statement[self.schema_key] del statement["table_name"] if self.output_mode != "mssql": @@ -44,13 +49,14 @@ def clean_up_index_statement(self, statement: Dict) -> None: def add_index_to_table(self, statement: Dict) -> None: """populate 'index' key in output data""" target_table = self.get_table_from_tables_data( - statement["schema"], statement["table_name"] + statement[self.schema_key], statement["table_name"] ) self.clean_up_index_statement(statement) target_table.index.append(statement) def add_alter_to_table(self, statement: Dict) -> None: """add 'alter' statement to the table""" + print(statement) target_table = self.get_table_from_tables_data( statement["schema"], statement["alter_table_name"] ) @@ -88,7 +94,7 @@ def process_statement_data(self, statement_data: Dict) -> Dict: table_data = TableData.init(**statement_data) self.tables_dict[ get_table_id( - schema_name=table_data.schema, + schema_name=getattr(table_data, self.schema_key), table_name=table_data.table_name, ) ] = table_data diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index e3dcc73..e20d9b5 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -107,6 +107,24 @@ class MySSQL(Dialect): @dialect(name="bigquery") class BigQuery(Dialect): dataset: Optional[str] = field(default=False) + project: Optional[str] = field( + default=None, metadata={"exclude_if_not_provided": True} + ) + + @staticmethod + def prepare_ref_statement(ref_statement: Dict): + ref_statement["dataset"] = ref_statement["schema"] + del ref_statement["schema"] + + def to_dict(self): + output = {} + for key, value in self.__dict__.items(): + if key == "schema": + continue + if self.filter_out_output(key) is True: + name = self.get_alias_if_exists(key) + output[name] = value + return output @dataclass @@ -218,10 +236,6 @@ class Snowflake(Dialect): clone: Optional[dict] = field( default=None, ) - cluster_by: Optional[list] = field( - default_factory=list, - metadata={"exclude_if_not_provided": True}, - ) with_tag: Optional[list] = field( default_factory=list, metadata={"exclude_if_not_provided": True}, @@ -289,6 +303,13 @@ class CommonDialectsFieldsMixin(Dialect): "output_modes": add_dialects([HQL, SparkSQL]), }, ) + options: Optional[list] = field( + default=None, + metadata={ + "exclude_if_not_provided": True, + "output_modes": add_dialects([BigQuery, SparkSQL]), + }, + ) transient: Optional[bool] = field( default=False, metadata={ @@ -299,6 +320,13 @@ class CommonDialectsFieldsMixin(Dialect): external: Optional[bool] = field( default=False, metadata={"output_modes": add_dialects([HQL, Snowflake])} ) + cluster_by: Optional[list] = field( + default_factory=list, + metadata={ + "exclude_if_not_provided": True, + "output_modes": add_dialects([BigQuery, Snowflake]), + }, + ) dialect_by_name["sql"] = None diff --git a/simple_ddl_parser/output/table_data.py b/simple_ddl_parser/output/table_data.py index aa7f002..e933777 100644 --- a/simple_ddl_parser/output/table_data.py +++ b/simple_ddl_parser/output/table_data.py @@ -41,9 +41,10 @@ def pre_process_kwargs(kwargs: dict, aliased_fields: dict) -> dict: @classmethod def pre_load_mods(cls, main_cls, kwargs): - if main_cls.__d_name__ == "bigquery": + if kwargs.get("output_mode") == "bigquery": if kwargs.get("schema"): kwargs["dataset"] = kwargs["schema"] + del kwargs["schema"] cls_fields = { field: value for field, value in main_cls.__dataclass_fields__.items() } diff --git a/tests/dialects/test_bigquery.py b/tests/dialects/test_bigquery.py index a4b7621..47529eb 100644 --- a/tests/dialects/test_bigquery.py +++ b/tests/dialects/test_bigquery.py @@ -162,7 +162,7 @@ def test_long_string_in_option(): description="Calendar table records reference list of calendar dates and related attributes used for reporting." ); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="bigquery") expected = { "ddl_properties": [], "domains": [], @@ -200,7 +200,7 @@ def test_option_in_create_table(): description="Calendar table records reference list of calendar dates and related attributes used for reporting." ); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="bigquery") expected = { "ddl_properties": [], "domains": [], @@ -232,7 +232,7 @@ def test_option_in_create_table(): ], "partitioned_by": [], "primary_key": [], - "schema": "hub", + "dataset": "hub", "project": "name", "table_name": "REF_CALENDAR", "tablespace": None, @@ -252,7 +252,7 @@ def test_options_in_column(): description="Calendar table records reference list of calendar dates and related attributes used for reporting." ); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="bigquery") expected = { "ddl_properties": [], "domains": [], @@ -286,7 +286,7 @@ def test_options_in_column(): "partitioned_by": [], "primary_key": [], "project": "name", - "schema": "hub", + "dataset": "hub", "table_name": "REF_CALENDAR", "tablespace": None, } @@ -307,7 +307,7 @@ def test_cluster_by_without_brackets(): ); """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="bigquery") expected = { "ddl_properties": [], "domains": [], @@ -342,7 +342,7 @@ def test_cluster_by_without_brackets(): "partitioned_by": [], "primary_key": [], "project": "name", - "schema": "hub", + "dataset": "hub", "table_name": "REF_CALENDAR", "tablespace": None, } @@ -364,7 +364,7 @@ def test_two_options_in_create_table(): ) """ - result = DDLParser(ddl).run(group_by_type=True) + result = DDLParser(ddl).run(group_by_type=True, output_mode="bigquery") expected = { "ddl_properties": [], "domains": [], @@ -394,7 +394,7 @@ def test_two_options_in_create_table(): ], "partitioned_by": [], "primary_key": [], - "schema": "mydataset", + "dataset": "mydataset", "table_name": "newtable", "tablespace": None, } @@ -406,11 +406,11 @@ def test_two_options_in_create_table(): def test_table_name_with_project_id(): ddl = """ - CREATE SCHEMA IF NOT EXISTS project.calender + CREATE SCHEMA IF NOT EXISTS project.calendar OPTIONS ( location="project-location" ); - CREATE TABLE project_id.calender.REF_CALENDAR ( + CREATE TABLE project_id.calendar.REF_CALENDAR ( calendar_dt DATE, calendar_dt_id INT, fiscal_half_year_reporting_week_no INT @@ -431,7 +431,7 @@ def test_table_name_with_project_id(): "schemas": [ { "properties": {"options": [{"location": '"project-location"'}]}, - "schema_name": "calender", + "schema_name": "calendar", "project": "project", "if_not_exists": True, } @@ -474,7 +474,7 @@ def test_table_name_with_project_id(): "unique": False, }, ], - "dataset": "calender", + "dataset": "calendar", "index": [], "options": [ { @@ -530,7 +530,7 @@ def test_project_id_in_alter_and_references(): "on_delete": "CASCADE", "on_update": "CASCADE", "project": "project_id", - "schema": "schema", + "dataset": "schema", "table": "ChildTableName2", }, } @@ -565,11 +565,11 @@ def test_project_id_in_alter_and_references(): def test_multiple_options(): ddl = """ - CREATE SCHEMA IF NOT EXISTS project.calender + CREATE SCHEMA IF NOT EXISTS project.calendar OPTIONS ( location="project-location" ); - CREATE TABLE project_id.calender.REF_CALENDAR ( + CREATE TABLE project_id.calendar.REF_CALENDAR ( calendar_dt DATE, calendar_dt_id INT, fiscal_half_year_reporting_week_no INT @@ -590,7 +590,7 @@ def test_multiple_options(): "schemas": [ { "properties": {"options": [{"location": '"project-location"'}]}, - "schema_name": "calender", + "schema_name": "calendar", "project": "project", "if_not_exists": True, } @@ -633,7 +633,7 @@ def test_multiple_options(): "unique": False, }, ], - "dataset": "calender", + "dataset": "calendar", "index": [], "options": [ { @@ -663,7 +663,7 @@ def test_multiple_options(): def test_ars_in_arrays_in_option(): ddl = """ -CREATE TABLE project_id.calender.REF_CALENDAR ( +CREATE TABLE project_id.calendar.REF_CALENDAR ( calendar_dt DATE, calendar_dt_id INT, fiscal_half_year_reporting_week_no INT @@ -714,7 +714,7 @@ def test_ars_in_arrays_in_option(): "unique": False, }, ], - "dataset": "calender", + "dataset": "calendar", "index": [], "options": [ {"value_1": '"some value"'}, @@ -833,7 +833,7 @@ def test_bigquery_options_string(): """, normalize_names=True, - ).run(group_by_type=True) + ).run(group_by_type=True, output_mode="bigquery") expected = { "ddl_properties": [], @@ -861,7 +861,7 @@ def test_bigquery_options_string(): "options": [{"description": "'test'"}], "partitioned_by": [], "primary_key": [], - "schema": "data", + "dataset": "data", "table_name": "test", "tablespace": None, } From ba40df520ba137847a2a3c92d5aa2d56c4b50e3f Mon Sep 17 00:00:00 2001 From: xnuinside Date: Tue, 9 Jan 2024 03:12:20 +0300 Subject: [PATCH 09/12] finishing fixing tests according to new output logic --- simple_ddl_parser/output/core.py | 3 --- simple_ddl_parser/output/dialects.py | 1 - tests/dialects/test_snowflake.py | 1 - tests/non_statement_tests/test_common.py | 1 - tests/test_after_columns_statements.py | 21 +++++++++++++++++++++ tests/test_references.py | 3 +-- tests/test_simple_ddl_parser.py | 2 +- 7 files changed, 23 insertions(+), 9 deletions(-) diff --git a/simple_ddl_parser/output/core.py b/simple_ddl_parser/output/core.py index 81e058d..d8e6ad1 100644 --- a/simple_ddl_parser/output/core.py +++ b/simple_ddl_parser/output/core.py @@ -30,8 +30,6 @@ def __init__( def get_table_from_tables_data(self, schema: str, table_name: str) -> Dict: """get table by name and schema or rise exception""" table_id = get_table_id(schema, table_name) - print(self.tables_dict) - print(table_id) target_table = self.tables_dict.get(table_id) if target_table is None: raise ValueError( @@ -56,7 +54,6 @@ def add_index_to_table(self, statement: Dict) -> None: def add_alter_to_table(self, statement: Dict) -> None: """add 'alter' statement to the table""" - print(statement) target_table = self.get_table_from_tables_data( statement["schema"], statement["alter_table_name"] ) diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index e20d9b5..8cafdab 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -7,7 +7,6 @@ def update_bigquery_output(statement: dict) -> dict: if statement.get("schema") or statement.get("sequences"): statement["dataset"] = statement["schema"] - print("AAAAAAA") del statement["schema"] return statement diff --git a/tests/dialects/test_snowflake.py b/tests/dialects/test_snowflake.py index e9f8c0a..46ca745 100644 --- a/tests/dialects/test_snowflake.py +++ b/tests/dialects/test_snowflake.py @@ -743,7 +743,6 @@ def test_autoincrement_noorder(): ], "types": [], } - print(result, "resultresult") assert result == expected diff --git a/tests/non_statement_tests/test_common.py b/tests/non_statement_tests/test_common.py index e6b9886..edab4f1 100644 --- a/tests/non_statement_tests/test_common.py +++ b/tests/non_statement_tests/test_common.py @@ -247,7 +247,6 @@ def test_parsing_go_and_use_correctly(): "tablespace": None, } ] - print(result) assert expected == result diff --git a/tests/test_after_columns_statements.py b/tests/test_after_columns_statements.py index 97a0524..1e6a26c 100644 --- a/tests/test_after_columns_statements.py +++ b/tests/test_after_columns_statements.py @@ -123,6 +123,7 @@ def test_partitioned_by_hql(): "table_name": "table_name", "tablespace": None, "partitioned_by": [{"name": "batch_id", "type": "int", "size": None}], + "table_properties": {"external": True}, } ] @@ -329,6 +330,7 @@ def test_stored_as_parsed_but_not_showed(): "schema": "database", "table_name": "table_name", "tablespace": None, + "table_properties": {"external": True, "stored_as": "PARQUET"}, } ] assert expected == result @@ -528,6 +530,7 @@ def test_row_format_is_not_showed(): "schema": "default", "table_name": "salesorderdetail", "tablespace": None, + "table_properties": {"row_format": "DELIMITED", "stored_as": "TEXTFILE"}, } ] assert expected == result @@ -600,6 +603,11 @@ def test_fields_terminated_by_not_showed(): "schema": "default", "table_name": "salesorderdetail", "tablespace": None, + "table_properties": { + "fields_terminated_by": "','", + "row_format": "DELIMITED", + "stored_as": "TEXTFILE", + }, } ] assert expected == result @@ -673,6 +681,12 @@ def test_collection_items_terminated_by_not_showed(): "schema": "default", "table_name": "salesorderdetail", "tablespace": None, + "table_properties": { + "collection_items_terminated_by": "'\\002'", + "fields_terminated_by": "'\\002'", + "row_format": "DELIMITED", + "stored_as": "TEXTFILE", + }, } ] @@ -699,6 +713,13 @@ def test_map_keys_terminated_not_showed(): expected = [ { "if_not_exists": True, + "table_properties": { + "collection_items_terminated_by": "'\\002'", + "fields_terminated_by": "','", + "map_keys_terminated_by": "'\\003'", + "row_format": "DELIMITED", + "stored_as": "TEXTFILE", + }, "columns": [ { "name": "SalesOrderID", diff --git a/tests/test_references.py b/tests/test_references.py index 56cdd88..14b864e 100644 --- a/tests/test_references.py +++ b/tests/test_references.py @@ -411,8 +411,6 @@ def test_foreigen_keys(): "sequences": [], "tables": [ { - "ENGINE=InnoDB": "CHARACTER", - "SET": "utf8", "alter": {}, "checks": [], "columns": [ @@ -465,6 +463,7 @@ def test_foreigen_keys(): "unique": False, }, ], + "table_properties": {"engine=innodb": "CHARACTER", "set": "utf8"}, "index": [], "partitioned_by": [], "primary_key": ["exception_id"], diff --git a/tests/test_simple_ddl_parser.py b/tests/test_simple_ddl_parser.py index 8f40b73..7a380f0 100644 --- a/tests/test_simple_ddl_parser.py +++ b/tests/test_simple_ddl_parser.py @@ -1194,7 +1194,7 @@ def test_comments_in_columns(): { "if_not_exists": True, "table_properties": { - "fields_terminated_by": "_ddl_parser_comma_only_str", + "fields_terminated_by": "','", "row_format": "DELIMITED", "stored_as": "TEXTFILE", }, From 899801624b9770c3a21ae4f6a0ee47a14022c25b Mon Sep 17 00:00:00 2001 From: xnuinside Date: Tue, 9 Jan 2024 03:13:11 +0300 Subject: [PATCH 10/12] update README.md --- README.md | 25 +++++++++++++++++++++++-- docs/README.rst | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index babc8b8..75bbcad 100644 --- a/README.md +++ b/README.md @@ -489,7 +489,6 @@ for help with debugging & testing support for BigQuery dialect DDLs: **v1.0.0** In output structure was done important changes that can in theory breaks code. - ### Important changes 1. Important change: @@ -506,8 +505,30 @@ For example, if 'CLUSTER BY' was in the DDL, it would show up in the 'cluster_by However, now all fields that only work in certain dialects and are not part of the basic SQL notation will only be shown if you choose the correct output_mode. + +### New Dialects support +1. Added as possible output_modes new Dialects: +- Databrics SQL like 'databricks', +- Vertica as 'vertica', +- SqliteFields as 'sqlite', +- PostgreSQL as 'postgres' + +Full list of supported dialects you can find in dict - `supported_dialects`: + +`from simple_ddl_parser import supported_dialects` + +Currently supported: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'databrics', 'sqlite', 'vertics', 'ibm_db2', 'postgres', 'oracle', 'hql', 'snowflake', 'sql'] + +If you don't see dialect that you want to use - open issue with description and links to Database docs or use one of existed dialects. + ### Snowflake updates: -4. For some reasons, 'CLONE' statement in SNOWFLAKE was parsed into 'like' key in output. Now it was changed to 'clone' - inner structure of output stay the same as previously. +1. For some reasons, 'CLONE' statement in SNOWFLAKE was parsed into 'like' key in output. Now it was changed to 'clone' - inner structure of output stay the same as previously. + +### MySQL updates: +1. Engine statement now parsed correctly. Previously, output was always '='. + +### BigQuery updates: +1. Word 'schema' totally removed from output. `Dataset` used instead of `schema` in BigQuery dialect. **v0.32.1** ### Minor Fixes diff --git a/docs/README.rst b/docs/README.rst index 9205cfa..f489cfb 100644 --- a/docs/README.rst +++ b/docs/README.rst @@ -140,7 +140,7 @@ And you will get output with additional keys 'stored_as', 'location', 'external' If you run parser with command line add flag '-o=hql' or '--output-mode=hql' to get the same result. -Possible output_modes: ["mssql", "mysql", "oracle", "hql", "sql", "redshift", "snowflake"] +Possible output_modes: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'databrics', 'sqlite', 'vertics', 'ibm_db2', 'postgres', 'oracle', 'hql', 'snowflake', 'sql'] From python code ^^^^^^^^^^^^^^^^ @@ -237,7 +237,7 @@ More details ^^^^^^^^^^^^ ``DDLParser(ddl).run()`` -.run() method contains several arguments, that impact changing output result. As you can saw upper exists argument ``output_mode`` that allow you to set dialect and get more fields in output relative to chosen dialect, for example 'hql'. Possible output_modes: ["mssql", "mysql", "oracle", "hql", "sql"] +.run() method contains several arguments, that impact changing output result. As you can saw upper exists argument ``output_mode`` that allow you to set dialect and get more fields in output relative to chosen dialect, for example 'hql'. Possible output_modes: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'databrics', 'sqlite', 'vertics', 'ibm_db2', 'postgres', 'oracle', 'hql', 'snowflake', 'sql'] Also in .run() method exists argument ``group_by_type`` (by default: False). By default output of parser looks like a List with Dicts where each dict == one entity from ddl (table, sequence, type, etc). And to understand that is current entity you need to check Dict like: if 'table_name' in dict - this is a table, if 'type_name' - this is a type & etc. @@ -574,12 +574,44 @@ Previously they was placed on same level of table output as ``columns``\ , ``alt However, now all fields that only work in certain dialects and are not part of the basic SQL notation will only be shown if you choose the correct output_mode. +New Dialects support +^^^^^^^^^^^^^^^^^^^^ + + +#. Added as possible output_modes new Dialects: + + +* Databrics SQL like 'databricks', +* Vertica as 'vertica', +* SqliteFields as 'sqlite', +* PostgreSQL as 'postgres' + +Full list of supported dialects you can find in dict - ``supported_dialects``\ : + +``from simple_ddl_parser import supported_dialects`` + +Currently supported: ['redshift', 'spark_sql', 'mysql', 'bigquery', 'mssql', 'databrics', 'sqlite', 'vertics', 'ibm_db2', 'postgres', 'oracle', 'hql', 'snowflake', 'sql'] + +If you don't see dialect that you want to use - open issue with description and links to Database docs or use one of existed dialects. + Snowflake updates: ^^^^^^^^^^^^^^^^^^ #. For some reasons, 'CLONE' statement in SNOWFLAKE was parsed into 'like' key in output. Now it was changed to 'clone' - inner structure of output stay the same as previously. +MySQL updates: +^^^^^^^^^^^^^^ + + +#. Engine statement now parsed correctly. Previously, output was always '='. + +BigQuery updates: +^^^^^^^^^^^^^^^^^ + + +#. Word 'schema' totally removed from output. ``Dataset`` used instead of ``schema`` in BigQuery dialect. + **v0.32.1** Minor Fixes From 2630cb8e1ef0d9fe710e90c817efcad40d7da3b7 Mon Sep 17 00:00:00 2001 From: xnuinside Date: Tue, 9 Jan 2024 03:15:21 +0300 Subject: [PATCH 11/12] fix type annotation --- simple_ddl_parser/output/dialects.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index 8cafdab..b7e2013 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -248,7 +248,7 @@ class Snowflake(Dialect): } -def add_dialects(dialects: list[Dialect]) -> list[str]: +def add_dialects(dialects: List[Dialect]) -> List[str]: return [dialect.__d_name__ for dialect in dialects] From 40e76f307ee5730f7f3075c1b63d9de709988360 Mon Sep 17 00:00:00 2001 From: xnuinside Date: Tue, 9 Jan 2024 08:39:15 +0300 Subject: [PATCH 12/12] move all alter after parsing logic to base data class --- simple_ddl_parser/output/base_data.py | 95 ++++++++++++++++++++++++++ simple_ddl_parser/output/core.py | 97 +-------------------------- simple_ddl_parser/output/dialects.py | 7 -- 3 files changed, 97 insertions(+), 102 deletions(-) diff --git a/simple_ddl_parser/output/base_data.py b/simple_ddl_parser/output/base_data.py index 8f47754..875cec4 100644 --- a/simple_ddl_parser/output/base_data.py +++ b/simple_ddl_parser/output/base_data.py @@ -252,3 +252,98 @@ def create_alter_column_references( alter_column["references"]["column"] = column_reference del alter_column["references"]["columns"] return alter_column + + def append_statement_information_to_table(self, statement: Dict) -> None: + if "columns" in statement: + self.prepare_alter_columns(statement) + elif "columns_to_rename" in statement: + self.alter_rename_columns(statement) + elif "columns_to_drop" in statement: + self.alter_drop_columns(statement) + elif "columns_to_modify" in statement: + self.alter_modify_columns(statement) + elif "check" in statement: + if not self.alter.get("checks"): + self.alter["checks"] = [] + statement["check"]["statement"] = " ".join(statement["check"]["statement"]) + self.alter["checks"].append(statement["check"]) + elif "unique" in statement: + self.set_alter_to_table_data("unique", statement) + self.set_unique_columns_from_alter(statement) + elif "default" in statement: + self.set_alter_to_table_data("default", statement) + self.set_default_columns_from_alter(statement) + elif "primary_key" in statement: + self.set_alter_to_table_data("primary_key", statement) + + def set_default_columns_from_alter(self, statement: Dict) -> None: + for column in self.columns: + if statement["default"]["columns"]: + for column_name in statement["default"]["columns"]: + if column["name"] == column_name: + column["default"] = statement["default"]["value"] + + def set_unique_columns_from_alter(self, statement: Dict) -> None: + for column in self.columns: + for column_name in statement["unique"]["columns"]: + if column["name"] == column_name: + column["unique"] = True + + def alter_modify_columns(self, statement) -> None: + alter_key = "columns_to_modify" + table_alter_key = "modified_columns" + + if not self.alter.get(table_alter_key): + self.alter[table_alter_key] = [] + + for modified_column in statement[alter_key]: + index = None + for num, column in enumerate(self.columns): + if normalize_name(modified_column["name"]) == normalize_name( + column["name"] + ): + index = num + break + if index is not None: + self.alter[table_alter_key] = self.columns[index] + self.columns[index] = modified_column + + def alter_drop_columns(self, statement) -> None: + alter_key = "columns_to_drop" + table_alter_key = "dropped_columns" + + if not self.alter.get(table_alter_key): + self.alter[table_alter_key] = [] + for column_to_drop in statement[alter_key]: + col_index = None + for num, column in enumerate(self.columns): + if normalize_name(column_to_drop) == normalize_name(column["name"]): + col_index = num + break + if col_index is not None: + self.alter[table_alter_key] = self.columns[col_index] + del self.columns[col_index] + + def alter_rename_columns(self, statement) -> None: + alter_key = "columns_to_rename" + table_alter_key = "renamed_columns" + + for renamed_column in statement[alter_key]: + for column in self.columns: + if normalize_name(renamed_column["from"]) == normalize_name( + column["name"] + ): + column["name"] = renamed_column["to"] + break + + if not self.alter.get(table_alter_key): + self.alter[table_alter_key] = [] + + self.alter[table_alter_key].extend(statement[alter_key]) + + def set_alter_to_table_data(self, key: str, statement: Dict) -> None: + if not self.alter.get(key + "s"): + self.alter[key + "s"] = [] + if "using" in statement: + statement[key]["using"] = statement["using"] + self.alter[key + "s"].append(statement[key]) diff --git a/simple_ddl_parser/output/core.py b/simple_ddl_parser/output/core.py index d8e6ad1..5f8d77b 100644 --- a/simple_ddl_parser/output/core.py +++ b/simple_ddl_parser/output/core.py @@ -5,7 +5,7 @@ from simple_ddl_parser.output.dialects import dialects_clean_up from simple_ddl_parser.output.table_data import TableData -from simple_ddl_parser.utils import get_table_id, normalize_name +from simple_ddl_parser.utils import get_table_id logger = logging.getLogger("simple_ddl_parser") @@ -57,30 +57,7 @@ def add_alter_to_table(self, statement: Dict) -> None: target_table = self.get_table_from_tables_data( statement["schema"], statement["alter_table_name"] ) - - if "columns" in statement: - target_table.prepare_alter_columns(statement) - elif "columns_to_rename" in statement: - alter_rename_columns(target_table, statement) - elif "columns_to_drop" in statement: - alter_drop_columns(target_table, statement) - elif "columns_to_modify" in statement: - alter_modify_columns(target_table, statement) - elif "check" in statement: - if not target_table.alter.get("checks"): - target_table.alter["checks"] = [] - statement["check"]["statement"] = " ".join(statement["check"]["statement"]) - target_table.alter["checks"].append(statement["check"]) - elif "unique" in statement: - target_table = set_alter_to_table_data("unique", statement, target_table) - target_table = set_unique_columns_from_alter(statement, target_table) - elif "default" in statement: - target_table = set_alter_to_table_data("default", statement, target_table) - target_table = set_default_columns_from_alter(statement, target_table) - elif "primary_key" in statement: - target_table = set_alter_to_table_data( - "primary_key", statement, target_table - ) + target_table.append_statement_information_to_table(statement) def process_statement_data(self, statement_data: Dict) -> Dict: """process tables, types, sequence and etc. data""" @@ -160,76 +137,6 @@ def format(self) -> List[Dict]: return self.final_result -def set_default_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: - for column in target_table.columns: - if statement["default"]["columns"]: - for column_name in statement["default"]["columns"]: - if column["name"] == column_name: - column["default"] = statement["default"]["value"] - return target_table - - -def set_unique_columns_from_alter(statement: Dict, target_table: Dict) -> Dict: - for column in target_table.columns: - for column_name in statement["unique"]["columns"]: - if column["name"] == column_name: - column["unique"] = True - return target_table - - -def alter_modify_columns(target_table, statement) -> None: - if not target_table.alter.get("modified_columns"): - target_table.alter["modified_columns"] = [] - - for modified_column in statement["columns_to_modify"]: - index = None - for num, column in enumerate(target_table.columns): - if normalize_name(modified_column["name"]) == normalize_name( - column["name"] - ): - index = num - break - if index is not None: - target_table.alter["modified_columns"] = target_table.columns[index] - target_table.columns[index] = modified_column - - -def alter_drop_columns(target_table, statement) -> None: - if not target_table.alter.get("dropped_columns"): - target_table.alter["dropped_columns"] = [] - for column_to_drop in statement["columns_to_drop"]: - index = None - for num, column in enumerate(target_table.columns): - if normalize_name(column_to_drop) == normalize_name(column["name"]): - index = num - break - if index is not None: - target_table.alter["dropped_columns"] = target_table.columns[index] - del target_table.columns[index] - - -def alter_rename_columns(target_table, statement) -> None: - for renamed_column in statement["columns_to_rename"]: - for column in target_table.columns: - if normalize_name(renamed_column["from"]) == normalize_name(column["name"]): - column["name"] = renamed_column["to"] - break - - if not target_table.alter.get("renamed_columns"): - target_table.alter["renamed_columns"] = [] - - target_table.alter["renamed_columns"].extend(statement["columns_to_rename"]) - - -def set_alter_to_table_data(key: str, statement: Dict, target_table: Dict) -> Dict: - if not target_table.alter.get(key + "s"): - target_table.alter[key + "s"] = [] - if "using" in statement: - statement[key]["using"] = statement["using"] - target_table.alter[key + "s"].append(statement[key]) - return target_table - - def dump_data_to_file(table_name: str, dump_path: str, data: List[Dict]) -> None: """method to dump json schema""" if not os.path.isdir(dump_path): diff --git a/simple_ddl_parser/output/dialects.py b/simple_ddl_parser/output/dialects.py index b7e2013..70b29a0 100644 --- a/simple_ddl_parser/output/dialects.py +++ b/simple_ddl_parser/output/dialects.py @@ -11,13 +11,6 @@ def update_bigquery_output(statement: dict) -> dict: return statement -def clean_up_output(table_data: Dict, key_list: List[str]) -> Dict: - for key in key_list: - if key in table_data: - del table_data[key] - return table_data - - def dialects_clean_up(output_mode: str, table_data) -> Dict: update_mappers_for_table_properties = {"bigquery": update_bigquery_output} update_table_prop = update_mappers_for_table_properties.get(output_mode)