From 6de58137bea9c598e7bff2321c515db7a6e5ff92 Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Thu, 26 Oct 2023 11:50:08 +0100 Subject: [PATCH 01/10] Use ruff formatter Ruff is now also a formatter! And it runs in a fraction of a second across our whole codebase vs "I waited more than 30s and cancelled it because I got bored". --- .github/workflows/ci-backend.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-backend.yml b/.github/workflows/ci-backend.yml index ebc524c8aa509..70db671975d6a 100644 --- a/.github/workflows/ci-backend.yml +++ b/.github/workflows/ci-backend.yml @@ -125,11 +125,11 @@ jobs: - name: Check for syntax errors, import sort, and code style violations run: | - ruff . + ruff check . - name: Check formatting run: | - black --exclude posthog/hogql/grammar --check --diff . + ruff format --exclude posthog/hogql/grammar --check --diff . - name: Check static typing run: | From 8a4cb92b474bc952db0fc00fa619c20c399e1629 Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Thu, 26 Oct 2023 12:04:25 +0100 Subject: [PATCH 02/10] Config and command -> ruff --- package.json | 2 +- pyproject.toml | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index e98ba7d7b16d2..b3a12706b930d 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "typegen:check": "kea-typegen check", "typegen:watch": "kea-typegen watch --delete --show-ts-errors", "typegen:clean": "find frontend/src -type f -name '*Type.ts' -delete", - "format:python": "black . && isort .", + "format:python": "ruff .", "format:js": "pnpm prettier && pnpm eslint --fix", "format": "pnpm format:python && pnpm format:js", "storybook": "storybook dev -p 6006", diff --git a/pyproject.toml b/pyproject.toml index b3108325e5b6b..689a4c32bf2a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,13 +3,10 @@ line-length = 120 target-version = ['py310'] [tool.isort] -multi_line_output = 3 -include_trailing_comma = true -force_grid_wrap = 8 -ensure_newline_before_comments = true -line_length = 120 +profile = "black" [tool.ruff] +line-length = 120 exclude = [ ".git", "./plugin-server/node_modules/", From 0825c97c072bf4f6cba19e753b11fcc31103ac05 Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Thu, 26 Oct 2023 12:04:51 +0100 Subject: [PATCH 03/10] Run 'ruff format .' --- ee/api/explicit_team_member.py | 2 +- ee/api/role.py | 2 +- ee/clickhouse/models/test/test_filters.py | 30 +++++++++++-------- .../funnels/funnel_correlation_persons.py | 6 +++- ee/models/role.py | 2 +- .../session_recording_playlist.py | 4 +-- ee/tasks/test/test_calculate_cohort.py | 4 +-- posthog/api/feature_flag.py | 4 +-- posthog/api/notebook.py | 3 +- posthog/api/organization_member.py | 4 +-- posthog/api/signup.py | 4 ++- posthog/api/team.py | 2 +- posthog/api/test/test_event.py | 14 +++++---- posthog/api/test/test_person.py | 7 +++-- posthog/clickhouse/client/execute.py | 2 +- .../0006_session_recording_events.py | 6 ++-- ...ording_events_materialize_full_snapshot.py | 6 ++-- posthog/demo/test/test_matrix_manager.py | 14 +++++---- posthog/hogql/database/database.py | 4 +-- posthog/models/async_migration.py | 2 +- posthog/models/cohort/sql.py | 10 ++++--- posthog/models/dashboard.py | 2 +- posthog/models/event/sql.py | 14 ++++----- posthog/models/event/util.py | 4 +-- posthog/models/feature_flag/flag_matching.py | 5 +++- posthog/models/filters/mixins/simplify.py | 3 +- posthog/models/filters/test/test_filter.py | 4 +-- posthog/models/ingestion_warnings/sql.py | 10 ++++--- posthog/models/organization.py | 2 +- posthog/models/performance/sql.py | 18 +++++------ posthog/models/person/sql.py | 18 +++++------ posthog/models/property/util.py | 4 +-- posthog/models/property_definition.py | 2 +- posthog/models/team/team.py | 2 +- posthog/queries/actor_base_query.py | 11 +++++-- posthog/queries/person_query.py | 5 +++- ...sion_recording_list_from_session_replay.py | 10 +++++-- .../sql/session_recording_event_sql.py | 10 ++++--- .../sql/session_replay_event_sql.py | 10 ++++--- .../test/test_session_recordings.py | 2 +- posthog/settings/base_variables.py | 4 +-- .../tasks/check_clickhouse_schema_drift.py | 8 ++--- posthog/tasks/exporter.py | 2 +- .../test_bigquery_batch_export_workflow.py | 2 +- .../test_s3_batch_export_workflow.py | 2 +- posthog/temporal/workflows/batch_exports.py | 4 +-- 46 files changed, 157 insertions(+), 133 deletions(-) diff --git a/ee/api/explicit_team_member.py b/ee/api/explicit_team_member.py index 723e317a86a55..edd5692453b69 100644 --- a/ee/api/explicit_team_member.py +++ b/ee/api/explicit_team_member.py @@ -48,7 +48,7 @@ def create(self, validated_data): user_uuid = validated_data.pop("user_uuid") validated_data["team"] = team try: - requesting_parent_membership: (OrganizationMembership) = OrganizationMembership.objects.get( + requesting_parent_membership: OrganizationMembership = OrganizationMembership.objects.get( organization_id=team.organization_id, user__uuid=user_uuid, user__is_active=True, diff --git a/ee/api/role.py b/ee/api/role.py index 7114ef4f0110f..7e7c8714c537e 100644 --- a/ee/api/role.py +++ b/ee/api/role.py @@ -25,7 +25,7 @@ class RolePermissions(BasePermission): def has_permission(self, request, view): organization = request.user.organization - requesting_membership: (OrganizationMembership) = OrganizationMembership.objects.get( + requesting_membership: OrganizationMembership = OrganizationMembership.objects.get( user_id=cast(User, request.user).id, organization=organization, ) diff --git a/ee/clickhouse/models/test/test_filters.py b/ee/clickhouse/models/test/test_filters.py index f388e383f1c12..26ff79c565c4e 100644 --- a/ee/clickhouse/models/test/test_filters.py +++ b/ee/clickhouse/models/test/test_filters.py @@ -1219,13 +1219,16 @@ def test_person_cohort_properties(self): ) query = """ SELECT distinct_id FROM person_distinct_id2 WHERE team_id = %(team_id)s {prop_clause} - """.format( - prop_clause=prop_clause - ) + """.format(prop_clause=prop_clause) # get distinct_id column of result - result = sync_execute(query, {"team_id": self.team.pk, **prop_clause_params, **filter.hogql_context.values,},)[ - 0 - ][0] + result = sync_execute( + query, + { + "team_id": self.team.pk, + **prop_clause_params, + **filter.hogql_context.values, + }, + )[0][0] self.assertEqual(result, person1_distinct_id) # test cohort2 with negation @@ -1241,13 +1244,16 @@ def test_person_cohort_properties(self): ) query = """ SELECT distinct_id FROM person_distinct_id2 WHERE team_id = %(team_id)s {prop_clause} - """.format( - prop_clause=prop_clause - ) + """.format(prop_clause=prop_clause) # get distinct_id column of result - result = sync_execute(query, {"team_id": self.team.pk, **prop_clause_params, **filter.hogql_context.values,},)[ - 0 - ][0] + result = sync_execute( + query, + { + "team_id": self.team.pk, + **prop_clause_params, + **filter.hogql_context.values, + }, + )[0][0] self.assertEqual(result, person2_distinct_id) diff --git a/ee/clickhouse/queries/funnels/funnel_correlation_persons.py b/ee/clickhouse/queries/funnels/funnel_correlation_persons.py index 3b83344d502aa..6a0cfe3655103 100644 --- a/ee/clickhouse/queries/funnels/funnel_correlation_persons.py +++ b/ee/clickhouse/queries/funnels/funnel_correlation_persons.py @@ -52,7 +52,11 @@ def actor_query(self, limit_actors: Optional[bool] = True): def get_actors( self, - ) -> Tuple[Union[QuerySet[Person], QuerySet[Group]], Union[List[SerializedGroup], List[SerializedPerson]], int,]: + ) -> Tuple[ + Union[QuerySet[Person], QuerySet[Group]], + Union[List[SerializedGroup], List[SerializedPerson]], + int, + ]: if self._filter.correlation_type == FunnelCorrelationType.PROPERTIES: return _FunnelPropertyCorrelationActors(self._filter, self._team, self._base_uri).get_actors() else: diff --git a/ee/models/role.py b/ee/models/role.py index 61908ff83149e..5284972bd7cc1 100644 --- a/ee/models/role.py +++ b/ee/models/role.py @@ -12,7 +12,7 @@ class Role(UUIDModel): related_name="roles", related_query_name="role", ) - feature_flags_access_level: (models.PositiveSmallIntegerField) = models.PositiveSmallIntegerField( + feature_flags_access_level: models.PositiveSmallIntegerField = models.PositiveSmallIntegerField( default=OrganizationResourceAccess.AccessLevel.CAN_ALWAYS_EDIT, choices=OrganizationResourceAccess.AccessLevel.choices, ) diff --git a/ee/session_recordings/session_recording_playlist.py b/ee/session_recordings/session_recording_playlist.py index f2cfbbef4dc2f..7bc471be5e021 100644 --- a/ee/session_recordings/session_recording_playlist.py +++ b/ee/session_recordings/session_recording_playlist.py @@ -265,9 +265,7 @@ def modify_recordings( return response.Response({"success": True}) if request.method == "DELETE": - playlist_item = SessionRecordingPlaylistItem.objects.get( - playlist=playlist, recording=session_recording_id - ) # type: ignore + playlist_item = SessionRecordingPlaylistItem.objects.get(playlist=playlist, recording=session_recording_id) # type: ignore if playlist_item: playlist_item.delete() diff --git a/ee/tasks/test/test_calculate_cohort.py b/ee/tasks/test/test_calculate_cohort.py index 24cb0a3783f4d..c5264bbe12631 100644 --- a/ee/tasks/test/test_calculate_cohort.py +++ b/ee/tasks/test/test_calculate_cohort.py @@ -12,9 +12,7 @@ from posthog.test.base import ClickhouseTestMixin, _create_event, _create_person -class TestClickhouseCalculateCohort( - ClickhouseTestMixin, calculate_cohort_test_factory(_create_event, _create_person) -): # type: ignore +class TestClickhouseCalculateCohort(ClickhouseTestMixin, calculate_cohort_test_factory(_create_event, _create_person)): # type: ignore @patch("posthog.tasks.calculate_cohort.insert_cohort_from_insight_filter.delay") def test_create_stickiness_cohort(self, _insert_cohort_from_insight_filter): _create_person(team_id=self.team.pk, distinct_ids=["blabla"]) diff --git a/posthog/api/feature_flag.py b/posthog/api/feature_flag.py index 6e61251818f48..1c17722525b98 100644 --- a/posthog/api/feature_flag.py +++ b/posthog/api/feature_flag.py @@ -85,10 +85,10 @@ class FeatureFlagSerializer(TaggedItemSerializerMixin, serializers.HyperlinkedMo is_simple_flag = serializers.SerializerMethodField() rollout_percentage = serializers.SerializerMethodField() - experiment_set: (serializers.PrimaryKeyRelatedField) = serializers.PrimaryKeyRelatedField(many=True, read_only=True) + experiment_set: serializers.PrimaryKeyRelatedField = serializers.PrimaryKeyRelatedField(many=True, read_only=True) surveys: serializers.SerializerMethodField = serializers.SerializerMethodField() features: serializers.SerializerMethodField = serializers.SerializerMethodField() - usage_dashboard: (serializers.PrimaryKeyRelatedField) = serializers.PrimaryKeyRelatedField(read_only=True) + usage_dashboard: serializers.PrimaryKeyRelatedField = serializers.PrimaryKeyRelatedField(read_only=True) analytics_dashboards = serializers.PrimaryKeyRelatedField( many=True, required=False, diff --git a/posthog/api/notebook.py b/posthog/api/notebook.py index 103261dca90e6..4781523e059f2 100644 --- a/posthog/api/notebook.py +++ b/posthog/api/notebook.py @@ -273,8 +273,7 @@ def _filter_request(self, request: request.Request, queryset: QuerySet) -> Query queryset = queryset.filter( # some notebooks have no text_content until next saved, so we need to check the title too # TODO this can be removed once all/most notebooks have text_content - Q(title__search=request.GET["search"]) - | Q(text_content__search=request.GET["search"]) + Q(title__search=request.GET["search"]) | Q(text_content__search=request.GET["search"]) ) elif key == "contains": contains = request.GET["contains"] diff --git a/posthog/api/organization_member.py b/posthog/api/organization_member.py index d6d90c1280d06..11f3c08e30411 100644 --- a/posthog/api/organization_member.py +++ b/posthog/api/organization_member.py @@ -26,7 +26,7 @@ def has_object_permission(self, request: Request, view, membership: Organization if request.method in SAFE_METHODS: return True organization = extract_organization(membership) - requesting_membership: (OrganizationMembership) = OrganizationMembership.objects.get( + requesting_membership: OrganizationMembership = OrganizationMembership.objects.get( user_id=cast(User, request.user).id, organization=organization, ) @@ -66,7 +66,7 @@ def get_has_social_auth(self, instance: OrganizationMembership) -> bool: def update(self, updated_membership, validated_data, **kwargs): updated_membership = cast(OrganizationMembership, updated_membership) raise_errors_on_nested_writes("update", self, validated_data) - requesting_membership: (OrganizationMembership) = OrganizationMembership.objects.get( + requesting_membership: OrganizationMembership = OrganizationMembership.objects.get( organization=updated_membership.organization, user=self.context["request"].user, ) diff --git a/posthog/api/signup.py b/posthog/api/signup.py index 511f425b71000..5f866d2efda59 100644 --- a/posthog/api/signup.py +++ b/posthog/api/signup.py @@ -502,7 +502,9 @@ def social_create_user( user=user.id if user else None, ) if user: - backend_processor = "domain_whitelist" # This is actually `jit_provisioning` (name kept for backwards-compatibility purposes) + backend_processor = ( + "domain_whitelist" + ) # This is actually `jit_provisioning` (name kept for backwards-compatibility purposes) from_invite = True # jit_provisioning means they're definitely not organization_first_user if not user: diff --git a/posthog/api/team.py b/posthog/api/team.py index 2c076a6a8d8b3..f829dd23700c2 100644 --- a/posthog/api/team.py +++ b/posthog/api/team.py @@ -204,7 +204,7 @@ def validate(self, attrs: Any) -> Any: organization_id = self.instance.organization_id else: organization_id = self.context["view"].organization - org_membership: (OrganizationMembership) = OrganizationMembership.objects.only("level").get( + org_membership: OrganizationMembership = OrganizationMembership.objects.only("level").get( organization_id=organization_id, user=request.user ) if org_membership.level < OrganizationMembership.Level.ADMIN: diff --git a/posthog/api/test/test_event.py b/posthog/api/test/test_event.py index dfd24b6589278..3b0c8a11d471b 100644 --- a/posthog/api/test/test_event.py +++ b/posthog/api/test/test_event.py @@ -446,9 +446,10 @@ def test_pagination(self): from posthog.client import sync_execute self.assertEqual( - sync_execute("select count(*) from events where team_id = %(team_id)s", {"team_id": self.team.pk},)[ - 0 - ][0], + sync_execute( + "select count(*) from events where team_id = %(team_id)s", + {"team_id": self.team.pk}, + )[0][0], 250, ) @@ -495,9 +496,10 @@ def test_pagination_bounded_date_range(self): from posthog.client import sync_execute self.assertEqual( - sync_execute("select count(*) from events where team_id = %(team_id)s", {"team_id": self.team.pk},)[ - 0 - ][0], + sync_execute( + "select count(*) from events where team_id = %(team_id)s", + {"team_id": self.team.pk}, + )[0][0], 25, ) diff --git a/posthog/api/test/test_person.py b/posthog/api/test/test_person.py index 549e13177f26c..815f38c472978 100644 --- a/posthog/api/test/test_person.py +++ b/posthog/api/test/test_person.py @@ -339,9 +339,10 @@ def test_delete_person(self): self.assertEqual([(100, 1, "{}")], ch_persons) # No async deletion is scheduled self.assertEqual(AsyncDeletion.objects.filter(team_id=self.team.id).count(), 0) - ch_events = sync_execute("SELECT count() FROM events WHERE team_id = %(team_id)s", {"team_id": self.team.pk},)[ - 0 - ][0] + ch_events = sync_execute( + "SELECT count() FROM events WHERE team_id = %(team_id)s", + {"team_id": self.team.pk}, + )[0][0] self.assertEqual(ch_events, 3) @freeze_time("2021-08-25T22:09:14.252Z") diff --git a/posthog/clickhouse/client/execute.py b/posthog/clickhouse/client/execute.py index 5f039c78c19f9..b588badfc07ea 100644 --- a/posthog/clickhouse/client/execute.py +++ b/posthog/clickhouse/client/execute.py @@ -84,7 +84,7 @@ def sync_execute( from posthog.test.base import flush_persons_and_events flush_persons_and_events() - except (ModuleNotFoundError): # when we run plugin server tests it tries to run above, ignore + except ModuleNotFoundError: # when we run plugin server tests it tries to run above, ignore pass with get_pool(workload, team_id, readonly).get_client() as client: diff --git a/posthog/clickhouse/migrations/0006_session_recording_events.py b/posthog/clickhouse/migrations/0006_session_recording_events.py index 5f9f1a8212261..732d189d45545 100644 --- a/posthog/clickhouse/migrations/0006_session_recording_events.py +++ b/posthog/clickhouse/migrations/0006_session_recording_events.py @@ -8,12 +8,12 @@ ) from posthog.settings.data_stores import CLICKHOUSE_CLUSTER -SESSION_RECORDING_EVENTS_MATERIALIZED_COLUMN_COMMENTS_SQL = lambda: """ +SESSION_RECORDING_EVENTS_MATERIALIZED_COLUMN_COMMENTS_SQL = ( + lambda: """ ALTER TABLE session_recording_events ON CLUSTER '{cluster}' COMMENT COLUMN has_full_snapshot 'column_materializer::has_full_snapshot' -""".format( - cluster=CLICKHOUSE_CLUSTER +""".format(cluster=CLICKHOUSE_CLUSTER) ) operations = [ diff --git a/posthog/clickhouse/migrations/0021_session_recording_events_materialize_full_snapshot.py b/posthog/clickhouse/migrations/0021_session_recording_events_materialize_full_snapshot.py index af680a54d9941..379970976354c 100644 --- a/posthog/clickhouse/migrations/0021_session_recording_events_materialize_full_snapshot.py +++ b/posthog/clickhouse/migrations/0021_session_recording_events_materialize_full_snapshot.py @@ -3,12 +3,12 @@ from posthog.client import sync_execute from posthog.settings import CLICKHOUSE_CLUSTER -SESSION_RECORDING_EVENTS_MATERIALIZED_COLUMN_COMMENTS_SQL = lambda: """ +SESSION_RECORDING_EVENTS_MATERIALIZED_COLUMN_COMMENTS_SQL = ( + lambda: """ ALTER TABLE session_recording_events ON CLUSTER '{cluster}' COMMENT COLUMN has_full_snapshot 'column_materializer::has_full_snapshot' -""".format( - cluster=CLICKHOUSE_CLUSTER +""".format(cluster=CLICKHOUSE_CLUSTER) ) diff --git a/posthog/demo/test/test_matrix_manager.py b/posthog/demo/test/test_matrix_manager.py index 25770553ab613..edc015c7b5aa9 100644 --- a/posthog/demo/test/test_matrix_manager.py +++ b/posthog/demo/test/test_matrix_manager.py @@ -85,9 +85,10 @@ def test_run_on_team(self): # At least one event for each cluster assert ( - sync_execute("SELECT count() FROM events WHERE team_id = %(team_id)s", {"team_id": self.team.pk},)[ - 0 - ][0] + sync_execute( + "SELECT count() FROM events WHERE team_id = %(team_id)s", + {"team_id": self.team.pk}, + )[0][0] >= 3 ) assert self.team.name == DummyMatrix.PRODUCT_NAME @@ -100,8 +101,9 @@ def test_run_on_team_using_pre_save(self): # At least one event for each cluster assert sync_execute("SELECT count() FROM events WHERE team_id = 0")[0][0] >= 3 assert ( - sync_execute("SELECT count() FROM events WHERE team_id = %(team_id)s", {"team_id": self.team.pk},)[ - 0 - ][0] + sync_execute( + "SELECT count() FROM events WHERE team_id = %(team_id)s", + {"team_id": self.team.pk}, + )[0][0] >= 3 ) diff --git a/posthog/hogql/database/database.py b/posthog/hogql/database/database.py index db2791c348d76..59580ccc6d8e7 100644 --- a/posthog/hogql/database/database.py +++ b/posthog/hogql/database/database.py @@ -61,10 +61,10 @@ class Database(BaseModel): cohort_people: CohortPeople = CohortPeople() static_cohort_people: StaticCohortPeople = StaticCohortPeople() log_entries: LogEntriesTable = LogEntriesTable() - console_logs_log_entries: (ReplayConsoleLogsLogEntriesTable) = ReplayConsoleLogsLogEntriesTable() + console_logs_log_entries: ReplayConsoleLogsLogEntriesTable = ReplayConsoleLogsLogEntriesTable() batch_export_log_entries: BatchExportLogEntriesTable = BatchExportLogEntriesTable() - raw_session_replay_events: (RawSessionReplayEventsTable) = RawSessionReplayEventsTable() + raw_session_replay_events: RawSessionReplayEventsTable = RawSessionReplayEventsTable() raw_person_distinct_ids: RawPersonDistinctIdsTable = RawPersonDistinctIdsTable() raw_persons: RawPersonsTable = RawPersonsTable() raw_groups: RawGroupsTable = RawGroupsTable() diff --git a/posthog/models/async_migration.py b/posthog/models/async_migration.py index ab60eed94d0c5..885f7ce397931 100644 --- a/posthog/models/async_migration.py +++ b/posthog/models/async_migration.py @@ -33,7 +33,7 @@ class Meta: null=False, blank=False, default=MigrationStatus.NotStarted ) - current_operation_index: (models.PositiveSmallIntegerField) = models.PositiveSmallIntegerField( + current_operation_index: models.PositiveSmallIntegerField = models.PositiveSmallIntegerField( null=False, blank=False, default=0 ) current_query_id: models.CharField = models.CharField(max_length=100, null=False, blank=False, default="") diff --git a/posthog/models/cohort/sql.py b/posthog/models/cohort/sql.py index 821e84e29fd37..d56e5507f9571 100644 --- a/posthog/models/cohort/sql.py +++ b/posthog/models/cohort/sql.py @@ -7,7 +7,8 @@ """ COHORTPEOPLE_TABLE_ENGINE = lambda: CollapsingMergeTree("cohortpeople", ver="sign") -CREATE_COHORTPEOPLE_TABLE_SQL = lambda: """ +CREATE_COHORTPEOPLE_TABLE_SQL = ( + lambda: """ CREATE TABLE IF NOT EXISTS cohortpeople ON CLUSTER '{cluster}' ( person_id UUID, @@ -19,9 +20,10 @@ Order By (team_id, cohort_id, person_id, version) {storage_policy} """.format( - cluster=CLICKHOUSE_CLUSTER, - engine=COHORTPEOPLE_TABLE_ENGINE(), - storage_policy="", + cluster=CLICKHOUSE_CLUSTER, + engine=COHORTPEOPLE_TABLE_ENGINE(), + storage_policy="", + ) ) TRUNCATE_COHORTPEOPLE_TABLE_SQL = f"TRUNCATE TABLE IF EXISTS cohortpeople ON CLUSTER '{CLICKHOUSE_CLUSTER}'" diff --git a/posthog/models/dashboard.py b/posthog/models/dashboard.py index f20fc9fdcb0f2..86af344be038e 100644 --- a/posthog/models/dashboard.py +++ b/posthog/models/dashboard.py @@ -52,7 +52,7 @@ class PrivilegeLevel(models.IntegerChoices): last_accessed_at: models.DateTimeField = models.DateTimeField(blank=True, null=True) filters: models.JSONField = models.JSONField(default=dict) creation_mode: models.CharField = models.CharField(max_length=16, default="default", choices=CreationMode.choices) - restriction_level: (models.PositiveSmallIntegerField) = models.PositiveSmallIntegerField( + restriction_level: models.PositiveSmallIntegerField = models.PositiveSmallIntegerField( default=RestrictionLevel.EVERYONE_IN_PROJECT_CAN_EDIT, choices=RestrictionLevel.choices, ) diff --git a/posthog/models/event/sql.py b/posthog/models/event/sql.py index 871fec438a847..410904ba006d4 100644 --- a/posthog/models/event/sql.py +++ b/posthog/models/event/sql.py @@ -124,7 +124,8 @@ indexes="", ) -EVENTS_TABLE_JSON_MV_SQL = lambda: """ +EVENTS_TABLE_JSON_MV_SQL = ( + lambda: """ CREATE MATERIALIZED VIEW IF NOT EXISTS events_json_mv ON CLUSTER '{cluster}' TO {database}.{target_table} AS SELECT @@ -154,9 +155,10 @@ _offset FROM {database}.kafka_events_json """.format( - target_table=WRITABLE_EVENTS_DATA_TABLE(), - cluster=settings.CLICKHOUSE_CLUSTER, - database=settings.CLICKHOUSE_DATABASE, + target_table=WRITABLE_EVENTS_DATA_TABLE(), + cluster=settings.CLICKHOUSE_CLUSTER, + database=settings.CLICKHOUSE_DATABASE, + ) ) # Distributed engine tables are only created if CLICKHOUSE_REPLICATED @@ -387,9 +389,7 @@ GROUP BY tag_name, elements_chain ORDER BY tag_count desc, tag_name LIMIT %(limit)s -""".format( - tag_regex=EXTRACT_TAG_REGEX, text_regex=EXTRACT_TEXT_REGEX -) +""".format(tag_regex=EXTRACT_TAG_REGEX, text_regex=EXTRACT_TEXT_REGEX) GET_CUSTOM_EVENTS = """ SELECT DISTINCT event FROM events where team_id = %(team_id)s AND event NOT IN ['$autocapture', '$pageview', '$identify', '$pageleave', '$screen'] diff --git a/posthog/models/event/util.py b/posthog/models/event/util.py index 2cd36b34e1dd2..9fe98305d693a 100644 --- a/posthog/models/event/util.py +++ b/posthog/models/event/util.py @@ -156,9 +156,7 @@ def bulk_create_events(events: List[Dict[str, Any]], person_mapping: Optional[Di %(created_at_{i})s, now(), 0 - )""".format( - i=index - ) + )""".format(i=index) ) #  use person properties mapping to populate person properties in given event diff --git a/posthog/models/feature_flag/flag_matching.py b/posthog/models/feature_flag/flag_matching.py index 05c5bbccb8f63..3817d59d3567e 100644 --- a/posthog/models/feature_flag/flag_matching.py +++ b/posthog/models/feature_flag/flag_matching.py @@ -198,7 +198,10 @@ def get_match(self, feature_flag: FeatureFlag) -> FeatureFlagMatch: payload=payload, ) - (highest_priority_evaluation_reason, highest_priority_index,) = self.get_highest_priority_match_evaluation( + ( + highest_priority_evaluation_reason, + highest_priority_index, + ) = self.get_highest_priority_match_evaluation( highest_priority_evaluation_reason, highest_priority_index, evaluation_reason, diff --git a/posthog/models/filters/mixins/simplify.py b/posthog/models/filters/mixins/simplify.py index 4735a95e6a7d6..d63cf6782ebc3 100644 --- a/posthog/models/filters/mixins/simplify.py +++ b/posthog/models/filters/mixins/simplify.py @@ -39,7 +39,8 @@ def simplify(self: T, team: "Team", **kwargs) -> T: if hasattr(result, "entities_to_dict"): for entity_type, entities in result.entities_to_dict().items(): updated_entities[entity_type] = [ - self._simplify_entity(team, entity_type, entity, **kwargs) for entity in entities # type: ignore + self._simplify_entity(team, entity_type, entity, **kwargs) + for entity in entities # type: ignore ] from posthog.models.property.util import clear_excess_levels diff --git a/posthog/models/filters/test/test_filter.py b/posthog/models/filters/test/test_filter.py index d7f60b149b93b..84b70bbd4d837 100644 --- a/posthog/models/filters/test/test_filter.py +++ b/posthog/models/filters/test/test_filter.py @@ -616,9 +616,7 @@ def _filter_persons(filter: Filter, team: Team): return [str(uuid) for uuid in persons.values_list("uuid", flat=True)] -class TestDjangoPropertiesToQ( - property_to_Q_test_factory(_filter_persons, _create_person), QueryMatchingTest -): # type: ignore +class TestDjangoPropertiesToQ(property_to_Q_test_factory(_filter_persons, _create_person), QueryMatchingTest): # type: ignore @snapshot_postgres_queries def test_array_property_as_string_on_persons(self): Person.objects.create( diff --git a/posthog/models/ingestion_warnings/sql.py b/posthog/models/ingestion_warnings/sql.py index 6f3023744f51f..31917ffeb5499 100644 --- a/posthog/models/ingestion_warnings/sql.py +++ b/posthog/models/ingestion_warnings/sql.py @@ -44,7 +44,8 @@ extra_fields="", ) -INGESTION_WARNINGS_MV_TABLE_SQL = lambda: """ +INGESTION_WARNINGS_MV_TABLE_SQL = ( + lambda: """ CREATE MATERIALIZED VIEW IF NOT EXISTS ingestion_warnings_mv ON CLUSTER '{cluster}' TO {database}.{target_table} AS SELECT @@ -58,9 +59,10 @@ _partition FROM {database}.kafka_ingestion_warnings """.format( - target_table="ingestion_warnings", - cluster=settings.CLICKHOUSE_CLUSTER, - database=settings.CLICKHOUSE_DATABASE, + target_table="ingestion_warnings", + cluster=settings.CLICKHOUSE_CLUSTER, + database=settings.CLICKHOUSE_DATABASE, + ) ) # This table is responsible for writing to sharded_ingestion_warnings based on a sharding key. diff --git a/posthog/models/organization.py b/posthog/models/organization.py index 700fea47658f1..4e1c7af79838c 100644 --- a/posthog/models/organization.py +++ b/posthog/models/organization.py @@ -122,7 +122,7 @@ class PluginsAccessLevel(models.IntegerChoices): slug: LowercaseSlugField = LowercaseSlugField(unique=True, max_length=MAX_SLUG_LENGTH) created_at: models.DateTimeField = models.DateTimeField(auto_now_add=True) updated_at: models.DateTimeField = models.DateTimeField(auto_now=True) - plugins_access_level: (models.PositiveSmallIntegerField) = models.PositiveSmallIntegerField( + plugins_access_level: models.PositiveSmallIntegerField = models.PositiveSmallIntegerField( default=PluginsAccessLevel.CONFIG, choices=PluginsAccessLevel.choices, ) diff --git a/posthog/models/performance/sql.py b/posthog/models/performance/sql.py index 31914e858b9b9..4c6a97f34a615 100644 --- a/posthog/models/performance/sql.py +++ b/posthog/models/performance/sql.py @@ -92,9 +92,7 @@ navigation_type LowCardinality(String), unload_event_end Float64, unload_event_start Float64, -""".strip().rstrip( - "," -) +""".strip().rstrip(",") PERFORMANCE_EVENT_TABLE_ENGINE = lambda: MergeTreeEngine( "performance_events", replication_scheme=ReplicationScheme.SHARDED @@ -179,7 +177,8 @@ def _column_names_from_column_definitions(column_definitions: str) -> str: extra_fields=KAFKA_COLUMNS_WITH_PARTITION, ) -PERFORMANCE_EVENTS_TABLE_MV_SQL = lambda: """ +PERFORMANCE_EVENTS_TABLE_MV_SQL = ( + lambda: """ CREATE MATERIALIZED VIEW IF NOT EXISTS performance_events_mv ON CLUSTER '{cluster}' TO {database}.{target_table} AS SELECT @@ -187,11 +186,12 @@ def _column_names_from_column_definitions(column_definitions: str) -> str: ,{extra_fields} FROM {database}.kafka_performance_events """.format( - columns=_column_names_from_column_definitions(PERFORMANCE_EVENT_COLUMNS), - target_table="writeable_performance_events", - cluster=settings.CLICKHOUSE_CLUSTER, - database=settings.CLICKHOUSE_DATABASE, - extra_fields=_column_names_from_column_definitions(KAFKA_COLUMNS_WITH_PARTITION), + columns=_column_names_from_column_definitions(PERFORMANCE_EVENT_COLUMNS), + target_table="writeable_performance_events", + cluster=settings.CLICKHOUSE_CLUSTER, + database=settings.CLICKHOUSE_DATABASE, + extra_fields=_column_names_from_column_definitions(KAFKA_COLUMNS_WITH_PARTITION), + ) ) # TODO this should probably be a materialized view diff --git a/posthog/models/person/sql.py b/posthog/models/person/sql.py index ffb80869b9e9a..bf18c894f865c 100644 --- a/posthog/models/person/sql.py +++ b/posthog/models/person/sql.py @@ -74,9 +74,7 @@ _timestamp, _offset FROM {database}.kafka_{table_name} -""".format( - table_name=PERSONS_TABLE, cluster=CLICKHOUSE_CLUSTER, database=CLICKHOUSE_DATABASE -) +""".format(table_name=PERSONS_TABLE, cluster=CLICKHOUSE_CLUSTER, database=CLICKHOUSE_DATABASE) GET_LATEST_PERSON_SQL = """ SELECT * FROM person JOIN ( @@ -94,9 +92,7 @@ (select id from ( {latest_person_sql} )) -""".format( - latest_person_sql=GET_LATEST_PERSON_SQL -) +""".format(latest_person_sql=GET_LATEST_PERSON_SQL) # # person_distinct_id - legacy table for person distinct IDs, do not use @@ -132,7 +128,8 @@ # :KLUDGE: We default is_deleted to 0 for backwards compatibility for when we drop `is_deleted` from message schema. # Can't make DEFAULT if(_sign==-1, 1, 0) because Cyclic aliases error. -KAFKA_PERSONS_DISTINCT_ID_TABLE_SQL = lambda: """ +KAFKA_PERSONS_DISTINCT_ID_TABLE_SQL = ( + lambda: """ CREATE TABLE IF NOT EXISTS {table_name} ON CLUSTER '{cluster}' ( distinct_id VARCHAR, @@ -142,9 +139,10 @@ is_deleted Nullable(Int8) ) ENGINE = {engine} """.format( - table_name="kafka_" + PERSONS_DISTINCT_ID_TABLE, - cluster=CLICKHOUSE_CLUSTER, - engine=kafka_engine(KAFKA_PERSON_UNIQUE_ID), + table_name="kafka_" + PERSONS_DISTINCT_ID_TABLE, + cluster=CLICKHOUSE_CLUSTER, + engine=kafka_engine(KAFKA_PERSON_UNIQUE_ID), + ) ) # You must include the database here because of a bug in clickhouse diff --git a/posthog/models/property/util.py b/posthog/models/property/util.py index b353eb11bb141..5e25567178035 100644 --- a/posthog/models/property/util.py +++ b/posthog/models/property/util.py @@ -399,9 +399,7 @@ def negate_operator(operator: OperatorType) -> OperatorType: "is_date_before": "is_date_after", "is_date_after": "is_date_before", # is_date_exact not yet supported - }.get( - operator, operator - ) # type: ignore + }.get(operator, operator) # type: ignore def prop_filter_json_extract( diff --git a/posthog/models/property_definition.py b/posthog/models/property_definition.py index 7747a17c71820..2efc8f203192d 100644 --- a/posthog/models/property_definition.py +++ b/posthog/models/property_definition.py @@ -51,7 +51,7 @@ class Type(models.IntegerChoices): # :TRICKY: May be null for historical events type: models.PositiveSmallIntegerField = models.PositiveSmallIntegerField(default=Type.EVENT, choices=Type.choices) # Only populated for `Type.GROUP` - group_type_index: (models.PositiveSmallIntegerField) = models.PositiveSmallIntegerField(null=True) + group_type_index: models.PositiveSmallIntegerField = models.PositiveSmallIntegerField(null=True) # DEPRECATED property_type_format = models.CharField( diff --git a/posthog/models/team/team.py b/posthog/models/team/team.py index bc458807b56a4..0993a7cdd5149 100644 --- a/posthog/models/team/team.py +++ b/posthog/models/team/team.py @@ -175,7 +175,7 @@ class Team(UUIDClassicModel): decimal_places=2, validators=[MinValueValidator(Decimal(0)), MaxValueValidator(Decimal(1))], ) - session_recording_minimum_duration_milliseconds: (models.IntegerField) = models.IntegerField( + session_recording_minimum_duration_milliseconds: models.IntegerField = models.IntegerField( null=True, blank=True, validators=[MinValueValidator(0), MaxValueValidator(15000)], diff --git a/posthog/queries/actor_base_query.py b/posthog/queries/actor_base_query.py index 396c216f9c01d..75ff6ab0a97e9 100644 --- a/posthog/queries/actor_base_query.py +++ b/posthog/queries/actor_base_query.py @@ -96,7 +96,11 @@ def is_aggregating_by_groups(self) -> bool: def get_actors( self, - ) -> Tuple[Union[QuerySet[Person], QuerySet[Group]], Union[List[SerializedGroup], List[SerializedPerson]], int,]: + ) -> Tuple[ + Union[QuerySet[Person], QuerySet[Group]], + Union[List[SerializedGroup], List[SerializedPerson]], + int, + ]: """Get actors in data model and dict formats. Builds query and executes""" self._filter.team = self._team query, params = self.actor_query() @@ -217,7 +221,10 @@ def add_matched_recordings_to_serialized_actors( def get_actors_from_result( self, raw_result - ) -> Tuple[Union[QuerySet[Person], QuerySet[Group]], Union[List[SerializedGroup], List[SerializedPerson]],]: + ) -> Tuple[ + Union[QuerySet[Person], QuerySet[Group]], + Union[List[SerializedGroup], List[SerializedPerson]], + ]: actors: Union[QuerySet[Person], QuerySet[Group]] serialized_actors: Union[List[SerializedGroup], List[SerializedPerson]] diff --git a/posthog/queries/person_query.py b/posthog/queries/person_query.py index 73a779e5aca6a..cffcce890c80b 100644 --- a/posthog/queries/person_query.py +++ b/posthog/queries/person_query.py @@ -341,7 +341,10 @@ def _get_search_clauses(self, prepend: str = "") -> Tuple[str, str, Dict]: ) finalization_sql = f"AND ({finalization_conditions_sql} OR {id_conditions_sql})" - (prefiltering_conditions_sql, prefiltering_params,) = parse_prop_grouped_clauses( + ( + prefiltering_conditions_sql, + prefiltering_params, + ) = parse_prop_grouped_clauses( team_id=self._team_id, property_group=prop_group, prepend=f"search_pre_{prepend}", diff --git a/posthog/session_recordings/queries/test/test_session_recording_list_from_session_replay.py b/posthog/session_recordings/queries/test/test_session_recording_list_from_session_replay.py index f70f86fdba3cf..b3bc8bf1c03f8 100644 --- a/posthog/session_recordings/queries/test/test_session_recording_list_from_session_replay.py +++ b/posthog/session_recordings/queries/test/test_session_recording_list_from_session_replay.py @@ -2077,7 +2077,10 @@ def test_any_event_filter_with_properties(self): session_recording_list_instance = SessionRecordingListFromReplaySummary(filter=filter, team=self.team) (session_recordings, _) = session_recording_list_instance.run() - assert sorted([sr["session_id"] for sr in session_recordings], key=lambda x: x[0],) == [ + assert sorted( + [sr["session_id"] for sr in session_recordings], + key=lambda x: x[0], + ) == [ my_custom_event_session_id, non_matching__event_session_id, page_view_session_id, @@ -2108,7 +2111,10 @@ def test_any_event_filter_with_properties(self): session_recording_list_instance = SessionRecordingListFromReplaySummary(filter=filter, team=self.team) (session_recordings, _) = session_recording_list_instance.run() - assert sorted([sr["session_id"] for sr in session_recordings], key=lambda x: x[0],) == [ + assert sorted( + [sr["session_id"] for sr in session_recordings], + key=lambda x: x[0], + ) == [ my_custom_event_session_id, page_view_session_id, ] diff --git a/posthog/session_recordings/sql/session_recording_event_sql.py b/posthog/session_recordings/sql/session_recording_event_sql.py index fc52f27fbdae8..7f87898293b21 100644 --- a/posthog/session_recordings/sql/session_recording_event_sql.py +++ b/posthog/session_recordings/sql/session_recording_event_sql.py @@ -107,7 +107,8 @@ extra_fields="", ) -SESSION_RECORDING_EVENTS_TABLE_MV_SQL = lambda: """ +SESSION_RECORDING_EVENTS_TABLE_MV_SQL = ( + lambda: """ CREATE MATERIALIZED VIEW IF NOT EXISTS session_recording_events_mv ON CLUSTER '{cluster}' TO {database}.{target_table} AS SELECT @@ -123,9 +124,10 @@ _offset FROM {database}.kafka_session_recording_events """.format( - target_table="writable_session_recording_events", - cluster=settings.CLICKHOUSE_CLUSTER, - database=settings.CLICKHOUSE_DATABASE, + target_table="writable_session_recording_events", + cluster=settings.CLICKHOUSE_CLUSTER, + database=settings.CLICKHOUSE_DATABASE, + ) ) diff --git a/posthog/session_recordings/sql/session_replay_event_sql.py b/posthog/session_recordings/sql/session_replay_event_sql.py index e7c2576e93f66..9dd346b32f02c 100644 --- a/posthog/session_recordings/sql/session_replay_event_sql.py +++ b/posthog/session_recordings/sql/session_replay_event_sql.py @@ -105,7 +105,8 @@ ) -SESSION_REPLAY_EVENTS_TABLE_MV_SQL = lambda: """ +SESSION_REPLAY_EVENTS_TABLE_MV_SQL = ( + lambda: """ CREATE MATERIALIZED VIEW IF NOT EXISTS session_replay_events_mv ON CLUSTER '{cluster}' TO {database}.{target_table} AS SELECT @@ -139,9 +140,10 @@ FROM {database}.kafka_session_replay_events group by session_id, team_id """.format( - target_table="writable_session_replay_events", - cluster=settings.CLICKHOUSE_CLUSTER, - database=settings.CLICKHOUSE_DATABASE, + target_table="writable_session_replay_events", + cluster=settings.CLICKHOUSE_CLUSTER, + database=settings.CLICKHOUSE_DATABASE, + ) ) diff --git a/posthog/session_recordings/test/test_session_recordings.py b/posthog/session_recordings/test/test_session_recordings.py index 3dca9b46b9fb2..8bc9e92e90315 100644 --- a/posthog/session_recordings/test/test_session_recordings.py +++ b/posthog/session_recordings/test/test_session_recordings.py @@ -186,7 +186,7 @@ def test_console_log_filters_are_correctly_passed_to_listing(self, mock_summary_ self.client.get(f'/api/projects/{self.team.id}/session_recordings?console_logs=["warn", "error"]') assert len(mock_summary_lister.call_args_list) == 1 - filter_passed_to_mock: (SessionRecordingsFilter) = mock_summary_lister.call_args_list[0].kwargs["filter"] + filter_passed_to_mock: SessionRecordingsFilter = mock_summary_lister.call_args_list[0].kwargs["filter"] assert filter_passed_to_mock.console_logs_filter == ["warn", "error"] @snapshot_postgres_queries diff --git a/posthog/settings/base_variables.py b/posthog/settings/base_variables.py index 85831394fc501..fa63b80da1789 100644 --- a/posthog/settings/base_variables.py +++ b/posthog/settings/base_variables.py @@ -11,9 +11,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) DEBUG = get_from_env("DEBUG", False, type_cast=str_to_bool) -TEST = ( - "test" in sys.argv or sys.argv[0].endswith("pytest") or get_from_env("TEST", False, type_cast=str_to_bool) -) # type: bool +TEST = "test" in sys.argv or sys.argv[0].endswith("pytest") or get_from_env("TEST", False, type_cast=str_to_bool) # type: bool DEMO = get_from_env("DEMO", False, type_cast=str_to_bool) # Whether this is a managed demo environment REGION = get_from_env("REGION", "US") # Whether this is a Cloud US or Cloud EU instance SELF_CAPTURE = get_from_env("SELF_CAPTURE", DEBUG and not DEMO, type_cast=str_to_bool) diff --git a/posthog/tasks/check_clickhouse_schema_drift.py b/posthog/tasks/check_clickhouse_schema_drift.py index bea00530b7eba..e1cdd905854b1 100644 --- a/posthog/tasks/check_clickhouse_schema_drift.py +++ b/posthog/tasks/check_clickhouse_schema_drift.py @@ -28,9 +28,7 @@ def get_clickhouse_schema() -> List[Tuple[str, str, str]]: database == '{database}' AND table_name NOT LIKE '.inner_id.%' - """.format( - cluster=settings.CLICKHOUSE_CLUSTER, database=settings.CLICKHOUSE_DATABASE - ) + """.format(cluster=settings.CLICKHOUSE_CLUSTER, database=settings.CLICKHOUSE_DATABASE) ) @@ -47,9 +45,7 @@ def get_clickhouse_nodes() -> List[Tuple[str]]: WHERE cluster == '{cluster}' - """.format( - cluster=settings.CLICKHOUSE_CLUSTER - ) + """.format(cluster=settings.CLICKHOUSE_CLUSTER) ) diff --git a/posthog/tasks/exporter.py b/posthog/tasks/exporter.py index ed41d9d5412d0..69f968f207cea 100644 --- a/posthog/tasks/exporter.py +++ b/posthog/tasks/exporter.py @@ -47,7 +47,7 @@ def export_asset(exported_asset_id: int, limit: Optional[int] = None) -> None: # if Celery is lagging then you can end up with an exported asset that has had a TTL added # and that TTL has passed, in the exporter we don't care about that. # the TTL is for later cleanup. - exported_asset: (ExportedAsset) = ExportedAsset.objects_including_ttl_deleted.select_related( + exported_asset: ExportedAsset = ExportedAsset.objects_including_ttl_deleted.select_related( "insight", "dashboard" ).get(pk=exported_asset_id) diff --git a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py index f28be3815d846..d939495a9abe9 100644 --- a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py @@ -388,7 +388,7 @@ async def test_bigquery_export_workflow( ) with freeze_time(TEST_TIME) as frozen_time: - async with await (WorkflowEnvironment.start_time_skipping()) as activity_environment: + async with await WorkflowEnvironment.start_time_skipping() as activity_environment: async with Worker( activity_environment.client, task_queue=settings.TEMPORAL_TASK_QUEUE, diff --git a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py index 3487c612808f3..ae112af3529a6 100644 --- a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py @@ -601,7 +601,7 @@ async def create_s3_client(*args, **kwargs): """Mock function to return an already initialized S3 client.""" yield s3_client - async with await (WorkflowEnvironment.start_time_skipping()) as activity_environment: + async with await WorkflowEnvironment.start_time_skipping() as activity_environment: async with Worker( activity_environment.client, task_queue=settings.TEMPORAL_TASK_QUEUE, diff --git a/posthog/temporal/workflows/batch_exports.py b/posthog/temporal/workflows/batch_exports.py index bf375ada75ce7..e26d8901900b9 100644 --- a/posthog/temporal/workflows/batch_exports.py +++ b/posthog/temporal/workflows/batch_exports.py @@ -702,6 +702,4 @@ class UpdateBatchExportBackfillStatusInputs: @activity.defn async def update_batch_export_backfill_model_status(inputs: UpdateBatchExportBackfillStatusInputs): """Activity that updates the status of an BatchExportRun.""" - await sync_to_async(update_batch_export_backfill_status)( - backfill_id=uuid.UUID(inputs.id), status=inputs.status - ) # type: ignore + await sync_to_async(update_batch_export_backfill_status)(backfill_id=uuid.UUID(inputs.id), status=inputs.status) # type: ignore From 89a5ecad6056d2f184fb6ce56b4be8ccefcd0ff7 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Oct 2023 11:09:12 +0000 Subject: [PATCH 04/10] Update query snapshots --- .../__snapshots__/test_dashboard.ambr | 212 +++++++++--------- 1 file changed, 106 insertions(+), 106 deletions(-) diff --git a/posthog/api/test/dashboards/__snapshots__/test_dashboard.ambr b/posthog/api/test/dashboards/__snapshots__/test_dashboard.ambr index b6b14a9dfbd34..dd135d1aafb4d 100644 --- a/posthog/api/test/dashboards/__snapshots__/test_dashboard.ambr +++ b/posthog/api/test/dashboards/__snapshots__/test_dashboard.ambr @@ -6439,6 +6439,17 @@ ' --- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.251 + ' + SELECT "posthog_instancesetting"."id", + "posthog_instancesetting"."key", + "posthog_instancesetting"."raw_value" + FROM "posthog_instancesetting" + WHERE "posthog_instancesetting"."key" = 'constance:posthog:RATE_LIMIT_ENABLED' + ORDER BY "posthog_instancesetting"."id" ASC + LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ + ' +--- +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.252 ' SELECT "posthog_organization"."id", "posthog_organization"."name", @@ -6462,7 +6473,7 @@ LIMIT 21 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.252 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.253 ' SELECT "posthog_dashboard"."id", "posthog_dashboard"."name", @@ -6578,7 +6589,7 @@ LIMIT 21 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.253 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.254 ' SELECT "posthog_taggeditem"."id", "posthog_taggeditem"."tag_id", @@ -6600,7 +6611,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.254 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.255 ' SELECT "posthog_sharingconfiguration"."id", "posthog_sharingconfiguration"."team_id", @@ -6618,7 +6629,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.255 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.256 ' SELECT "posthog_dashboardtile"."id", "posthog_dashboardtile"."dashboard_id", @@ -6783,7 +6794,7 @@ ORDER BY "posthog_dashboarditem"."order" ASC /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.256 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.257 ' SELECT "posthog_insightcachingstate"."id", "posthog_insightcachingstate"."team_id", @@ -6804,7 +6815,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.257 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.258 ' SELECT ("posthog_dashboardtile"."insight_id") AS "_prefetch_related_val_insight_id", "posthog_dashboard"."id", @@ -6907,7 +6918,7 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.258 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.259 ' SELECT "posthog_dashboardtile"."id", "posthog_dashboardtile"."dashboard_id", @@ -6932,32 +6943,6 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.259 - ' - SELECT "posthog_dashboard"."id", - "posthog_dashboard"."name", - "posthog_dashboard"."description", - "posthog_dashboard"."team_id", - "posthog_dashboard"."pinned", - "posthog_dashboard"."created_at", - "posthog_dashboard"."created_by_id", - "posthog_dashboard"."deleted", - "posthog_dashboard"."last_accessed_at", - "posthog_dashboard"."filters", - "posthog_dashboard"."creation_mode", - "posthog_dashboard"."restriction_level", - "posthog_dashboard"."deprecated_tags", - "posthog_dashboard"."tags", - "posthog_dashboard"."share_token", - "posthog_dashboard"."is_shared" - FROM "posthog_dashboard" - WHERE "posthog_dashboard"."id" IN (1, - 2, - 3, - 4, - 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ - ' ---- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.26 ' SELECT "posthog_team"."id", @@ -7007,6 +6992,32 @@ ' --- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.260 + ' + SELECT "posthog_dashboard"."id", + "posthog_dashboard"."name", + "posthog_dashboard"."description", + "posthog_dashboard"."team_id", + "posthog_dashboard"."pinned", + "posthog_dashboard"."created_at", + "posthog_dashboard"."created_by_id", + "posthog_dashboard"."deleted", + "posthog_dashboard"."last_accessed_at", + "posthog_dashboard"."filters", + "posthog_dashboard"."creation_mode", + "posthog_dashboard"."restriction_level", + "posthog_dashboard"."deprecated_tags", + "posthog_dashboard"."tags", + "posthog_dashboard"."share_token", + "posthog_dashboard"."is_shared" + FROM "posthog_dashboard" + WHERE "posthog_dashboard"."id" IN (1, + 2, + 3, + 4, + 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ + ' +--- +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.261 ' SELECT "posthog_dashboardtile"."id", "posthog_dashboardtile"."dashboard_id", @@ -7169,7 +7180,7 @@ ORDER BY "posthog_dashboarditem"."order" ASC /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.261 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.262 ' SELECT "posthog_insightcachingstate"."id", "posthog_insightcachingstate"."team_id", @@ -7190,7 +7201,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.262 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.263 ' SELECT ("posthog_dashboardtile"."insight_id") AS "_prefetch_related_val_insight_id", "posthog_dashboard"."id", @@ -7293,7 +7304,7 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.263 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.264 ' SELECT "posthog_dashboardtile"."id", "posthog_dashboardtile"."dashboard_id", @@ -7318,7 +7329,7 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.264 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.265 ' SELECT "posthog_dashboard"."id", "posthog_dashboard"."name", @@ -7344,7 +7355,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.265 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.266 ' SELECT "posthog_taggeditem"."id", "posthog_taggeditem"."tag_id", @@ -7366,24 +7377,13 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.266 - ' - SELECT "posthog_instancesetting"."id", - "posthog_instancesetting"."key", - "posthog_instancesetting"."raw_value" - FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' - ORDER BY "posthog_instancesetting"."id" ASC - LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ - ' ---- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.267 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7394,7 +7394,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7405,7 +7405,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7446,7 +7446,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7457,7 +7457,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7468,7 +7468,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7479,7 +7479,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7490,7 +7490,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7501,7 +7501,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7512,7 +7512,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7523,12 +7523,23 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.278 + ' + SELECT "posthog_instancesetting"."id", + "posthog_instancesetting"."key", + "posthog_instancesetting"."raw_value" + FROM "posthog_instancesetting" + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + ORDER BY "posthog_instancesetting"."id" ASC + LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ + ' +--- +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.279 ' SELECT "posthog_dashboard"."id", "posthog_dashboard"."name", @@ -7555,17 +7566,6 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.279 - ' - SELECT "posthog_instancesetting"."id", - "posthog_instancesetting"."key", - "posthog_instancesetting"."raw_value" - FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' - ORDER BY "posthog_instancesetting"."id" ASC - LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ - ' ---- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.28 ' SELECT "posthog_dashboard"."id", @@ -7596,7 +7596,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7607,7 +7607,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7618,7 +7618,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7629,7 +7629,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7640,7 +7640,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7651,7 +7651,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7662,7 +7662,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7673,7 +7673,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7684,7 +7684,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7695,7 +7695,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7730,7 +7730,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7741,7 +7741,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7752,7 +7752,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7763,7 +7763,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7774,7 +7774,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7785,7 +7785,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7796,7 +7796,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7807,7 +7807,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7818,7 +7818,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7829,7 +7829,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7899,7 +7899,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7910,7 +7910,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7921,7 +7921,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7932,7 +7932,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7943,7 +7943,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7954,7 +7954,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7965,7 +7965,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7976,7 +7976,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7987,7 +7987,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7998,7 +7998,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8044,7 +8044,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8055,7 +8055,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8066,7 +8066,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8077,7 +8077,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8088,7 +8088,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' From a9e278660c7524d347ea90e39080cba03bd16fba Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Thu, 26 Oct 2023 12:04:51 +0100 Subject: [PATCH 05/10] Run 'ruff format .' --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b3a12706b930d..71d7c3e83b535 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "build:esbuild": "node frontend/build.mjs", "schema:build": "pnpm run schema:build:json && pnpm run schema:build:python", "schema:build:json": "ts-json-schema-generator -f tsconfig.json --path 'frontend/src/queries/schema.ts' --no-type-check > frontend/src/queries/schema.json && prettier --write frontend/src/queries/schema.json", - "schema:build:python": "datamodel-codegen --class-name='SchemaRoot' --collapse-root-models --disable-timestamp --use-one-literal-as-default --use-default-kwarg --use-subclass-enum --input frontend/src/queries/schema.json --input-file-type jsonschema --output posthog/schema.py --output-model-type pydantic_v2.BaseModel && black posthog/schema.py", + "schema:build:python": "datamodel-codegen --class-name='SchemaRoot' --collapse-root-models --disable-timestamp --use-one-literal-as-default --use-default-kwarg --use-subclass-enum --input frontend/src/queries/schema.json --input-file-type jsonschema --output posthog/schema.py --output-model-type pydantic_v2.BaseModel && ruff format posthog/schema.py", "grammar:build": "npm run grammar:build:python && npm run grammar:build:cpp", "grammar:build:python": "cd posthog/hogql/grammar && antlr -Dlanguage=Python3 HogQLLexer.g4 && antlr -visitor -no-listener -Dlanguage=Python3 HogQLParser.g4", "grammar:build:cpp": "cd posthog/hogql/grammar && antlr -o ../../../hogql_parser -Dlanguage=Cpp HogQLLexer.g4 && antlr -o ../../../hogql_parser -visitor -no-listener -Dlanguage=Cpp HogQLParser.g4", @@ -302,8 +302,8 @@ "pnpm --dir plugin-server exec prettier --write" ], "!(posthog/hogql/grammar/*)*.{py,pyi}": [ - "black", - "ruff" + "ruff format", + "ruff check" ] }, "browserslist": { From 801c32cbb2690edd63b356da3eb38098a7c70a83 Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Thu, 26 Oct 2023 12:26:52 +0100 Subject: [PATCH 06/10] Fix format after commit hook --- posthog/hogql/grammar/HogQLLexer.py | 20383 +++++++++++++++++- posthog/hogql/grammar/HogQLParser.py | 13076 +++++++++-- posthog/hogql/grammar/HogQLParserVisitor.py | 322 +- 3 files changed, 30461 insertions(+), 3320 deletions(-) diff --git a/posthog/hogql/grammar/HogQLLexer.py b/posthog/hogql/grammar/HogQLLexer.py index acbadf74fdc53..a60b9015e86ad 100644 --- a/posthog/hogql/grammar/HogQLLexer.py +++ b/posthog/hogql/grammar/HogQLLexer.py @@ -2,6 +2,7 @@ from antlr4 import * from io import StringIO import sys + if sys.version_info[1] > 5: from typing import TextIO else: @@ -10,901 +11,18843 @@ def serializedATN(): return [ - 4,0,242,2222,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7, - 5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12, - 2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19, - 7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25, - 2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32, - 7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38, - 2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45, - 7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51, - 2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58, - 7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64, - 2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71, - 7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77, - 2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84, - 7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90, - 2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97, - 7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103, - 7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108, - 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114, - 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119, - 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125, - 7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130, - 2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136, - 7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141, - 2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147, - 7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152, - 2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, - 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163, - 2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169, - 7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174, - 2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180, - 7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185, - 2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191, - 7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196, - 2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202, - 7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207, - 2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213, - 7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218, - 2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224, - 7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229, - 2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, - 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240, - 2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246, - 7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251, - 2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257, - 7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262, - 2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268, - 7,268,2,269,7,269,2,270,7,270,2,271,7,271,1,0,1,0,1,0,1,0,1,1,1, - 1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,4,1, - 4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1, - 7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1, - 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,608,8,10,1, - 11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1, - 13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1, - 15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1, - 18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1, - 20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1, - 22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1, - 24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1, - 26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1, - 28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1, - 29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1, - 31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1, - 33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1, - 34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1, - 37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1, - 38,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1, - 40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,42,1, - 42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1, - 43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1, - 45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1, - 46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1, - 47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1, - 49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1, - 50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,53,1, - 53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1, - 56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1, - 58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1, - 59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1, - 61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1, - 63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1, - 65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1, - 67,1,67,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1, - 69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1, - 72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1, - 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1, - 75,1,76,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1, - 79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1, - 81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,3,81,1113,8,81,1,82,1, - 82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1, - 83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1, - 85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1, - 88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1, - 89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1, - 91,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1, - 94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1, - 96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1, - 97,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100, - 1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,102, - 1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102, - 1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, - 1,103,1,103,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105, - 1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107, - 1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109, - 1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,111,1,111, - 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112, - 1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115, - 1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117, - 1,117,1,117,1,117,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119, - 1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,121,1,121,1,121,1,121, - 1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123, - 1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,125, - 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126, - 1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127, - 1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128, - 1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129, - 1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, - 1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132, - 1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133, - 1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135, - 1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136, - 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138, - 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139, - 1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141, - 1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143, - 1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144, - 1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146, - 1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148, - 1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150, - 1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,152, - 1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,154, - 1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155, - 1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,157, - 1,157,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158, - 1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160, - 1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161, - 1,161,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165, - 1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,167, - 1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,169, - 1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170, - 1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, - 1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,174,1,174, - 1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,175,1,175,1,175, - 1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,177, - 1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,178,1,179,1,179, - 1,179,1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,181, - 1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,182,1,182, - 1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184, - 1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,186, - 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188, - 1,188,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189, - 3,189,1827,8,189,1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191, - 1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, - 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, - 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, - 3,192,1870,8,192,1,193,1,193,1,193,3,193,1875,8,193,1,193,1,193, - 1,193,1,193,5,193,1881,8,193,10,193,12,193,1884,9,193,1,193,1,193, - 1,193,1,193,1,193,1,193,5,193,1892,8,193,10,193,12,193,1895,9,193, - 1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,5,193,1905,8,193, - 10,193,12,193,1908,9,193,1,193,1,193,3,193,1912,8,193,1,194,1,194, - 1,194,5,194,1917,8,194,10,194,12,194,1920,9,194,1,194,1,194,3,194, - 1924,8,194,1,194,1,194,3,194,1928,8,194,1,194,4,194,1931,8,194,11, - 194,12,194,1932,1,194,1,194,1,194,3,194,1938,8,194,1,194,1,194,3, - 194,1942,8,194,1,194,4,194,1945,8,194,11,194,12,194,1946,1,194,1, - 194,1,194,5,194,1952,8,194,10,194,12,194,1955,9,194,1,194,1,194, - 1,194,3,194,1960,8,194,1,194,4,194,1963,8,194,11,194,12,194,1964, - 1,194,1,194,1,194,1,194,1,194,3,194,1972,8,194,1,194,4,194,1975, - 8,194,11,194,12,194,1976,1,194,1,194,1,194,1,194,3,194,1983,8,194, - 1,194,4,194,1986,8,194,11,194,12,194,1987,3,194,1990,8,194,1,195, - 1,195,4,195,1994,8,195,11,195,12,195,1995,1,196,4,196,1999,8,196, - 11,196,12,196,2000,1,197,1,197,1,197,4,197,2006,8,197,11,197,12, - 197,2007,1,198,1,198,1,198,1,198,1,198,1,198,5,198,2016,8,198,10, - 198,12,198,2019,9,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199, - 1,199,5,199,2029,8,199,10,199,12,199,2032,9,199,1,199,1,199,1,200, - 1,200,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,205,1,205, - 1,206,1,206,1,207,1,207,1,208,1,208,1,209,1,209,1,210,1,210,1,211, - 1,211,1,212,1,212,1,213,1,213,1,214,1,214,1,215,1,215,1,216,1,216, - 1,217,1,217,1,218,1,218,1,219,1,219,1,220,1,220,1,221,1,221,1,222, - 1,222,1,223,1,223,1,224,1,224,1,225,1,225,1,226,1,226,1,227,1,227, - 1,228,1,228,1,229,1,229,1,230,1,230,1,230,1,231,1,231,1,232,1,232, - 1,233,1,233,1,234,1,234,1,235,1,235,1,236,1,236,1,236,1,237,1,237, - 1,238,1,238,1,239,1,239,1,240,1,240,1,240,1,241,1,241,1,242,1,242, - 1,242,1,243,1,243,1,244,1,244,1,245,1,245,1,245,1,246,1,246,1,246, - 1,246,1,247,1,247,1,248,1,248,1,249,1,249,1,250,1,250,1,250,1,251, - 1,251,1,252,1,252,1,252,1,252,3,252,2152,8,252,1,253,1,253,1,253, - 1,253,1,254,1,254,1,254,1,255,1,255,1,255,1,256,1,256,1,257,1,257, - 1,258,1,258,1,259,1,259,1,260,1,260,1,261,1,261,1,262,1,262,1,262, - 1,263,1,263,1,264,1,264,1,265,1,265,1,266,1,266,1,267,1,267,1,268, - 1,268,1,269,1,269,1,269,1,269,5,269,2195,8,269,10,269,12,269,2198, - 9,269,1,269,1,269,1,269,1,269,1,269,1,270,1,270,1,270,1,270,5,270, - 2209,8,270,10,270,12,270,2212,9,270,1,270,3,270,2215,8,270,1,270, - 1,270,1,271,1,271,1,271,1,271,1,2196,0,272,1,1,3,2,5,3,7,4,9,5,11, - 6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17, - 35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28, - 57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39, - 79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50, - 101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119, - 60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69, - 139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157, - 79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88, - 177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195, - 98,197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106, - 213,107,215,108,217,109,219,110,221,111,223,112,225,113,227,114, - 229,115,231,116,233,117,235,118,237,119,239,120,241,121,243,122, - 245,123,247,124,249,125,251,126,253,127,255,128,257,129,259,130, - 261,131,263,132,265,133,267,134,269,135,271,136,273,137,275,138, - 277,139,279,140,281,141,283,142,285,143,287,144,289,145,291,146, - 293,147,295,148,297,149,299,150,301,151,303,152,305,153,307,154, - 309,155,311,156,313,157,315,158,317,159,319,160,321,161,323,162, - 325,163,327,164,329,165,331,166,333,167,335,168,337,169,339,170, - 341,171,343,172,345,173,347,174,349,175,351,176,353,177,355,178, - 357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,186, - 373,187,375,188,377,189,379,190,381,191,383,192,385,193,387,194, - 389,195,391,196,393,197,395,198,397,199,399,200,401,0,403,0,405, - 0,407,0,409,0,411,0,413,0,415,0,417,0,419,0,421,0,423,0,425,0,427, - 0,429,0,431,0,433,0,435,0,437,0,439,0,441,0,443,0,445,0,447,0,449, - 0,451,0,453,0,455,0,457,0,459,0,461,201,463,202,465,203,467,204, - 469,205,471,206,473,207,475,208,477,209,479,210,481,211,483,212, - 485,213,487,214,489,215,491,216,493,217,495,218,497,219,499,220, - 501,221,503,222,505,223,507,224,509,225,511,226,513,227,515,228, - 517,229,519,230,521,231,523,232,525,233,527,234,529,235,531,236, - 533,237,535,238,537,239,539,240,541,241,543,242,1,0,37,2,0,92,92, - 96,96,2,0,34,34,92,92,2,0,39,39,92,92,2,0,92,92,125,125,2,0,65,65, - 97,97,2,0,66,66,98,98,2,0,67,67,99,99,2,0,68,68,100,100,2,0,69,69, - 101,101,2,0,70,70,102,102,2,0,71,71,103,103,2,0,72,72,104,104,2, - 0,73,73,105,105,2,0,74,74,106,106,2,0,75,75,107,107,2,0,76,76,108, - 108,2,0,77,77,109,109,2,0,78,78,110,110,2,0,79,79,111,111,2,0,80, - 80,112,112,2,0,81,81,113,113,2,0,82,82,114,114,2,0,83,83,115,115, - 2,0,84,84,116,116,2,0,85,85,117,117,2,0,86,86,118,118,2,0,87,87, - 119,119,2,0,88,88,120,120,2,0,89,89,121,121,2,0,90,90,122,122,2, - 0,65,90,97,122,1,0,48,55,1,0,48,57,3,0,48,57,65,70,97,102,2,0,10, - 10,13,13,2,1,10,10,13,13,2,0,9,13,32,32,2252,0,1,1,0,0,0,0,3,1,0, - 0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0, - 0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0, - 0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0, - 0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0, - 0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0, - 0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0, - 0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0, - 0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0, - 0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0, - 0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0, - 0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113, - 1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0, - 0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1, - 0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0, - 141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0, - 0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159, - 1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0, - 0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1, - 0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0, - 187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0, - 0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205, - 1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0, - 0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1, - 0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0, - 233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0, - 0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251, - 1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0, - 0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1, - 0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0, - 279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0, - 0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297, - 1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0, - 0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1, - 0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0, - 325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0, - 0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343, - 1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0, - 0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1, - 0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0, - 371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0, - 0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389, - 1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0, - 0,399,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0,467,1, - 0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,0, - 477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485,1,0, - 0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0,0,495, - 1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1,0,0,0, - 0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0,513,1, - 0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0,0,0,0, - 523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531,1,0, - 0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0,0,541, - 1,0,0,0,0,543,1,0,0,0,1,545,1,0,0,0,3,549,1,0,0,0,5,555,1,0,0,0, - 7,561,1,0,0,0,9,565,1,0,0,0,11,571,1,0,0,0,13,575,1,0,0,0,15,580, - 1,0,0,0,17,584,1,0,0,0,19,590,1,0,0,0,21,607,1,0,0,0,23,609,1,0, - 0,0,25,614,1,0,0,0,27,618,1,0,0,0,29,624,1,0,0,0,31,631,1,0,0,0, - 33,639,1,0,0,0,35,644,1,0,0,0,37,647,1,0,0,0,39,652,1,0,0,0,41,657, - 1,0,0,0,43,663,1,0,0,0,45,669,1,0,0,0,47,677,1,0,0,0,49,683,1,0, - 0,0,51,690,1,0,0,0,53,698,1,0,0,0,55,705,1,0,0,0,57,713,1,0,0,0, - 59,724,1,0,0,0,61,731,1,0,0,0,63,737,1,0,0,0,65,742,1,0,0,0,67,750, - 1,0,0,0,69,759,1,0,0,0,71,769,1,0,0,0,73,774,1,0,0,0,75,778,1,0, - 0,0,77,790,1,0,0,0,79,798,1,0,0,0,81,804,1,0,0,0,83,811,1,0,0,0, - 85,816,1,0,0,0,87,827,1,0,0,0,89,836,1,0,0,0,91,843,1,0,0,0,93,856, - 1,0,0,0,95,867,1,0,0,0,97,872,1,0,0,0,99,881,1,0,0,0,101,893,1,0, - 0,0,103,898,1,0,0,0,105,903,1,0,0,0,107,907,1,0,0,0,109,914,1,0, - 0,0,111,921,1,0,0,0,113,928,1,0,0,0,115,936,1,0,0,0,117,947,1,0, - 0,0,119,955,1,0,0,0,121,963,1,0,0,0,123,969,1,0,0,0,125,975,1,0, - 0,0,127,981,1,0,0,0,129,991,1,0,0,0,131,995,1,0,0,0,133,1002,1,0, - 0,0,135,1009,1,0,0,0,137,1014,1,0,0,0,139,1019,1,0,0,0,141,1028, - 1,0,0,0,143,1035,1,0,0,0,145,1047,1,0,0,0,147,1053,1,0,0,0,149,1060, - 1,0,0,0,151,1073,1,0,0,0,153,1078,1,0,0,0,155,1081,1,0,0,0,157,1084, - 1,0,0,0,159,1090,1,0,0,0,161,1093,1,0,0,0,163,1112,1,0,0,0,165,1114, - 1,0,0,0,167,1124,1,0,0,0,169,1130,1,0,0,0,171,1137,1,0,0,0,173,1146, - 1,0,0,0,175,1151,1,0,0,0,177,1154,1,0,0,0,179,1167,1,0,0,0,181,1172, - 1,0,0,0,183,1176,1,0,0,0,185,1181,1,0,0,0,187,1186,1,0,0,0,189,1193, - 1,0,0,0,191,1201,1,0,0,0,193,1206,1,0,0,0,195,1215,1,0,0,0,197,1220, - 1,0,0,0,199,1226,1,0,0,0,201,1231,1,0,0,0,203,1237,1,0,0,0,205,1242, - 1,0,0,0,207,1254,1,0,0,0,209,1267,1,0,0,0,211,1271,1,0,0,0,213,1278, - 1,0,0,0,215,1282,1,0,0,0,217,1289,1,0,0,0,219,1296,1,0,0,0,221,1302, - 1,0,0,0,223,1307,1,0,0,0,225,1316,1,0,0,0,227,1320,1,0,0,0,229,1323, - 1,0,0,0,231,1327,1,0,0,0,233,1332,1,0,0,0,235,1338,1,0,0,0,237,1345, - 1,0,0,0,239,1348,1,0,0,0,241,1357,1,0,0,0,243,1360,1,0,0,0,245,1366, - 1,0,0,0,247,1372,1,0,0,0,249,1380,1,0,0,0,251,1385,1,0,0,0,253,1395, - 1,0,0,0,255,1404,1,0,0,0,257,1414,1,0,0,0,259,1423,1,0,0,0,261,1431, - 1,0,0,0,263,1442,1,0,0,0,265,1450,1,0,0,0,267,1456,1,0,0,0,269,1463, - 1,0,0,0,271,1470,1,0,0,0,273,1477,1,0,0,0,275,1485,1,0,0,0,277,1493, - 1,0,0,0,279,1504,1,0,0,0,281,1510,1,0,0,0,283,1517,1,0,0,0,285,1521, - 1,0,0,0,287,1526,1,0,0,0,289,1533,1,0,0,0,291,1540,1,0,0,0,293,1547, - 1,0,0,0,295,1552,1,0,0,0,297,1558,1,0,0,0,299,1562,1,0,0,0,301,1571, - 1,0,0,0,303,1576,1,0,0,0,305,1583,1,0,0,0,307,1589,1,0,0,0,309,1594, - 1,0,0,0,311,1604,1,0,0,0,313,1609,1,0,0,0,315,1616,1,0,0,0,317,1623, - 1,0,0,0,319,1629,1,0,0,0,321,1636,1,0,0,0,323,1646,1,0,0,0,325,1651, - 1,0,0,0,327,1656,1,0,0,0,329,1661,1,0,0,0,331,1669,1,0,0,0,333,1679, - 1,0,0,0,335,1682,1,0,0,0,337,1686,1,0,0,0,339,1693,1,0,0,0,341,1702, - 1,0,0,0,343,1707,1,0,0,0,345,1716,1,0,0,0,347,1720,1,0,0,0,349,1725, - 1,0,0,0,351,1735,1,0,0,0,353,1741,1,0,0,0,355,1748,1,0,0,0,357,1752, - 1,0,0,0,359,1758,1,0,0,0,361,1763,1,0,0,0,363,1770,1,0,0,0,365,1775, - 1,0,0,0,367,1782,1,0,0,0,369,1788,1,0,0,0,371,1793,1,0,0,0,373,1798, - 1,0,0,0,375,1804,1,0,0,0,377,1811,1,0,0,0,379,1826,1,0,0,0,381,1828, - 1,0,0,0,383,1834,1,0,0,0,385,1869,1,0,0,0,387,1911,1,0,0,0,389,1989, - 1,0,0,0,391,1991,1,0,0,0,393,1998,1,0,0,0,395,2002,1,0,0,0,397,2009, - 1,0,0,0,399,2022,1,0,0,0,401,2035,1,0,0,0,403,2037,1,0,0,0,405,2039, - 1,0,0,0,407,2041,1,0,0,0,409,2043,1,0,0,0,411,2045,1,0,0,0,413,2047, - 1,0,0,0,415,2049,1,0,0,0,417,2051,1,0,0,0,419,2053,1,0,0,0,421,2055, - 1,0,0,0,423,2057,1,0,0,0,425,2059,1,0,0,0,427,2061,1,0,0,0,429,2063, - 1,0,0,0,431,2065,1,0,0,0,433,2067,1,0,0,0,435,2069,1,0,0,0,437,2071, - 1,0,0,0,439,2073,1,0,0,0,441,2075,1,0,0,0,443,2077,1,0,0,0,445,2079, - 1,0,0,0,447,2081,1,0,0,0,449,2083,1,0,0,0,451,2085,1,0,0,0,453,2087, - 1,0,0,0,455,2089,1,0,0,0,457,2091,1,0,0,0,459,2093,1,0,0,0,461,2095, - 1,0,0,0,463,2098,1,0,0,0,465,2100,1,0,0,0,467,2102,1,0,0,0,469,2104, - 1,0,0,0,471,2106,1,0,0,0,473,2108,1,0,0,0,475,2111,1,0,0,0,477,2113, - 1,0,0,0,479,2115,1,0,0,0,481,2117,1,0,0,0,483,2120,1,0,0,0,485,2122, - 1,0,0,0,487,2125,1,0,0,0,489,2127,1,0,0,0,491,2129,1,0,0,0,493,2132, - 1,0,0,0,495,2136,1,0,0,0,497,2138,1,0,0,0,499,2140,1,0,0,0,501,2142, - 1,0,0,0,503,2145,1,0,0,0,505,2151,1,0,0,0,507,2153,1,0,0,0,509,2157, - 1,0,0,0,511,2160,1,0,0,0,513,2163,1,0,0,0,515,2165,1,0,0,0,517,2167, - 1,0,0,0,519,2169,1,0,0,0,521,2171,1,0,0,0,523,2173,1,0,0,0,525,2175, - 1,0,0,0,527,2178,1,0,0,0,529,2180,1,0,0,0,531,2182,1,0,0,0,533,2184, - 1,0,0,0,535,2186,1,0,0,0,537,2188,1,0,0,0,539,2190,1,0,0,0,541,2204, - 1,0,0,0,543,2218,1,0,0,0,545,546,3,401,200,0,546,547,3,407,203,0, - 547,548,3,407,203,0,548,2,1,0,0,0,549,550,3,401,200,0,550,551,3, - 411,205,0,551,552,3,439,219,0,552,553,3,409,204,0,553,554,3,435, - 217,0,554,4,1,0,0,0,555,556,3,401,200,0,556,557,3,423,211,0,557, - 558,3,417,208,0,558,559,3,401,200,0,559,560,3,437,218,0,560,6,1, - 0,0,0,561,562,3,401,200,0,562,563,3,423,211,0,563,564,3,423,211, - 0,564,8,1,0,0,0,565,566,3,401,200,0,566,567,3,423,211,0,567,568, - 3,439,219,0,568,569,3,409,204,0,569,570,3,435,217,0,570,10,1,0,0, - 0,571,572,3,401,200,0,572,573,3,427,213,0,573,574,3,407,203,0,574, - 12,1,0,0,0,575,576,3,401,200,0,576,577,3,427,213,0,577,578,3,439, - 219,0,578,579,3,417,208,0,579,14,1,0,0,0,580,581,3,401,200,0,581, - 582,3,427,213,0,582,583,3,449,224,0,583,16,1,0,0,0,584,585,3,401, - 200,0,585,586,3,435,217,0,586,587,3,435,217,0,587,588,3,401,200, - 0,588,589,3,449,224,0,589,18,1,0,0,0,590,591,3,401,200,0,591,592, - 3,437,218,0,592,20,1,0,0,0,593,594,3,401,200,0,594,595,3,437,218, - 0,595,596,3,405,202,0,596,608,1,0,0,0,597,598,3,401,200,0,598,599, - 3,437,218,0,599,600,3,405,202,0,600,601,3,409,204,0,601,602,3,427, - 213,0,602,603,3,407,203,0,603,604,3,417,208,0,604,605,3,427,213, - 0,605,606,3,413,206,0,606,608,1,0,0,0,607,593,1,0,0,0,607,597,1, - 0,0,0,608,22,1,0,0,0,609,610,3,401,200,0,610,611,3,437,218,0,611, - 612,3,429,214,0,612,613,3,411,205,0,613,24,1,0,0,0,614,615,3,401, - 200,0,615,616,3,437,218,0,616,617,3,439,219,0,617,26,1,0,0,0,618, - 619,3,401,200,0,619,620,3,437,218,0,620,621,3,449,224,0,621,622, - 3,427,213,0,622,623,3,405,202,0,623,28,1,0,0,0,624,625,3,401,200, - 0,625,626,3,439,219,0,626,627,3,439,219,0,627,628,3,401,200,0,628, - 629,3,405,202,0,629,630,3,415,207,0,630,30,1,0,0,0,631,632,3,403, - 201,0,632,633,3,409,204,0,633,634,3,439,219,0,634,635,3,445,222, - 0,635,636,3,409,204,0,636,637,3,409,204,0,637,638,3,427,213,0,638, - 32,1,0,0,0,639,640,3,403,201,0,640,641,3,429,214,0,641,642,3,439, - 219,0,642,643,3,415,207,0,643,34,1,0,0,0,644,645,3,403,201,0,645, - 646,3,449,224,0,646,36,1,0,0,0,647,648,3,405,202,0,648,649,3,401, - 200,0,649,650,3,437,218,0,650,651,3,409,204,0,651,38,1,0,0,0,652, - 653,3,405,202,0,653,654,3,401,200,0,654,655,3,437,218,0,655,656, - 3,439,219,0,656,40,1,0,0,0,657,658,3,405,202,0,658,659,3,415,207, - 0,659,660,3,409,204,0,660,661,3,405,202,0,661,662,3,421,210,0,662, - 42,1,0,0,0,663,664,3,405,202,0,664,665,3,423,211,0,665,666,3,409, - 204,0,666,667,3,401,200,0,667,668,3,435,217,0,668,44,1,0,0,0,669, - 670,3,405,202,0,670,671,3,423,211,0,671,672,3,441,220,0,672,673, - 3,437,218,0,673,674,3,439,219,0,674,675,3,409,204,0,675,676,3,435, - 217,0,676,46,1,0,0,0,677,678,3,405,202,0,678,679,3,429,214,0,679, - 680,3,407,203,0,680,681,3,409,204,0,681,682,3,405,202,0,682,48,1, - 0,0,0,683,684,3,405,202,0,684,685,3,429,214,0,685,686,3,415,207, - 0,686,687,3,429,214,0,687,688,3,435,217,0,688,689,3,439,219,0,689, - 50,1,0,0,0,690,691,3,405,202,0,691,692,3,429,214,0,692,693,3,423, - 211,0,693,694,3,423,211,0,694,695,3,401,200,0,695,696,3,439,219, - 0,696,697,3,409,204,0,697,52,1,0,0,0,698,699,3,405,202,0,699,700, - 3,429,214,0,700,701,3,423,211,0,701,702,3,441,220,0,702,703,3,425, - 212,0,703,704,3,427,213,0,704,54,1,0,0,0,705,706,3,405,202,0,706, - 707,3,429,214,0,707,708,3,425,212,0,708,709,3,425,212,0,709,710, - 3,409,204,0,710,711,3,427,213,0,711,712,3,439,219,0,712,56,1,0,0, - 0,713,714,3,405,202,0,714,715,3,429,214,0,715,716,3,427,213,0,716, - 717,3,437,218,0,717,718,3,439,219,0,718,719,3,435,217,0,719,720, - 3,401,200,0,720,721,3,417,208,0,721,722,3,427,213,0,722,723,3,439, - 219,0,723,58,1,0,0,0,724,725,3,405,202,0,725,726,3,435,217,0,726, - 727,3,409,204,0,727,728,3,401,200,0,728,729,3,439,219,0,729,730, - 3,409,204,0,730,60,1,0,0,0,731,732,3,405,202,0,732,733,3,435,217, - 0,733,734,3,429,214,0,734,735,3,437,218,0,735,736,3,437,218,0,736, - 62,1,0,0,0,737,738,3,405,202,0,738,739,3,441,220,0,739,740,3,403, - 201,0,740,741,3,409,204,0,741,64,1,0,0,0,742,743,3,405,202,0,743, - 744,3,441,220,0,744,745,3,435,217,0,745,746,3,435,217,0,746,747, - 3,409,204,0,747,748,3,427,213,0,748,749,3,439,219,0,749,66,1,0,0, - 0,750,751,3,407,203,0,751,752,3,401,200,0,752,753,3,439,219,0,753, - 754,3,401,200,0,754,755,3,403,201,0,755,756,3,401,200,0,756,757, - 3,437,218,0,757,758,3,409,204,0,758,68,1,0,0,0,759,760,3,407,203, - 0,760,761,3,401,200,0,761,762,3,439,219,0,762,763,3,401,200,0,763, - 764,3,403,201,0,764,765,3,401,200,0,765,766,3,437,218,0,766,767, - 3,409,204,0,767,768,3,437,218,0,768,70,1,0,0,0,769,770,3,407,203, - 0,770,771,3,401,200,0,771,772,3,439,219,0,772,773,3,409,204,0,773, - 72,1,0,0,0,774,775,3,407,203,0,775,776,3,401,200,0,776,777,3,449, - 224,0,777,74,1,0,0,0,778,779,3,407,203,0,779,780,3,409,204,0,780, - 781,3,407,203,0,781,782,3,441,220,0,782,783,3,431,215,0,783,784, - 3,423,211,0,784,785,3,417,208,0,785,786,3,405,202,0,786,787,3,401, - 200,0,787,788,3,439,219,0,788,789,3,409,204,0,789,76,1,0,0,0,790, - 791,3,407,203,0,791,792,3,409,204,0,792,793,3,411,205,0,793,794, - 3,401,200,0,794,795,3,441,220,0,795,796,3,423,211,0,796,797,3,439, - 219,0,797,78,1,0,0,0,798,799,3,407,203,0,799,800,3,409,204,0,800, - 801,3,423,211,0,801,802,3,401,200,0,802,803,3,449,224,0,803,80,1, - 0,0,0,804,805,3,407,203,0,805,806,3,409,204,0,806,807,3,423,211, - 0,807,808,3,409,204,0,808,809,3,439,219,0,809,810,3,409,204,0,810, - 82,1,0,0,0,811,812,3,407,203,0,812,813,3,409,204,0,813,814,3,437, - 218,0,814,815,3,405,202,0,815,84,1,0,0,0,816,817,3,407,203,0,817, - 818,3,409,204,0,818,819,3,437,218,0,819,820,3,405,202,0,820,821, - 3,409,204,0,821,822,3,427,213,0,822,823,3,407,203,0,823,824,3,417, - 208,0,824,825,3,427,213,0,825,826,3,413,206,0,826,86,1,0,0,0,827, - 828,3,407,203,0,828,829,3,409,204,0,829,830,3,437,218,0,830,831, - 3,405,202,0,831,832,3,435,217,0,832,833,3,417,208,0,833,834,3,403, - 201,0,834,835,3,409,204,0,835,88,1,0,0,0,836,837,3,407,203,0,837, - 838,3,409,204,0,838,839,3,439,219,0,839,840,3,401,200,0,840,841, - 3,405,202,0,841,842,3,415,207,0,842,90,1,0,0,0,843,844,3,407,203, - 0,844,845,3,417,208,0,845,846,3,405,202,0,846,847,3,439,219,0,847, - 848,3,417,208,0,848,849,3,429,214,0,849,850,3,427,213,0,850,851, - 3,401,200,0,851,852,3,435,217,0,852,853,3,417,208,0,853,854,3,409, - 204,0,854,855,3,437,218,0,855,92,1,0,0,0,856,857,3,407,203,0,857, - 858,3,417,208,0,858,859,3,405,202,0,859,860,3,439,219,0,860,861, - 3,417,208,0,861,862,3,429,214,0,862,863,3,427,213,0,863,864,3,401, - 200,0,864,865,3,435,217,0,865,866,3,449,224,0,866,94,1,0,0,0,867, - 868,3,407,203,0,868,869,3,417,208,0,869,870,3,437,218,0,870,871, - 3,421,210,0,871,96,1,0,0,0,872,873,3,407,203,0,873,874,3,417,208, - 0,874,875,3,437,218,0,875,876,3,439,219,0,876,877,3,417,208,0,877, - 878,3,427,213,0,878,879,3,405,202,0,879,880,3,439,219,0,880,98,1, - 0,0,0,881,882,3,407,203,0,882,883,3,417,208,0,883,884,3,437,218, - 0,884,885,3,439,219,0,885,886,3,435,217,0,886,887,3,417,208,0,887, - 888,3,403,201,0,888,889,3,441,220,0,889,890,3,439,219,0,890,891, - 3,409,204,0,891,892,3,407,203,0,892,100,1,0,0,0,893,894,3,407,203, - 0,894,895,3,435,217,0,895,896,3,429,214,0,896,897,3,431,215,0,897, - 102,1,0,0,0,898,899,3,409,204,0,899,900,3,423,211,0,900,901,3,437, - 218,0,901,902,3,409,204,0,902,104,1,0,0,0,903,904,3,409,204,0,904, - 905,3,427,213,0,905,906,3,407,203,0,906,106,1,0,0,0,907,908,3,409, - 204,0,908,909,3,427,213,0,909,910,3,413,206,0,910,911,3,417,208, - 0,911,912,3,427,213,0,912,913,3,409,204,0,913,108,1,0,0,0,914,915, - 3,409,204,0,915,916,3,443,221,0,916,917,3,409,204,0,917,918,3,427, - 213,0,918,919,3,439,219,0,919,920,3,437,218,0,920,110,1,0,0,0,921, - 922,3,409,204,0,922,923,3,447,223,0,923,924,3,417,208,0,924,925, - 3,437,218,0,925,926,3,439,219,0,926,927,3,437,218,0,927,112,1,0, - 0,0,928,929,3,409,204,0,929,930,3,447,223,0,930,931,3,431,215,0, - 931,932,3,423,211,0,932,933,3,401,200,0,933,934,3,417,208,0,934, - 935,3,427,213,0,935,114,1,0,0,0,936,937,3,409,204,0,937,938,3,447, - 223,0,938,939,3,431,215,0,939,940,3,435,217,0,940,941,3,409,204, - 0,941,942,3,437,218,0,942,943,3,437,218,0,943,944,3,417,208,0,944, - 945,3,429,214,0,945,946,3,427,213,0,946,116,1,0,0,0,947,948,3,409, - 204,0,948,949,3,447,223,0,949,950,3,439,219,0,950,951,3,435,217, - 0,951,952,3,401,200,0,952,953,3,405,202,0,953,954,3,439,219,0,954, - 118,1,0,0,0,955,956,3,411,205,0,956,957,3,409,204,0,957,958,3,439, - 219,0,958,959,3,405,202,0,959,960,3,415,207,0,960,961,3,409,204, - 0,961,962,3,437,218,0,962,120,1,0,0,0,963,964,3,411,205,0,964,965, - 3,417,208,0,965,966,3,427,213,0,966,967,3,401,200,0,967,968,3,423, - 211,0,968,122,1,0,0,0,969,970,3,411,205,0,970,971,3,417,208,0,971, - 972,3,435,217,0,972,973,3,437,218,0,973,974,3,439,219,0,974,124, - 1,0,0,0,975,976,3,411,205,0,976,977,3,423,211,0,977,978,3,441,220, - 0,978,979,3,437,218,0,979,980,3,415,207,0,980,126,1,0,0,0,981,982, - 3,411,205,0,982,983,3,429,214,0,983,984,3,423,211,0,984,985,3,423, - 211,0,985,986,3,429,214,0,986,987,3,445,222,0,987,988,3,417,208, - 0,988,989,3,427,213,0,989,990,3,413,206,0,990,128,1,0,0,0,991,992, - 3,411,205,0,992,993,3,429,214,0,993,994,3,435,217,0,994,130,1,0, - 0,0,995,996,3,411,205,0,996,997,3,429,214,0,997,998,3,435,217,0, - 998,999,3,425,212,0,999,1000,3,401,200,0,1000,1001,3,439,219,0,1001, - 132,1,0,0,0,1002,1003,3,411,205,0,1003,1004,3,435,217,0,1004,1005, - 3,409,204,0,1005,1006,3,409,204,0,1006,1007,3,451,225,0,1007,1008, - 3,409,204,0,1008,134,1,0,0,0,1009,1010,3,411,205,0,1010,1011,3,435, - 217,0,1011,1012,3,429,214,0,1012,1013,3,425,212,0,1013,136,1,0,0, - 0,1014,1015,3,411,205,0,1015,1016,3,441,220,0,1016,1017,3,423,211, - 0,1017,1018,3,423,211,0,1018,138,1,0,0,0,1019,1020,3,411,205,0,1020, - 1021,3,441,220,0,1021,1022,3,427,213,0,1022,1023,3,405,202,0,1023, - 1024,3,439,219,0,1024,1025,3,417,208,0,1025,1026,3,429,214,0,1026, - 1027,3,427,213,0,1027,140,1,0,0,0,1028,1029,3,413,206,0,1029,1030, - 3,423,211,0,1030,1031,3,429,214,0,1031,1032,3,403,201,0,1032,1033, - 3,401,200,0,1033,1034,3,423,211,0,1034,142,1,0,0,0,1035,1036,3,413, - 206,0,1036,1037,3,435,217,0,1037,1038,3,401,200,0,1038,1039,3,427, - 213,0,1039,1040,3,441,220,0,1040,1041,3,423,211,0,1041,1042,3,401, - 200,0,1042,1043,3,435,217,0,1043,1044,3,417,208,0,1044,1045,3,439, - 219,0,1045,1046,3,449,224,0,1046,144,1,0,0,0,1047,1048,3,413,206, - 0,1048,1049,3,435,217,0,1049,1050,3,429,214,0,1050,1051,3,441,220, - 0,1051,1052,3,431,215,0,1052,146,1,0,0,0,1053,1054,3,415,207,0,1054, - 1055,3,401,200,0,1055,1056,3,443,221,0,1056,1057,3,417,208,0,1057, - 1058,3,427,213,0,1058,1059,3,413,206,0,1059,148,1,0,0,0,1060,1061, - 3,415,207,0,1061,1062,3,417,208,0,1062,1063,3,409,204,0,1063,1064, - 3,435,217,0,1064,1065,3,401,200,0,1065,1066,3,435,217,0,1066,1067, - 3,405,202,0,1067,1068,3,415,207,0,1068,1069,3,417,208,0,1069,1070, - 3,405,202,0,1070,1071,3,401,200,0,1071,1072,3,423,211,0,1072,150, - 1,0,0,0,1073,1074,3,415,207,0,1074,1075,3,429,214,0,1075,1076,3, - 441,220,0,1076,1077,3,435,217,0,1077,152,1,0,0,0,1078,1079,3,417, - 208,0,1079,1080,3,407,203,0,1080,154,1,0,0,0,1081,1082,3,417,208, - 0,1082,1083,3,411,205,0,1083,156,1,0,0,0,1084,1085,3,417,208,0,1085, - 1086,3,423,211,0,1086,1087,3,417,208,0,1087,1088,3,421,210,0,1088, - 1089,3,409,204,0,1089,158,1,0,0,0,1090,1091,3,417,208,0,1091,1092, - 3,427,213,0,1092,160,1,0,0,0,1093,1094,3,417,208,0,1094,1095,3,427, - 213,0,1095,1096,3,407,203,0,1096,1097,3,409,204,0,1097,1098,3,447, - 223,0,1098,162,1,0,0,0,1099,1100,3,417,208,0,1100,1101,3,427,213, - 0,1101,1102,3,411,205,0,1102,1113,1,0,0,0,1103,1104,3,417,208,0, - 1104,1105,3,427,213,0,1105,1106,3,411,205,0,1106,1107,3,417,208, - 0,1107,1108,3,427,213,0,1108,1109,3,417,208,0,1109,1110,3,439,219, - 0,1110,1111,3,449,224,0,1111,1113,1,0,0,0,1112,1099,1,0,0,0,1112, - 1103,1,0,0,0,1113,164,1,0,0,0,1114,1115,3,417,208,0,1115,1116,3, - 427,213,0,1116,1117,3,419,209,0,1117,1118,3,409,204,0,1118,1119, - 3,405,202,0,1119,1120,3,439,219,0,1120,1121,3,417,208,0,1121,1122, - 3,443,221,0,1122,1123,3,409,204,0,1123,166,1,0,0,0,1124,1125,3,417, - 208,0,1125,1126,3,427,213,0,1126,1127,3,427,213,0,1127,1128,3,409, - 204,0,1128,1129,3,435,217,0,1129,168,1,0,0,0,1130,1131,3,417,208, - 0,1131,1132,3,427,213,0,1132,1133,3,437,218,0,1133,1134,3,409,204, - 0,1134,1135,3,435,217,0,1135,1136,3,439,219,0,1136,170,1,0,0,0,1137, - 1138,3,417,208,0,1138,1139,3,427,213,0,1139,1140,3,439,219,0,1140, - 1141,3,409,204,0,1141,1142,3,435,217,0,1142,1143,3,443,221,0,1143, - 1144,3,401,200,0,1144,1145,3,423,211,0,1145,172,1,0,0,0,1146,1147, - 3,417,208,0,1147,1148,3,427,213,0,1148,1149,3,439,219,0,1149,1150, - 3,429,214,0,1150,174,1,0,0,0,1151,1152,3,417,208,0,1152,1153,3,437, - 218,0,1153,176,1,0,0,0,1154,1155,3,417,208,0,1155,1156,3,437,218, - 0,1156,1157,3,537,268,0,1157,1158,3,429,214,0,1158,1159,3,403,201, - 0,1159,1160,3,419,209,0,1160,1161,3,409,204,0,1161,1162,3,405,202, - 0,1162,1163,3,439,219,0,1163,1164,3,537,268,0,1164,1165,3,417,208, - 0,1165,1166,3,407,203,0,1166,178,1,0,0,0,1167,1168,3,419,209,0,1168, - 1169,3,429,214,0,1169,1170,3,417,208,0,1170,1171,3,427,213,0,1171, - 180,1,0,0,0,1172,1173,3,421,210,0,1173,1174,3,409,204,0,1174,1175, - 3,449,224,0,1175,182,1,0,0,0,1176,1177,3,421,210,0,1177,1178,3,417, - 208,0,1178,1179,3,423,211,0,1179,1180,3,423,211,0,1180,184,1,0,0, - 0,1181,1182,3,423,211,0,1182,1183,3,401,200,0,1183,1184,3,437,218, - 0,1184,1185,3,439,219,0,1185,186,1,0,0,0,1186,1187,3,423,211,0,1187, - 1188,3,401,200,0,1188,1189,3,449,224,0,1189,1190,3,429,214,0,1190, - 1191,3,441,220,0,1191,1192,3,439,219,0,1192,188,1,0,0,0,1193,1194, - 3,423,211,0,1194,1195,3,409,204,0,1195,1196,3,401,200,0,1196,1197, - 3,407,203,0,1197,1198,3,417,208,0,1198,1199,3,427,213,0,1199,1200, - 3,413,206,0,1200,190,1,0,0,0,1201,1202,3,423,211,0,1202,1203,3,409, - 204,0,1203,1204,3,411,205,0,1204,1205,3,439,219,0,1205,192,1,0,0, - 0,1206,1207,3,423,211,0,1207,1208,3,417,208,0,1208,1209,3,411,205, - 0,1209,1210,3,409,204,0,1210,1211,3,439,219,0,1211,1212,3,417,208, - 0,1212,1213,3,425,212,0,1213,1214,3,409,204,0,1214,194,1,0,0,0,1215, - 1216,3,423,211,0,1216,1217,3,417,208,0,1217,1218,3,421,210,0,1218, - 1219,3,409,204,0,1219,196,1,0,0,0,1220,1221,3,423,211,0,1221,1222, - 3,417,208,0,1222,1223,3,425,212,0,1223,1224,3,417,208,0,1224,1225, - 3,439,219,0,1225,198,1,0,0,0,1226,1227,3,423,211,0,1227,1228,3,417, - 208,0,1228,1229,3,443,221,0,1229,1230,3,409,204,0,1230,200,1,0,0, - 0,1231,1232,3,423,211,0,1232,1233,3,429,214,0,1233,1234,3,405,202, - 0,1234,1235,3,401,200,0,1235,1236,3,423,211,0,1236,202,1,0,0,0,1237, - 1238,3,423,211,0,1238,1239,3,429,214,0,1239,1240,3,413,206,0,1240, - 1241,3,437,218,0,1241,204,1,0,0,0,1242,1243,3,425,212,0,1243,1244, - 3,401,200,0,1244,1245,3,439,219,0,1245,1246,3,409,204,0,1246,1247, - 3,435,217,0,1247,1248,3,417,208,0,1248,1249,3,401,200,0,1249,1250, - 3,423,211,0,1250,1251,3,417,208,0,1251,1252,3,451,225,0,1252,1253, - 3,409,204,0,1253,206,1,0,0,0,1254,1255,3,425,212,0,1255,1256,3,401, - 200,0,1256,1257,3,439,219,0,1257,1258,3,409,204,0,1258,1259,3,435, - 217,0,1259,1260,3,417,208,0,1260,1261,3,401,200,0,1261,1262,3,423, - 211,0,1262,1263,3,417,208,0,1263,1264,3,451,225,0,1264,1265,3,409, - 204,0,1265,1266,3,407,203,0,1266,208,1,0,0,0,1267,1268,3,425,212, - 0,1268,1269,3,401,200,0,1269,1270,3,447,223,0,1270,210,1,0,0,0,1271, - 1272,3,425,212,0,1272,1273,3,409,204,0,1273,1274,3,435,217,0,1274, - 1275,3,413,206,0,1275,1276,3,409,204,0,1276,1277,3,437,218,0,1277, - 212,1,0,0,0,1278,1279,3,425,212,0,1279,1280,3,417,208,0,1280,1281, - 3,427,213,0,1281,214,1,0,0,0,1282,1283,3,425,212,0,1283,1284,3,417, - 208,0,1284,1285,3,427,213,0,1285,1286,3,441,220,0,1286,1287,3,439, - 219,0,1287,1288,3,409,204,0,1288,216,1,0,0,0,1289,1290,3,425,212, - 0,1290,1291,3,429,214,0,1291,1292,3,407,203,0,1292,1293,3,417,208, - 0,1293,1294,3,411,205,0,1294,1295,3,449,224,0,1295,218,1,0,0,0,1296, - 1297,3,425,212,0,1297,1298,3,429,214,0,1298,1299,3,427,213,0,1299, - 1300,3,439,219,0,1300,1301,3,415,207,0,1301,220,1,0,0,0,1302,1303, - 3,425,212,0,1303,1304,3,429,214,0,1304,1305,3,443,221,0,1305,1306, - 3,409,204,0,1306,222,1,0,0,0,1307,1308,3,425,212,0,1308,1309,3,441, - 220,0,1309,1310,3,439,219,0,1310,1311,3,401,200,0,1311,1312,3,439, - 219,0,1312,1313,3,417,208,0,1313,1314,3,429,214,0,1314,1315,3,427, - 213,0,1315,224,1,0,0,0,1316,1317,3,427,213,0,1317,1318,3,401,200, - 0,1318,1319,3,427,213,0,1319,226,1,0,0,0,1320,1321,3,427,213,0,1321, - 1322,3,429,214,0,1322,228,1,0,0,0,1323,1324,3,427,213,0,1324,1325, - 3,429,214,0,1325,1326,3,439,219,0,1326,230,1,0,0,0,1327,1328,3,427, - 213,0,1328,1329,3,441,220,0,1329,1330,3,423,211,0,1330,1331,3,423, - 211,0,1331,232,1,0,0,0,1332,1333,3,427,213,0,1333,1334,3,441,220, - 0,1334,1335,3,423,211,0,1335,1336,3,423,211,0,1336,1337,3,437,218, - 0,1337,234,1,0,0,0,1338,1339,3,429,214,0,1339,1340,3,411,205,0,1340, - 1341,3,411,205,0,1341,1342,3,437,218,0,1342,1343,3,409,204,0,1343, - 1344,3,439,219,0,1344,236,1,0,0,0,1345,1346,3,429,214,0,1346,1347, - 3,427,213,0,1347,238,1,0,0,0,1348,1349,3,429,214,0,1349,1350,3,431, - 215,0,1350,1351,3,439,219,0,1351,1352,3,417,208,0,1352,1353,3,425, - 212,0,1353,1354,3,417,208,0,1354,1355,3,451,225,0,1355,1356,3,409, - 204,0,1356,240,1,0,0,0,1357,1358,3,429,214,0,1358,1359,3,435,217, - 0,1359,242,1,0,0,0,1360,1361,3,429,214,0,1361,1362,3,435,217,0,1362, - 1363,3,407,203,0,1363,1364,3,409,204,0,1364,1365,3,435,217,0,1365, - 244,1,0,0,0,1366,1367,3,429,214,0,1367,1368,3,441,220,0,1368,1369, - 3,439,219,0,1369,1370,3,409,204,0,1370,1371,3,435,217,0,1371,246, - 1,0,0,0,1372,1373,3,429,214,0,1373,1374,3,441,220,0,1374,1375,3, - 439,219,0,1375,1376,3,411,205,0,1376,1377,3,417,208,0,1377,1378, - 3,423,211,0,1378,1379,3,409,204,0,1379,248,1,0,0,0,1380,1381,3,429, - 214,0,1381,1382,3,443,221,0,1382,1383,3,409,204,0,1383,1384,3,435, - 217,0,1384,250,1,0,0,0,1385,1386,3,431,215,0,1386,1387,3,401,200, - 0,1387,1388,3,435,217,0,1388,1389,3,439,219,0,1389,1390,3,417,208, - 0,1390,1391,3,439,219,0,1391,1392,3,417,208,0,1392,1393,3,429,214, - 0,1393,1394,3,427,213,0,1394,252,1,0,0,0,1395,1396,3,431,215,0,1396, - 1397,3,429,214,0,1397,1398,3,431,215,0,1398,1399,3,441,220,0,1399, - 1400,3,423,211,0,1400,1401,3,401,200,0,1401,1402,3,439,219,0,1402, - 1403,3,409,204,0,1403,254,1,0,0,0,1404,1405,3,431,215,0,1405,1406, - 3,435,217,0,1406,1407,3,409,204,0,1407,1408,3,405,202,0,1408,1409, - 3,409,204,0,1409,1410,3,407,203,0,1410,1411,3,417,208,0,1411,1412, - 3,427,213,0,1412,1413,3,413,206,0,1413,256,1,0,0,0,1414,1415,3,431, - 215,0,1415,1416,3,435,217,0,1416,1417,3,409,204,0,1417,1418,3,445, - 222,0,1418,1419,3,415,207,0,1419,1420,3,409,204,0,1420,1421,3,435, - 217,0,1421,1422,3,409,204,0,1422,258,1,0,0,0,1423,1424,3,431,215, - 0,1424,1425,3,435,217,0,1425,1426,3,417,208,0,1426,1427,3,425,212, - 0,1427,1428,3,401,200,0,1428,1429,3,435,217,0,1429,1430,3,449,224, - 0,1430,260,1,0,0,0,1431,1432,3,431,215,0,1432,1433,3,435,217,0,1433, - 1434,3,429,214,0,1434,1435,3,419,209,0,1435,1436,3,409,204,0,1436, - 1437,3,405,202,0,1437,1438,3,439,219,0,1438,1439,3,417,208,0,1439, - 1440,3,429,214,0,1440,1441,3,427,213,0,1441,262,1,0,0,0,1442,1443, - 3,433,216,0,1443,1444,3,441,220,0,1444,1445,3,401,200,0,1445,1446, - 3,435,217,0,1446,1447,3,439,219,0,1447,1448,3,409,204,0,1448,1449, - 3,435,217,0,1449,264,1,0,0,0,1450,1451,3,435,217,0,1451,1452,3,401, - 200,0,1452,1453,3,427,213,0,1453,1454,3,413,206,0,1454,1455,3,409, - 204,0,1455,266,1,0,0,0,1456,1457,3,435,217,0,1457,1458,3,409,204, - 0,1458,1459,3,423,211,0,1459,1460,3,429,214,0,1460,1461,3,401,200, - 0,1461,1462,3,407,203,0,1462,268,1,0,0,0,1463,1464,3,435,217,0,1464, - 1465,3,409,204,0,1465,1466,3,425,212,0,1466,1467,3,429,214,0,1467, - 1468,3,443,221,0,1468,1469,3,409,204,0,1469,270,1,0,0,0,1470,1471, - 3,435,217,0,1471,1472,3,409,204,0,1472,1473,3,427,213,0,1473,1474, - 3,401,200,0,1474,1475,3,425,212,0,1475,1476,3,409,204,0,1476,272, - 1,0,0,0,1477,1478,3,435,217,0,1478,1479,3,409,204,0,1479,1480,3, - 431,215,0,1480,1481,3,423,211,0,1481,1482,3,401,200,0,1482,1483, - 3,405,202,0,1483,1484,3,409,204,0,1484,274,1,0,0,0,1485,1486,3,435, - 217,0,1486,1487,3,409,204,0,1487,1488,3,431,215,0,1488,1489,3,423, - 211,0,1489,1490,3,417,208,0,1490,1491,3,405,202,0,1491,1492,3,401, - 200,0,1492,276,1,0,0,0,1493,1494,3,435,217,0,1494,1495,3,409,204, - 0,1495,1496,3,431,215,0,1496,1497,3,423,211,0,1497,1498,3,417,208, - 0,1498,1499,3,405,202,0,1499,1500,3,401,200,0,1500,1501,3,439,219, - 0,1501,1502,3,409,204,0,1502,1503,3,407,203,0,1503,278,1,0,0,0,1504, - 1505,3,435,217,0,1505,1506,3,417,208,0,1506,1507,3,413,206,0,1507, - 1508,3,415,207,0,1508,1509,3,439,219,0,1509,280,1,0,0,0,1510,1511, - 3,435,217,0,1511,1512,3,429,214,0,1512,1513,3,423,211,0,1513,1514, - 3,423,211,0,1514,1515,3,441,220,0,1515,1516,3,431,215,0,1516,282, - 1,0,0,0,1517,1518,3,435,217,0,1518,1519,3,429,214,0,1519,1520,3, - 445,222,0,1520,284,1,0,0,0,1521,1522,3,435,217,0,1522,1523,3,429, - 214,0,1523,1524,3,445,222,0,1524,1525,3,437,218,0,1525,286,1,0,0, - 0,1526,1527,3,437,218,0,1527,1528,3,401,200,0,1528,1529,3,425,212, - 0,1529,1530,3,431,215,0,1530,1531,3,423,211,0,1531,1532,3,409,204, - 0,1532,288,1,0,0,0,1533,1534,3,437,218,0,1534,1535,3,409,204,0,1535, - 1536,3,405,202,0,1536,1537,3,429,214,0,1537,1538,3,427,213,0,1538, - 1539,3,407,203,0,1539,290,1,0,0,0,1540,1541,3,437,218,0,1541,1542, - 3,409,204,0,1542,1543,3,423,211,0,1543,1544,3,409,204,0,1544,1545, - 3,405,202,0,1545,1546,3,439,219,0,1546,292,1,0,0,0,1547,1548,3,437, - 218,0,1548,1549,3,409,204,0,1549,1550,3,425,212,0,1550,1551,3,417, - 208,0,1551,294,1,0,0,0,1552,1553,3,437,218,0,1553,1554,3,409,204, - 0,1554,1555,3,427,213,0,1555,1556,3,407,203,0,1556,1557,3,437,218, - 0,1557,296,1,0,0,0,1558,1559,3,437,218,0,1559,1560,3,409,204,0,1560, - 1561,3,439,219,0,1561,298,1,0,0,0,1562,1563,3,437,218,0,1563,1564, - 3,409,204,0,1564,1565,3,439,219,0,1565,1566,3,439,219,0,1566,1567, - 3,417,208,0,1567,1568,3,427,213,0,1568,1569,3,413,206,0,1569,1570, - 3,437,218,0,1570,300,1,0,0,0,1571,1572,3,437,218,0,1572,1573,3,415, - 207,0,1573,1574,3,429,214,0,1574,1575,3,445,222,0,1575,302,1,0,0, - 0,1576,1577,3,437,218,0,1577,1578,3,429,214,0,1578,1579,3,441,220, - 0,1579,1580,3,435,217,0,1580,1581,3,405,202,0,1581,1582,3,409,204, - 0,1582,304,1,0,0,0,1583,1584,3,437,218,0,1584,1585,3,439,219,0,1585, - 1586,3,401,200,0,1586,1587,3,435,217,0,1587,1588,3,439,219,0,1588, - 306,1,0,0,0,1589,1590,3,437,218,0,1590,1591,3,439,219,0,1591,1592, - 3,429,214,0,1592,1593,3,431,215,0,1593,308,1,0,0,0,1594,1595,3,437, - 218,0,1595,1596,3,441,220,0,1596,1597,3,403,201,0,1597,1598,3,437, - 218,0,1598,1599,3,439,219,0,1599,1600,3,435,217,0,1600,1601,3,417, - 208,0,1601,1602,3,427,213,0,1602,1603,3,413,206,0,1603,310,1,0,0, - 0,1604,1605,3,437,218,0,1605,1606,3,449,224,0,1606,1607,3,427,213, - 0,1607,1608,3,405,202,0,1608,312,1,0,0,0,1609,1610,3,437,218,0,1610, - 1611,3,449,224,0,1611,1612,3,427,213,0,1612,1613,3,439,219,0,1613, - 1614,3,401,200,0,1614,1615,3,447,223,0,1615,314,1,0,0,0,1616,1617, - 3,437,218,0,1617,1618,3,449,224,0,1618,1619,3,437,218,0,1619,1620, - 3,439,219,0,1620,1621,3,409,204,0,1621,1622,3,425,212,0,1622,316, - 1,0,0,0,1623,1624,3,439,219,0,1624,1625,3,401,200,0,1625,1626,3, - 403,201,0,1626,1627,3,423,211,0,1627,1628,3,409,204,0,1628,318,1, - 0,0,0,1629,1630,3,439,219,0,1630,1631,3,401,200,0,1631,1632,3,403, - 201,0,1632,1633,3,423,211,0,1633,1634,3,409,204,0,1634,1635,3,437, - 218,0,1635,320,1,0,0,0,1636,1637,3,439,219,0,1637,1638,3,409,204, - 0,1638,1639,3,425,212,0,1639,1640,3,431,215,0,1640,1641,3,429,214, - 0,1641,1642,3,435,217,0,1642,1643,3,401,200,0,1643,1644,3,435,217, - 0,1644,1645,3,449,224,0,1645,322,1,0,0,0,1646,1647,3,439,219,0,1647, - 1648,3,409,204,0,1648,1649,3,437,218,0,1649,1650,3,439,219,0,1650, - 324,1,0,0,0,1651,1652,3,439,219,0,1652,1653,3,415,207,0,1653,1654, - 3,409,204,0,1654,1655,3,427,213,0,1655,326,1,0,0,0,1656,1657,3,439, - 219,0,1657,1658,3,417,208,0,1658,1659,3,409,204,0,1659,1660,3,437, - 218,0,1660,328,1,0,0,0,1661,1662,3,439,219,0,1662,1663,3,417,208, - 0,1663,1664,3,425,212,0,1664,1665,3,409,204,0,1665,1666,3,429,214, - 0,1666,1667,3,441,220,0,1667,1668,3,439,219,0,1668,330,1,0,0,0,1669, - 1670,3,439,219,0,1670,1671,3,417,208,0,1671,1672,3,425,212,0,1672, - 1673,3,409,204,0,1673,1674,3,437,218,0,1674,1675,3,439,219,0,1675, - 1676,3,401,200,0,1676,1677,3,425,212,0,1677,1678,3,431,215,0,1678, - 332,1,0,0,0,1679,1680,3,439,219,0,1680,1681,3,429,214,0,1681,334, - 1,0,0,0,1682,1683,3,439,219,0,1683,1684,3,429,214,0,1684,1685,3, - 431,215,0,1685,336,1,0,0,0,1686,1687,3,439,219,0,1687,1688,3,429, - 214,0,1688,1689,3,439,219,0,1689,1690,3,401,200,0,1690,1691,3,423, - 211,0,1691,1692,3,437,218,0,1692,338,1,0,0,0,1693,1694,3,439,219, - 0,1694,1695,3,435,217,0,1695,1696,3,401,200,0,1696,1697,3,417,208, - 0,1697,1698,3,423,211,0,1698,1699,3,417,208,0,1699,1700,3,427,213, - 0,1700,1701,3,413,206,0,1701,340,1,0,0,0,1702,1703,3,439,219,0,1703, - 1704,3,435,217,0,1704,1705,3,417,208,0,1705,1706,3,425,212,0,1706, - 342,1,0,0,0,1707,1708,3,439,219,0,1708,1709,3,435,217,0,1709,1710, - 3,441,220,0,1710,1711,3,427,213,0,1711,1712,3,405,202,0,1712,1713, - 3,401,200,0,1713,1714,3,439,219,0,1714,1715,3,409,204,0,1715,344, - 1,0,0,0,1716,1717,3,439,219,0,1717,1718,3,439,219,0,1718,1719,3, - 423,211,0,1719,346,1,0,0,0,1720,1721,3,439,219,0,1721,1722,3,449, - 224,0,1722,1723,3,431,215,0,1723,1724,3,409,204,0,1724,348,1,0,0, - 0,1725,1726,3,441,220,0,1726,1727,3,427,213,0,1727,1728,3,403,201, - 0,1728,1729,3,429,214,0,1729,1730,3,441,220,0,1730,1731,3,427,213, - 0,1731,1732,3,407,203,0,1732,1733,3,409,204,0,1733,1734,3,407,203, - 0,1734,350,1,0,0,0,1735,1736,3,441,220,0,1736,1737,3,427,213,0,1737, - 1738,3,417,208,0,1738,1739,3,429,214,0,1739,1740,3,427,213,0,1740, - 352,1,0,0,0,1741,1742,3,441,220,0,1742,1743,3,431,215,0,1743,1744, - 3,407,203,0,1744,1745,3,401,200,0,1745,1746,3,439,219,0,1746,1747, - 3,409,204,0,1747,354,1,0,0,0,1748,1749,3,441,220,0,1749,1750,3,437, - 218,0,1750,1751,3,409,204,0,1751,356,1,0,0,0,1752,1753,3,441,220, - 0,1753,1754,3,437,218,0,1754,1755,3,417,208,0,1755,1756,3,427,213, - 0,1756,1757,3,413,206,0,1757,358,1,0,0,0,1758,1759,3,441,220,0,1759, - 1760,3,441,220,0,1760,1761,3,417,208,0,1761,1762,3,407,203,0,1762, - 360,1,0,0,0,1763,1764,3,443,221,0,1764,1765,3,401,200,0,1765,1766, - 3,423,211,0,1766,1767,3,441,220,0,1767,1768,3,409,204,0,1768,1769, - 3,437,218,0,1769,362,1,0,0,0,1770,1771,3,443,221,0,1771,1772,3,417, - 208,0,1772,1773,3,409,204,0,1773,1774,3,445,222,0,1774,364,1,0,0, - 0,1775,1776,3,443,221,0,1776,1777,3,429,214,0,1777,1778,3,423,211, - 0,1778,1779,3,441,220,0,1779,1780,3,425,212,0,1780,1781,3,409,204, - 0,1781,366,1,0,0,0,1782,1783,3,445,222,0,1783,1784,3,401,200,0,1784, - 1785,3,439,219,0,1785,1786,3,405,202,0,1786,1787,3,415,207,0,1787, - 368,1,0,0,0,1788,1789,3,445,222,0,1789,1790,3,409,204,0,1790,1791, - 3,409,204,0,1791,1792,3,421,210,0,1792,370,1,0,0,0,1793,1794,3,445, - 222,0,1794,1795,3,415,207,0,1795,1796,3,409,204,0,1796,1797,3,427, - 213,0,1797,372,1,0,0,0,1798,1799,3,445,222,0,1799,1800,3,415,207, - 0,1800,1801,3,409,204,0,1801,1802,3,435,217,0,1802,1803,3,409,204, - 0,1803,374,1,0,0,0,1804,1805,3,445,222,0,1805,1806,3,417,208,0,1806, - 1807,3,427,213,0,1807,1808,3,407,203,0,1808,1809,3,429,214,0,1809, - 1810,3,445,222,0,1810,376,1,0,0,0,1811,1812,3,445,222,0,1812,1813, - 3,417,208,0,1813,1814,3,439,219,0,1814,1815,3,415,207,0,1815,378, - 1,0,0,0,1816,1817,3,449,224,0,1817,1818,3,409,204,0,1818,1819,3, - 401,200,0,1819,1820,3,435,217,0,1820,1827,1,0,0,0,1821,1822,3,449, - 224,0,1822,1823,3,449,224,0,1823,1824,3,449,224,0,1824,1825,3,449, - 224,0,1825,1827,1,0,0,0,1826,1816,1,0,0,0,1826,1821,1,0,0,0,1827, - 380,1,0,0,0,1828,1829,5,102,0,0,1829,1830,5,97,0,0,1830,1831,5,108, - 0,0,1831,1832,5,115,0,0,1832,1833,5,101,0,0,1833,382,1,0,0,0,1834, - 1835,5,116,0,0,1835,1836,5,114,0,0,1836,1837,5,117,0,0,1837,1838, - 5,101,0,0,1838,384,1,0,0,0,1839,1840,3,467,233,0,1840,1841,3,403, - 201,0,1841,1870,1,0,0,0,1842,1843,3,467,233,0,1843,1844,3,411,205, - 0,1844,1870,1,0,0,0,1845,1846,3,467,233,0,1846,1847,3,435,217,0, - 1847,1870,1,0,0,0,1848,1849,3,467,233,0,1849,1850,3,427,213,0,1850, - 1870,1,0,0,0,1851,1852,3,467,233,0,1852,1853,3,439,219,0,1853,1870, - 1,0,0,0,1854,1855,3,467,233,0,1855,1856,5,48,0,0,1856,1870,1,0,0, - 0,1857,1858,3,467,233,0,1858,1859,3,401,200,0,1859,1870,1,0,0,0, - 1860,1861,3,467,233,0,1861,1862,3,443,221,0,1862,1870,1,0,0,0,1863, - 1864,3,467,233,0,1864,1865,3,467,233,0,1865,1870,1,0,0,0,1866,1867, - 3,467,233,0,1867,1868,3,521,260,0,1868,1870,1,0,0,0,1869,1839,1, - 0,0,0,1869,1842,1,0,0,0,1869,1845,1,0,0,0,1869,1848,1,0,0,0,1869, - 1851,1,0,0,0,1869,1854,1,0,0,0,1869,1857,1,0,0,0,1869,1860,1,0,0, - 0,1869,1863,1,0,0,0,1869,1866,1,0,0,0,1870,386,1,0,0,0,1871,1875, - 3,453,226,0,1872,1875,3,537,268,0,1873,1875,3,477,238,0,1874,1871, - 1,0,0,0,1874,1872,1,0,0,0,1874,1873,1,0,0,0,1875,1882,1,0,0,0,1876, - 1881,3,453,226,0,1877,1881,3,537,268,0,1878,1881,3,457,228,0,1879, - 1881,3,477,238,0,1880,1876,1,0,0,0,1880,1877,1,0,0,0,1880,1878,1, - 0,0,0,1880,1879,1,0,0,0,1881,1884,1,0,0,0,1882,1880,1,0,0,0,1882, - 1883,1,0,0,0,1883,1912,1,0,0,0,1884,1882,1,0,0,0,1885,1893,3,465, - 232,0,1886,1892,8,0,0,0,1887,1892,3,385,192,0,1888,1889,3,465,232, - 0,1889,1890,3,465,232,0,1890,1892,1,0,0,0,1891,1886,1,0,0,0,1891, - 1887,1,0,0,0,1891,1888,1,0,0,0,1892,1895,1,0,0,0,1893,1891,1,0,0, - 0,1893,1894,1,0,0,0,1894,1896,1,0,0,0,1895,1893,1,0,0,0,1896,1897, - 3,465,232,0,1897,1912,1,0,0,0,1898,1906,3,519,259,0,1899,1905,8, - 1,0,0,1900,1905,3,385,192,0,1901,1902,3,519,259,0,1902,1903,3,519, - 259,0,1903,1905,1,0,0,0,1904,1899,1,0,0,0,1904,1900,1,0,0,0,1904, - 1901,1,0,0,0,1905,1908,1,0,0,0,1906,1904,1,0,0,0,1906,1907,1,0,0, - 0,1907,1909,1,0,0,0,1908,1906,1,0,0,0,1909,1910,3,519,259,0,1910, - 1912,1,0,0,0,1911,1874,1,0,0,0,1911,1885,1,0,0,0,1911,1898,1,0,0, - 0,1912,388,1,0,0,0,1913,1914,3,395,197,0,1914,1918,3,479,239,0,1915, - 1917,3,459,229,0,1916,1915,1,0,0,0,1917,1920,1,0,0,0,1918,1916,1, - 0,0,0,1918,1919,1,0,0,0,1919,1923,1,0,0,0,1920,1918,1,0,0,0,1921, - 1924,3,431,215,0,1922,1924,3,409,204,0,1923,1921,1,0,0,0,1923,1922, - 1,0,0,0,1924,1927,1,0,0,0,1925,1928,3,515,257,0,1926,1928,3,475, - 237,0,1927,1925,1,0,0,0,1927,1926,1,0,0,0,1927,1928,1,0,0,0,1928, - 1930,1,0,0,0,1929,1931,3,457,228,0,1930,1929,1,0,0,0,1931,1932,1, - 0,0,0,1932,1930,1,0,0,0,1932,1933,1,0,0,0,1933,1990,1,0,0,0,1934, - 1937,3,395,197,0,1935,1938,3,431,215,0,1936,1938,3,409,204,0,1937, - 1935,1,0,0,0,1937,1936,1,0,0,0,1938,1941,1,0,0,0,1939,1942,3,515, - 257,0,1940,1942,3,475,237,0,1941,1939,1,0,0,0,1941,1940,1,0,0,0, - 1941,1942,1,0,0,0,1942,1944,1,0,0,0,1943,1945,3,457,228,0,1944,1943, - 1,0,0,0,1945,1946,1,0,0,0,1946,1944,1,0,0,0,1946,1947,1,0,0,0,1947, - 1990,1,0,0,0,1948,1949,3,393,196,0,1949,1953,3,479,239,0,1950,1952, - 3,457,228,0,1951,1950,1,0,0,0,1952,1955,1,0,0,0,1953,1951,1,0,0, - 0,1953,1954,1,0,0,0,1954,1956,1,0,0,0,1955,1953,1,0,0,0,1956,1959, - 3,409,204,0,1957,1960,3,515,257,0,1958,1960,3,475,237,0,1959,1957, - 1,0,0,0,1959,1958,1,0,0,0,1959,1960,1,0,0,0,1960,1962,1,0,0,0,1961, - 1963,3,457,228,0,1962,1961,1,0,0,0,1963,1964,1,0,0,0,1964,1962,1, - 0,0,0,1964,1965,1,0,0,0,1965,1990,1,0,0,0,1966,1967,3,479,239,0, - 1967,1968,3,393,196,0,1968,1971,3,409,204,0,1969,1972,3,515,257, - 0,1970,1972,3,475,237,0,1971,1969,1,0,0,0,1971,1970,1,0,0,0,1971, - 1972,1,0,0,0,1972,1974,1,0,0,0,1973,1975,3,457,228,0,1974,1973,1, - 0,0,0,1975,1976,1,0,0,0,1976,1974,1,0,0,0,1976,1977,1,0,0,0,1977, - 1990,1,0,0,0,1978,1979,3,393,196,0,1979,1982,3,409,204,0,1980,1983, - 3,515,257,0,1981,1983,3,475,237,0,1982,1980,1,0,0,0,1982,1981,1, - 0,0,0,1982,1983,1,0,0,0,1983,1985,1,0,0,0,1984,1986,3,457,228,0, - 1985,1984,1,0,0,0,1986,1987,1,0,0,0,1987,1985,1,0,0,0,1987,1988, - 1,0,0,0,1988,1990,1,0,0,0,1989,1913,1,0,0,0,1989,1934,1,0,0,0,1989, - 1948,1,0,0,0,1989,1966,1,0,0,0,1989,1978,1,0,0,0,1990,390,1,0,0, - 0,1991,1993,5,48,0,0,1992,1994,3,455,227,0,1993,1992,1,0,0,0,1994, - 1995,1,0,0,0,1995,1993,1,0,0,0,1995,1996,1,0,0,0,1996,392,1,0,0, - 0,1997,1999,3,457,228,0,1998,1997,1,0,0,0,1999,2000,1,0,0,0,2000, - 1998,1,0,0,0,2000,2001,1,0,0,0,2001,394,1,0,0,0,2002,2003,5,48,0, - 0,2003,2005,3,447,223,0,2004,2006,3,459,229,0,2005,2004,1,0,0,0, - 2006,2007,1,0,0,0,2007,2005,1,0,0,0,2007,2008,1,0,0,0,2008,396,1, - 0,0,0,2009,2017,3,521,260,0,2010,2016,8,2,0,0,2011,2016,3,385,192, - 0,2012,2013,3,521,260,0,2013,2014,3,521,260,0,2014,2016,1,0,0,0, - 2015,2010,1,0,0,0,2015,2011,1,0,0,0,2015,2012,1,0,0,0,2016,2019, - 1,0,0,0,2017,2015,1,0,0,0,2017,2018,1,0,0,0,2018,2020,1,0,0,0,2019, - 2017,1,0,0,0,2020,2021,3,521,260,0,2021,398,1,0,0,0,2022,2030,3, - 495,247,0,2023,2029,8,3,0,0,2024,2029,3,385,192,0,2025,2026,3,495, - 247,0,2026,2027,3,495,247,0,2027,2029,1,0,0,0,2028,2023,1,0,0,0, - 2028,2024,1,0,0,0,2028,2025,1,0,0,0,2029,2032,1,0,0,0,2030,2028, - 1,0,0,0,2030,2031,1,0,0,0,2031,2033,1,0,0,0,2032,2030,1,0,0,0,2033, - 2034,3,527,263,0,2034,400,1,0,0,0,2035,2036,7,4,0,0,2036,402,1,0, - 0,0,2037,2038,7,5,0,0,2038,404,1,0,0,0,2039,2040,7,6,0,0,2040,406, - 1,0,0,0,2041,2042,7,7,0,0,2042,408,1,0,0,0,2043,2044,7,8,0,0,2044, - 410,1,0,0,0,2045,2046,7,9,0,0,2046,412,1,0,0,0,2047,2048,7,10,0, - 0,2048,414,1,0,0,0,2049,2050,7,11,0,0,2050,416,1,0,0,0,2051,2052, - 7,12,0,0,2052,418,1,0,0,0,2053,2054,7,13,0,0,2054,420,1,0,0,0,2055, - 2056,7,14,0,0,2056,422,1,0,0,0,2057,2058,7,15,0,0,2058,424,1,0,0, - 0,2059,2060,7,16,0,0,2060,426,1,0,0,0,2061,2062,7,17,0,0,2062,428, - 1,0,0,0,2063,2064,7,18,0,0,2064,430,1,0,0,0,2065,2066,7,19,0,0,2066, - 432,1,0,0,0,2067,2068,7,20,0,0,2068,434,1,0,0,0,2069,2070,7,21,0, - 0,2070,436,1,0,0,0,2071,2072,7,22,0,0,2072,438,1,0,0,0,2073,2074, - 7,23,0,0,2074,440,1,0,0,0,2075,2076,7,24,0,0,2076,442,1,0,0,0,2077, - 2078,7,25,0,0,2078,444,1,0,0,0,2079,2080,7,26,0,0,2080,446,1,0,0, - 0,2081,2082,7,27,0,0,2082,448,1,0,0,0,2083,2084,7,28,0,0,2084,450, - 1,0,0,0,2085,2086,7,29,0,0,2086,452,1,0,0,0,2087,2088,7,30,0,0,2088, - 454,1,0,0,0,2089,2090,7,31,0,0,2090,456,1,0,0,0,2091,2092,7,32,0, - 0,2092,458,1,0,0,0,2093,2094,7,33,0,0,2094,460,1,0,0,0,2095,2096, - 5,45,0,0,2096,2097,5,62,0,0,2097,462,1,0,0,0,2098,2099,5,42,0,0, - 2099,464,1,0,0,0,2100,2101,5,96,0,0,2101,466,1,0,0,0,2102,2103,5, - 92,0,0,2103,468,1,0,0,0,2104,2105,5,58,0,0,2105,470,1,0,0,0,2106, - 2107,5,44,0,0,2107,472,1,0,0,0,2108,2109,5,124,0,0,2109,2110,5,124, - 0,0,2110,474,1,0,0,0,2111,2112,5,45,0,0,2112,476,1,0,0,0,2113,2114, - 5,36,0,0,2114,478,1,0,0,0,2115,2116,5,46,0,0,2116,480,1,0,0,0,2117, - 2118,5,61,0,0,2118,2119,5,61,0,0,2119,482,1,0,0,0,2120,2121,5,61, - 0,0,2121,484,1,0,0,0,2122,2123,5,62,0,0,2123,2124,5,61,0,0,2124, - 486,1,0,0,0,2125,2126,5,62,0,0,2126,488,1,0,0,0,2127,2128,5,35,0, - 0,2128,490,1,0,0,0,2129,2130,5,126,0,0,2130,2131,5,42,0,0,2131,492, - 1,0,0,0,2132,2133,5,61,0,0,2133,2134,5,126,0,0,2134,2135,5,42,0, - 0,2135,494,1,0,0,0,2136,2137,5,123,0,0,2137,496,1,0,0,0,2138,2139, - 5,91,0,0,2139,498,1,0,0,0,2140,2141,5,40,0,0,2141,500,1,0,0,0,2142, - 2143,5,60,0,0,2143,2144,5,61,0,0,2144,502,1,0,0,0,2145,2146,5,60, - 0,0,2146,504,1,0,0,0,2147,2148,5,33,0,0,2148,2152,5,61,0,0,2149, - 2150,5,60,0,0,2150,2152,5,62,0,0,2151,2147,1,0,0,0,2151,2149,1,0, - 0,0,2152,506,1,0,0,0,2153,2154,5,33,0,0,2154,2155,5,126,0,0,2155, - 2156,5,42,0,0,2156,508,1,0,0,0,2157,2158,5,33,0,0,2158,2159,5,126, - 0,0,2159,510,1,0,0,0,2160,2161,5,63,0,0,2161,2162,5,63,0,0,2162, - 512,1,0,0,0,2163,2164,5,37,0,0,2164,514,1,0,0,0,2165,2166,5,43,0, - 0,2166,516,1,0,0,0,2167,2168,5,63,0,0,2168,518,1,0,0,0,2169,2170, - 5,34,0,0,2170,520,1,0,0,0,2171,2172,5,39,0,0,2172,522,1,0,0,0,2173, - 2174,5,126,0,0,2174,524,1,0,0,0,2175,2176,5,61,0,0,2176,2177,5,126, - 0,0,2177,526,1,0,0,0,2178,2179,5,125,0,0,2179,528,1,0,0,0,2180,2181, - 5,93,0,0,2181,530,1,0,0,0,2182,2183,5,41,0,0,2183,532,1,0,0,0,2184, - 2185,5,59,0,0,2185,534,1,0,0,0,2186,2187,5,47,0,0,2187,536,1,0,0, - 0,2188,2189,5,95,0,0,2189,538,1,0,0,0,2190,2191,5,47,0,0,2191,2192, - 5,42,0,0,2192,2196,1,0,0,0,2193,2195,9,0,0,0,2194,2193,1,0,0,0,2195, - 2198,1,0,0,0,2196,2197,1,0,0,0,2196,2194,1,0,0,0,2197,2199,1,0,0, - 0,2198,2196,1,0,0,0,2199,2200,5,42,0,0,2200,2201,5,47,0,0,2201,2202, - 1,0,0,0,2202,2203,6,269,0,0,2203,540,1,0,0,0,2204,2205,5,45,0,0, - 2205,2206,5,45,0,0,2206,2210,1,0,0,0,2207,2209,8,34,0,0,2208,2207, - 1,0,0,0,2209,2212,1,0,0,0,2210,2208,1,0,0,0,2210,2211,1,0,0,0,2211, - 2214,1,0,0,0,2212,2210,1,0,0,0,2213,2215,7,35,0,0,2214,2213,1,0, - 0,0,2215,2216,1,0,0,0,2216,2217,6,270,0,0,2217,542,1,0,0,0,2218, - 2219,7,36,0,0,2219,2220,1,0,0,0,2220,2221,6,271,1,0,2221,544,1,0, - 0,0,39,0,607,1112,1826,1869,1874,1880,1882,1891,1893,1904,1906,1911, - 1918,1923,1927,1932,1937,1941,1946,1953,1959,1964,1971,1976,1982, - 1987,1989,1995,2000,2007,2015,2017,2028,2030,2151,2196,2210,2214, - 2,6,0,0,0,1,0 + 4, + 0, + 242, + 2222, + 6, + -1, + 2, + 0, + 7, + 0, + 2, + 1, + 7, + 1, + 2, + 2, + 7, + 2, + 2, + 3, + 7, + 3, + 2, + 4, + 7, + 4, + 2, + 5, + 7, + 5, + 2, + 6, + 7, + 6, + 2, + 7, + 7, + 7, + 2, + 8, + 7, + 8, + 2, + 9, + 7, + 9, + 2, + 10, + 7, + 10, + 2, + 11, + 7, + 11, + 2, + 12, + 7, + 12, + 2, + 13, + 7, + 13, + 2, + 14, + 7, + 14, + 2, + 15, + 7, + 15, + 2, + 16, + 7, + 16, + 2, + 17, + 7, + 17, + 2, + 18, + 7, + 18, + 2, + 19, + 7, + 19, + 2, + 20, + 7, + 20, + 2, + 21, + 7, + 21, + 2, + 22, + 7, + 22, + 2, + 23, + 7, + 23, + 2, + 24, + 7, + 24, + 2, + 25, + 7, + 25, + 2, + 26, + 7, + 26, + 2, + 27, + 7, + 27, + 2, + 28, + 7, + 28, + 2, + 29, + 7, + 29, + 2, + 30, + 7, + 30, + 2, + 31, + 7, + 31, + 2, + 32, + 7, + 32, + 2, + 33, + 7, + 33, + 2, + 34, + 7, + 34, + 2, + 35, + 7, + 35, + 2, + 36, + 7, + 36, + 2, + 37, + 7, + 37, + 2, + 38, + 7, + 38, + 2, + 39, + 7, + 39, + 2, + 40, + 7, + 40, + 2, + 41, + 7, + 41, + 2, + 42, + 7, + 42, + 2, + 43, + 7, + 43, + 2, + 44, + 7, + 44, + 2, + 45, + 7, + 45, + 2, + 46, + 7, + 46, + 2, + 47, + 7, + 47, + 2, + 48, + 7, + 48, + 2, + 49, + 7, + 49, + 2, + 50, + 7, + 50, + 2, + 51, + 7, + 51, + 2, + 52, + 7, + 52, + 2, + 53, + 7, + 53, + 2, + 54, + 7, + 54, + 2, + 55, + 7, + 55, + 2, + 56, + 7, + 56, + 2, + 57, + 7, + 57, + 2, + 58, + 7, + 58, + 2, + 59, + 7, + 59, + 2, + 60, + 7, + 60, + 2, + 61, + 7, + 61, + 2, + 62, + 7, + 62, + 2, + 63, + 7, + 63, + 2, + 64, + 7, + 64, + 2, + 65, + 7, + 65, + 2, + 66, + 7, + 66, + 2, + 67, + 7, + 67, + 2, + 68, + 7, + 68, + 2, + 69, + 7, + 69, + 2, + 70, + 7, + 70, + 2, + 71, + 7, + 71, + 2, + 72, + 7, + 72, + 2, + 73, + 7, + 73, + 2, + 74, + 7, + 74, + 2, + 75, + 7, + 75, + 2, + 76, + 7, + 76, + 2, + 77, + 7, + 77, + 2, + 78, + 7, + 78, + 2, + 79, + 7, + 79, + 2, + 80, + 7, + 80, + 2, + 81, + 7, + 81, + 2, + 82, + 7, + 82, + 2, + 83, + 7, + 83, + 2, + 84, + 7, + 84, + 2, + 85, + 7, + 85, + 2, + 86, + 7, + 86, + 2, + 87, + 7, + 87, + 2, + 88, + 7, + 88, + 2, + 89, + 7, + 89, + 2, + 90, + 7, + 90, + 2, + 91, + 7, + 91, + 2, + 92, + 7, + 92, + 2, + 93, + 7, + 93, + 2, + 94, + 7, + 94, + 2, + 95, + 7, + 95, + 2, + 96, + 7, + 96, + 2, + 97, + 7, + 97, + 2, + 98, + 7, + 98, + 2, + 99, + 7, + 99, + 2, + 100, + 7, + 100, + 2, + 101, + 7, + 101, + 2, + 102, + 7, + 102, + 2, + 103, + 7, + 103, + 2, + 104, + 7, + 104, + 2, + 105, + 7, + 105, + 2, + 106, + 7, + 106, + 2, + 107, + 7, + 107, + 2, + 108, + 7, + 108, + 2, + 109, + 7, + 109, + 2, + 110, + 7, + 110, + 2, + 111, + 7, + 111, + 2, + 112, + 7, + 112, + 2, + 113, + 7, + 113, + 2, + 114, + 7, + 114, + 2, + 115, + 7, + 115, + 2, + 116, + 7, + 116, + 2, + 117, + 7, + 117, + 2, + 118, + 7, + 118, + 2, + 119, + 7, + 119, + 2, + 120, + 7, + 120, + 2, + 121, + 7, + 121, + 2, + 122, + 7, + 122, + 2, + 123, + 7, + 123, + 2, + 124, + 7, + 124, + 2, + 125, + 7, + 125, + 2, + 126, + 7, + 126, + 2, + 127, + 7, + 127, + 2, + 128, + 7, + 128, + 2, + 129, + 7, + 129, + 2, + 130, + 7, + 130, + 2, + 131, + 7, + 131, + 2, + 132, + 7, + 132, + 2, + 133, + 7, + 133, + 2, + 134, + 7, + 134, + 2, + 135, + 7, + 135, + 2, + 136, + 7, + 136, + 2, + 137, + 7, + 137, + 2, + 138, + 7, + 138, + 2, + 139, + 7, + 139, + 2, + 140, + 7, + 140, + 2, + 141, + 7, + 141, + 2, + 142, + 7, + 142, + 2, + 143, + 7, + 143, + 2, + 144, + 7, + 144, + 2, + 145, + 7, + 145, + 2, + 146, + 7, + 146, + 2, + 147, + 7, + 147, + 2, + 148, + 7, + 148, + 2, + 149, + 7, + 149, + 2, + 150, + 7, + 150, + 2, + 151, + 7, + 151, + 2, + 152, + 7, + 152, + 2, + 153, + 7, + 153, + 2, + 154, + 7, + 154, + 2, + 155, + 7, + 155, + 2, + 156, + 7, + 156, + 2, + 157, + 7, + 157, + 2, + 158, + 7, + 158, + 2, + 159, + 7, + 159, + 2, + 160, + 7, + 160, + 2, + 161, + 7, + 161, + 2, + 162, + 7, + 162, + 2, + 163, + 7, + 163, + 2, + 164, + 7, + 164, + 2, + 165, + 7, + 165, + 2, + 166, + 7, + 166, + 2, + 167, + 7, + 167, + 2, + 168, + 7, + 168, + 2, + 169, + 7, + 169, + 2, + 170, + 7, + 170, + 2, + 171, + 7, + 171, + 2, + 172, + 7, + 172, + 2, + 173, + 7, + 173, + 2, + 174, + 7, + 174, + 2, + 175, + 7, + 175, + 2, + 176, + 7, + 176, + 2, + 177, + 7, + 177, + 2, + 178, + 7, + 178, + 2, + 179, + 7, + 179, + 2, + 180, + 7, + 180, + 2, + 181, + 7, + 181, + 2, + 182, + 7, + 182, + 2, + 183, + 7, + 183, + 2, + 184, + 7, + 184, + 2, + 185, + 7, + 185, + 2, + 186, + 7, + 186, + 2, + 187, + 7, + 187, + 2, + 188, + 7, + 188, + 2, + 189, + 7, + 189, + 2, + 190, + 7, + 190, + 2, + 191, + 7, + 191, + 2, + 192, + 7, + 192, + 2, + 193, + 7, + 193, + 2, + 194, + 7, + 194, + 2, + 195, + 7, + 195, + 2, + 196, + 7, + 196, + 2, + 197, + 7, + 197, + 2, + 198, + 7, + 198, + 2, + 199, + 7, + 199, + 2, + 200, + 7, + 200, + 2, + 201, + 7, + 201, + 2, + 202, + 7, + 202, + 2, + 203, + 7, + 203, + 2, + 204, + 7, + 204, + 2, + 205, + 7, + 205, + 2, + 206, + 7, + 206, + 2, + 207, + 7, + 207, + 2, + 208, + 7, + 208, + 2, + 209, + 7, + 209, + 2, + 210, + 7, + 210, + 2, + 211, + 7, + 211, + 2, + 212, + 7, + 212, + 2, + 213, + 7, + 213, + 2, + 214, + 7, + 214, + 2, + 215, + 7, + 215, + 2, + 216, + 7, + 216, + 2, + 217, + 7, + 217, + 2, + 218, + 7, + 218, + 2, + 219, + 7, + 219, + 2, + 220, + 7, + 220, + 2, + 221, + 7, + 221, + 2, + 222, + 7, + 222, + 2, + 223, + 7, + 223, + 2, + 224, + 7, + 224, + 2, + 225, + 7, + 225, + 2, + 226, + 7, + 226, + 2, + 227, + 7, + 227, + 2, + 228, + 7, + 228, + 2, + 229, + 7, + 229, + 2, + 230, + 7, + 230, + 2, + 231, + 7, + 231, + 2, + 232, + 7, + 232, + 2, + 233, + 7, + 233, + 2, + 234, + 7, + 234, + 2, + 235, + 7, + 235, + 2, + 236, + 7, + 236, + 2, + 237, + 7, + 237, + 2, + 238, + 7, + 238, + 2, + 239, + 7, + 239, + 2, + 240, + 7, + 240, + 2, + 241, + 7, + 241, + 2, + 242, + 7, + 242, + 2, + 243, + 7, + 243, + 2, + 244, + 7, + 244, + 2, + 245, + 7, + 245, + 2, + 246, + 7, + 246, + 2, + 247, + 7, + 247, + 2, + 248, + 7, + 248, + 2, + 249, + 7, + 249, + 2, + 250, + 7, + 250, + 2, + 251, + 7, + 251, + 2, + 252, + 7, + 252, + 2, + 253, + 7, + 253, + 2, + 254, + 7, + 254, + 2, + 255, + 7, + 255, + 2, + 256, + 7, + 256, + 2, + 257, + 7, + 257, + 2, + 258, + 7, + 258, + 2, + 259, + 7, + 259, + 2, + 260, + 7, + 260, + 2, + 261, + 7, + 261, + 2, + 262, + 7, + 262, + 2, + 263, + 7, + 263, + 2, + 264, + 7, + 264, + 2, + 265, + 7, + 265, + 2, + 266, + 7, + 266, + 2, + 267, + 7, + 267, + 2, + 268, + 7, + 268, + 2, + 269, + 7, + 269, + 2, + 270, + 7, + 270, + 2, + 271, + 7, + 271, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 3, + 1, + 3, + 1, + 3, + 1, + 3, + 1, + 4, + 1, + 4, + 1, + 4, + 1, + 4, + 1, + 4, + 1, + 4, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 6, + 1, + 6, + 1, + 6, + 1, + 6, + 1, + 6, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 9, + 1, + 9, + 1, + 9, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 3, + 10, + 608, + 8, + 10, + 1, + 11, + 1, + 11, + 1, + 11, + 1, + 11, + 1, + 11, + 1, + 12, + 1, + 12, + 1, + 12, + 1, + 12, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 29, + 1, + 29, + 1, + 29, + 1, + 29, + 1, + 29, + 1, + 29, + 1, + 29, + 1, + 30, + 1, + 30, + 1, + 30, + 1, + 30, + 1, + 30, + 1, + 30, + 1, + 31, + 1, + 31, + 1, + 31, + 1, + 31, + 1, + 31, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 36, + 1, + 36, + 1, + 36, + 1, + 36, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 47, + 1, + 47, + 1, + 47, + 1, + 47, + 1, + 47, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 52, + 1, + 52, + 1, + 52, + 1, + 52, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 60, + 1, + 60, + 1, + 60, + 1, + 60, + 1, + 60, + 1, + 60, + 1, + 61, + 1, + 61, + 1, + 61, + 1, + 61, + 1, + 61, + 1, + 61, + 1, + 62, + 1, + 62, + 1, + 62, + 1, + 62, + 1, + 62, + 1, + 62, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 64, + 1, + 64, + 1, + 64, + 1, + 64, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 66, + 1, + 66, + 1, + 66, + 1, + 66, + 1, + 66, + 1, + 66, + 1, + 66, + 1, + 67, + 1, + 67, + 1, + 67, + 1, + 67, + 1, + 67, + 1, + 68, + 1, + 68, + 1, + 68, + 1, + 68, + 1, + 68, + 1, + 69, + 1, + 69, + 1, + 69, + 1, + 69, + 1, + 69, + 1, + 69, + 1, + 69, + 1, + 69, + 1, + 69, + 1, + 70, + 1, + 70, + 1, + 70, + 1, + 70, + 1, + 70, + 1, + 70, + 1, + 70, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 72, + 1, + 72, + 1, + 72, + 1, + 72, + 1, + 72, + 1, + 72, + 1, + 73, + 1, + 73, + 1, + 73, + 1, + 73, + 1, + 73, + 1, + 73, + 1, + 73, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 74, + 1, + 75, + 1, + 75, + 1, + 75, + 1, + 75, + 1, + 75, + 1, + 76, + 1, + 76, + 1, + 76, + 1, + 77, + 1, + 77, + 1, + 77, + 1, + 78, + 1, + 78, + 1, + 78, + 1, + 78, + 1, + 78, + 1, + 78, + 1, + 79, + 1, + 79, + 1, + 79, + 1, + 80, + 1, + 80, + 1, + 80, + 1, + 80, + 1, + 80, + 1, + 80, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 3, + 81, + 1113, + 8, + 81, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 83, + 1, + 83, + 1, + 83, + 1, + 83, + 1, + 83, + 1, + 83, + 1, + 84, + 1, + 84, + 1, + 84, + 1, + 84, + 1, + 84, + 1, + 84, + 1, + 84, + 1, + 85, + 1, + 85, + 1, + 85, + 1, + 85, + 1, + 85, + 1, + 85, + 1, + 85, + 1, + 85, + 1, + 85, + 1, + 86, + 1, + 86, + 1, + 86, + 1, + 86, + 1, + 86, + 1, + 87, + 1, + 87, + 1, + 87, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 89, + 1, + 89, + 1, + 89, + 1, + 89, + 1, + 89, + 1, + 90, + 1, + 90, + 1, + 90, + 1, + 90, + 1, + 91, + 1, + 91, + 1, + 91, + 1, + 91, + 1, + 91, + 1, + 92, + 1, + 92, + 1, + 92, + 1, + 92, + 1, + 92, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 94, + 1, + 94, + 1, + 94, + 1, + 94, + 1, + 94, + 1, + 94, + 1, + 94, + 1, + 94, + 1, + 95, + 1, + 95, + 1, + 95, + 1, + 95, + 1, + 95, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 97, + 1, + 97, + 1, + 97, + 1, + 97, + 1, + 97, + 1, + 98, + 1, + 98, + 1, + 98, + 1, + 98, + 1, + 98, + 1, + 98, + 1, + 99, + 1, + 99, + 1, + 99, + 1, + 99, + 1, + 99, + 1, + 100, + 1, + 100, + 1, + 100, + 1, + 100, + 1, + 100, + 1, + 100, + 1, + 101, + 1, + 101, + 1, + 101, + 1, + 101, + 1, + 101, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 103, + 1, + 104, + 1, + 104, + 1, + 104, + 1, + 104, + 1, + 105, + 1, + 105, + 1, + 105, + 1, + 105, + 1, + 105, + 1, + 105, + 1, + 105, + 1, + 106, + 1, + 106, + 1, + 106, + 1, + 106, + 1, + 107, + 1, + 107, + 1, + 107, + 1, + 107, + 1, + 107, + 1, + 107, + 1, + 107, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 109, + 1, + 109, + 1, + 109, + 1, + 109, + 1, + 109, + 1, + 109, + 1, + 110, + 1, + 110, + 1, + 110, + 1, + 110, + 1, + 110, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 112, + 1, + 112, + 1, + 112, + 1, + 112, + 1, + 113, + 1, + 113, + 1, + 113, + 1, + 114, + 1, + 114, + 1, + 114, + 1, + 114, + 1, + 115, + 1, + 115, + 1, + 115, + 1, + 115, + 1, + 115, + 1, + 116, + 1, + 116, + 1, + 116, + 1, + 116, + 1, + 116, + 1, + 116, + 1, + 117, + 1, + 117, + 1, + 117, + 1, + 117, + 1, + 117, + 1, + 117, + 1, + 117, + 1, + 118, + 1, + 118, + 1, + 118, + 1, + 119, + 1, + 119, + 1, + 119, + 1, + 119, + 1, + 119, + 1, + 119, + 1, + 119, + 1, + 119, + 1, + 119, + 1, + 120, + 1, + 120, + 1, + 120, + 1, + 121, + 1, + 121, + 1, + 121, + 1, + 121, + 1, + 121, + 1, + 121, + 1, + 122, + 1, + 122, + 1, + 122, + 1, + 122, + 1, + 122, + 1, + 122, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 124, + 1, + 124, + 1, + 124, + 1, + 124, + 1, + 124, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 127, + 1, + 127, + 1, + 127, + 1, + 127, + 1, + 127, + 1, + 127, + 1, + 127, + 1, + 127, + 1, + 127, + 1, + 127, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 129, + 1, + 129, + 1, + 129, + 1, + 129, + 1, + 129, + 1, + 129, + 1, + 129, + 1, + 129, + 1, + 130, + 1, + 130, + 1, + 130, + 1, + 130, + 1, + 130, + 1, + 130, + 1, + 130, + 1, + 130, + 1, + 130, + 1, + 130, + 1, + 130, + 1, + 131, + 1, + 131, + 1, + 131, + 1, + 131, + 1, + 131, + 1, + 131, + 1, + 131, + 1, + 131, + 1, + 132, + 1, + 132, + 1, + 132, + 1, + 132, + 1, + 132, + 1, + 132, + 1, + 133, + 1, + 133, + 1, + 133, + 1, + 133, + 1, + 133, + 1, + 133, + 1, + 133, + 1, + 134, + 1, + 134, + 1, + 134, + 1, + 134, + 1, + 134, + 1, + 134, + 1, + 134, + 1, + 135, + 1, + 135, + 1, + 135, + 1, + 135, + 1, + 135, + 1, + 135, + 1, + 135, + 1, + 136, + 1, + 136, + 1, + 136, + 1, + 136, + 1, + 136, + 1, + 136, + 1, + 136, + 1, + 136, + 1, + 137, + 1, + 137, + 1, + 137, + 1, + 137, + 1, + 137, + 1, + 137, + 1, + 137, + 1, + 137, + 1, + 138, + 1, + 138, + 1, + 138, + 1, + 138, + 1, + 138, + 1, + 138, + 1, + 138, + 1, + 138, + 1, + 138, + 1, + 138, + 1, + 138, + 1, + 139, + 1, + 139, + 1, + 139, + 1, + 139, + 1, + 139, + 1, + 139, + 1, + 140, + 1, + 140, + 1, + 140, + 1, + 140, + 1, + 140, + 1, + 140, + 1, + 140, + 1, + 141, + 1, + 141, + 1, + 141, + 1, + 141, + 1, + 142, + 1, + 142, + 1, + 142, + 1, + 142, + 1, + 142, + 1, + 143, + 1, + 143, + 1, + 143, + 1, + 143, + 1, + 143, + 1, + 143, + 1, + 143, + 1, + 144, + 1, + 144, + 1, + 144, + 1, + 144, + 1, + 144, + 1, + 144, + 1, + 144, + 1, + 145, + 1, + 145, + 1, + 145, + 1, + 145, + 1, + 145, + 1, + 145, + 1, + 145, + 1, + 146, + 1, + 146, + 1, + 146, + 1, + 146, + 1, + 146, + 1, + 147, + 1, + 147, + 1, + 147, + 1, + 147, + 1, + 147, + 1, + 147, + 1, + 148, + 1, + 148, + 1, + 148, + 1, + 148, + 1, + 149, + 1, + 149, + 1, + 149, + 1, + 149, + 1, + 149, + 1, + 149, + 1, + 149, + 1, + 149, + 1, + 149, + 1, + 150, + 1, + 150, + 1, + 150, + 1, + 150, + 1, + 150, + 1, + 151, + 1, + 151, + 1, + 151, + 1, + 151, + 1, + 151, + 1, + 151, + 1, + 151, + 1, + 152, + 1, + 152, + 1, + 152, + 1, + 152, + 1, + 152, + 1, + 152, + 1, + 153, + 1, + 153, + 1, + 153, + 1, + 153, + 1, + 153, + 1, + 154, + 1, + 154, + 1, + 154, + 1, + 154, + 1, + 154, + 1, + 154, + 1, + 154, + 1, + 154, + 1, + 154, + 1, + 154, + 1, + 155, + 1, + 155, + 1, + 155, + 1, + 155, + 1, + 155, + 1, + 156, + 1, + 156, + 1, + 156, + 1, + 156, + 1, + 156, + 1, + 156, + 1, + 156, + 1, + 157, + 1, + 157, + 1, + 157, + 1, + 157, + 1, + 157, + 1, + 157, + 1, + 157, + 1, + 158, + 1, + 158, + 1, + 158, + 1, + 158, + 1, + 158, + 1, + 158, + 1, + 159, + 1, + 159, + 1, + 159, + 1, + 159, + 1, + 159, + 1, + 159, + 1, + 159, + 1, + 160, + 1, + 160, + 1, + 160, + 1, + 160, + 1, + 160, + 1, + 160, + 1, + 160, + 1, + 160, + 1, + 160, + 1, + 160, + 1, + 161, + 1, + 161, + 1, + 161, + 1, + 161, + 1, + 161, + 1, + 162, + 1, + 162, + 1, + 162, + 1, + 162, + 1, + 162, + 1, + 163, + 1, + 163, + 1, + 163, + 1, + 163, + 1, + 163, + 1, + 164, + 1, + 164, + 1, + 164, + 1, + 164, + 1, + 164, + 1, + 164, + 1, + 164, + 1, + 164, + 1, + 165, + 1, + 165, + 1, + 165, + 1, + 165, + 1, + 165, + 1, + 165, + 1, + 165, + 1, + 165, + 1, + 165, + 1, + 165, + 1, + 166, + 1, + 166, + 1, + 166, + 1, + 167, + 1, + 167, + 1, + 167, + 1, + 167, + 1, + 168, + 1, + 168, + 1, + 168, + 1, + 168, + 1, + 168, + 1, + 168, + 1, + 168, + 1, + 169, + 1, + 169, + 1, + 169, + 1, + 169, + 1, + 169, + 1, + 169, + 1, + 169, + 1, + 169, + 1, + 169, + 1, + 170, + 1, + 170, + 1, + 170, + 1, + 170, + 1, + 170, + 1, + 171, + 1, + 171, + 1, + 171, + 1, + 171, + 1, + 171, + 1, + 171, + 1, + 171, + 1, + 171, + 1, + 171, + 1, + 172, + 1, + 172, + 1, + 172, + 1, + 172, + 1, + 173, + 1, + 173, + 1, + 173, + 1, + 173, + 1, + 173, + 1, + 174, + 1, + 174, + 1, + 174, + 1, + 174, + 1, + 174, + 1, + 174, + 1, + 174, + 1, + 174, + 1, + 174, + 1, + 174, + 1, + 175, + 1, + 175, + 1, + 175, + 1, + 175, + 1, + 175, + 1, + 175, + 1, + 176, + 1, + 176, + 1, + 176, + 1, + 176, + 1, + 176, + 1, + 176, + 1, + 176, + 1, + 177, + 1, + 177, + 1, + 177, + 1, + 177, + 1, + 178, + 1, + 178, + 1, + 178, + 1, + 178, + 1, + 178, + 1, + 178, + 1, + 179, + 1, + 179, + 1, + 179, + 1, + 179, + 1, + 179, + 1, + 180, + 1, + 180, + 1, + 180, + 1, + 180, + 1, + 180, + 1, + 180, + 1, + 180, + 1, + 181, + 1, + 181, + 1, + 181, + 1, + 181, + 1, + 181, + 1, + 182, + 1, + 182, + 1, + 182, + 1, + 182, + 1, + 182, + 1, + 182, + 1, + 182, + 1, + 183, + 1, + 183, + 1, + 183, + 1, + 183, + 1, + 183, + 1, + 183, + 1, + 184, + 1, + 184, + 1, + 184, + 1, + 184, + 1, + 184, + 1, + 185, + 1, + 185, + 1, + 185, + 1, + 185, + 1, + 185, + 1, + 186, + 1, + 186, + 1, + 186, + 1, + 186, + 1, + 186, + 1, + 186, + 1, + 187, + 1, + 187, + 1, + 187, + 1, + 187, + 1, + 187, + 1, + 187, + 1, + 187, + 1, + 188, + 1, + 188, + 1, + 188, + 1, + 188, + 1, + 188, + 1, + 189, + 1, + 189, + 1, + 189, + 1, + 189, + 1, + 189, + 1, + 189, + 1, + 189, + 1, + 189, + 1, + 189, + 1, + 189, + 3, + 189, + 1827, + 8, + 189, + 1, + 190, + 1, + 190, + 1, + 190, + 1, + 190, + 1, + 190, + 1, + 190, + 1, + 191, + 1, + 191, + 1, + 191, + 1, + 191, + 1, + 191, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 1, + 192, + 3, + 192, + 1870, + 8, + 192, + 1, + 193, + 1, + 193, + 1, + 193, + 3, + 193, + 1875, + 8, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 5, + 193, + 1881, + 8, + 193, + 10, + 193, + 12, + 193, + 1884, + 9, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 5, + 193, + 1892, + 8, + 193, + 10, + 193, + 12, + 193, + 1895, + 9, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 1, + 193, + 5, + 193, + 1905, + 8, + 193, + 10, + 193, + 12, + 193, + 1908, + 9, + 193, + 1, + 193, + 1, + 193, + 3, + 193, + 1912, + 8, + 193, + 1, + 194, + 1, + 194, + 1, + 194, + 5, + 194, + 1917, + 8, + 194, + 10, + 194, + 12, + 194, + 1920, + 9, + 194, + 1, + 194, + 1, + 194, + 3, + 194, + 1924, + 8, + 194, + 1, + 194, + 1, + 194, + 3, + 194, + 1928, + 8, + 194, + 1, + 194, + 4, + 194, + 1931, + 8, + 194, + 11, + 194, + 12, + 194, + 1932, + 1, + 194, + 1, + 194, + 1, + 194, + 3, + 194, + 1938, + 8, + 194, + 1, + 194, + 1, + 194, + 3, + 194, + 1942, + 8, + 194, + 1, + 194, + 4, + 194, + 1945, + 8, + 194, + 11, + 194, + 12, + 194, + 1946, + 1, + 194, + 1, + 194, + 1, + 194, + 5, + 194, + 1952, + 8, + 194, + 10, + 194, + 12, + 194, + 1955, + 9, + 194, + 1, + 194, + 1, + 194, + 1, + 194, + 3, + 194, + 1960, + 8, + 194, + 1, + 194, + 4, + 194, + 1963, + 8, + 194, + 11, + 194, + 12, + 194, + 1964, + 1, + 194, + 1, + 194, + 1, + 194, + 1, + 194, + 1, + 194, + 3, + 194, + 1972, + 8, + 194, + 1, + 194, + 4, + 194, + 1975, + 8, + 194, + 11, + 194, + 12, + 194, + 1976, + 1, + 194, + 1, + 194, + 1, + 194, + 1, + 194, + 3, + 194, + 1983, + 8, + 194, + 1, + 194, + 4, + 194, + 1986, + 8, + 194, + 11, + 194, + 12, + 194, + 1987, + 3, + 194, + 1990, + 8, + 194, + 1, + 195, + 1, + 195, + 4, + 195, + 1994, + 8, + 195, + 11, + 195, + 12, + 195, + 1995, + 1, + 196, + 4, + 196, + 1999, + 8, + 196, + 11, + 196, + 12, + 196, + 2000, + 1, + 197, + 1, + 197, + 1, + 197, + 4, + 197, + 2006, + 8, + 197, + 11, + 197, + 12, + 197, + 2007, + 1, + 198, + 1, + 198, + 1, + 198, + 1, + 198, + 1, + 198, + 1, + 198, + 5, + 198, + 2016, + 8, + 198, + 10, + 198, + 12, + 198, + 2019, + 9, + 198, + 1, + 198, + 1, + 198, + 1, + 199, + 1, + 199, + 1, + 199, + 1, + 199, + 1, + 199, + 1, + 199, + 5, + 199, + 2029, + 8, + 199, + 10, + 199, + 12, + 199, + 2032, + 9, + 199, + 1, + 199, + 1, + 199, + 1, + 200, + 1, + 200, + 1, + 201, + 1, + 201, + 1, + 202, + 1, + 202, + 1, + 203, + 1, + 203, + 1, + 204, + 1, + 204, + 1, + 205, + 1, + 205, + 1, + 206, + 1, + 206, + 1, + 207, + 1, + 207, + 1, + 208, + 1, + 208, + 1, + 209, + 1, + 209, + 1, + 210, + 1, + 210, + 1, + 211, + 1, + 211, + 1, + 212, + 1, + 212, + 1, + 213, + 1, + 213, + 1, + 214, + 1, + 214, + 1, + 215, + 1, + 215, + 1, + 216, + 1, + 216, + 1, + 217, + 1, + 217, + 1, + 218, + 1, + 218, + 1, + 219, + 1, + 219, + 1, + 220, + 1, + 220, + 1, + 221, + 1, + 221, + 1, + 222, + 1, + 222, + 1, + 223, + 1, + 223, + 1, + 224, + 1, + 224, + 1, + 225, + 1, + 225, + 1, + 226, + 1, + 226, + 1, + 227, + 1, + 227, + 1, + 228, + 1, + 228, + 1, + 229, + 1, + 229, + 1, + 230, + 1, + 230, + 1, + 230, + 1, + 231, + 1, + 231, + 1, + 232, + 1, + 232, + 1, + 233, + 1, + 233, + 1, + 234, + 1, + 234, + 1, + 235, + 1, + 235, + 1, + 236, + 1, + 236, + 1, + 236, + 1, + 237, + 1, + 237, + 1, + 238, + 1, + 238, + 1, + 239, + 1, + 239, + 1, + 240, + 1, + 240, + 1, + 240, + 1, + 241, + 1, + 241, + 1, + 242, + 1, + 242, + 1, + 242, + 1, + 243, + 1, + 243, + 1, + 244, + 1, + 244, + 1, + 245, + 1, + 245, + 1, + 245, + 1, + 246, + 1, + 246, + 1, + 246, + 1, + 246, + 1, + 247, + 1, + 247, + 1, + 248, + 1, + 248, + 1, + 249, + 1, + 249, + 1, + 250, + 1, + 250, + 1, + 250, + 1, + 251, + 1, + 251, + 1, + 252, + 1, + 252, + 1, + 252, + 1, + 252, + 3, + 252, + 2152, + 8, + 252, + 1, + 253, + 1, + 253, + 1, + 253, + 1, + 253, + 1, + 254, + 1, + 254, + 1, + 254, + 1, + 255, + 1, + 255, + 1, + 255, + 1, + 256, + 1, + 256, + 1, + 257, + 1, + 257, + 1, + 258, + 1, + 258, + 1, + 259, + 1, + 259, + 1, + 260, + 1, + 260, + 1, + 261, + 1, + 261, + 1, + 262, + 1, + 262, + 1, + 262, + 1, + 263, + 1, + 263, + 1, + 264, + 1, + 264, + 1, + 265, + 1, + 265, + 1, + 266, + 1, + 266, + 1, + 267, + 1, + 267, + 1, + 268, + 1, + 268, + 1, + 269, + 1, + 269, + 1, + 269, + 1, + 269, + 5, + 269, + 2195, + 8, + 269, + 10, + 269, + 12, + 269, + 2198, + 9, + 269, + 1, + 269, + 1, + 269, + 1, + 269, + 1, + 269, + 1, + 269, + 1, + 270, + 1, + 270, + 1, + 270, + 1, + 270, + 5, + 270, + 2209, + 8, + 270, + 10, + 270, + 12, + 270, + 2212, + 9, + 270, + 1, + 270, + 3, + 270, + 2215, + 8, + 270, + 1, + 270, + 1, + 270, + 1, + 271, + 1, + 271, + 1, + 271, + 1, + 271, + 1, + 2196, + 0, + 272, + 1, + 1, + 3, + 2, + 5, + 3, + 7, + 4, + 9, + 5, + 11, + 6, + 13, + 7, + 15, + 8, + 17, + 9, + 19, + 10, + 21, + 11, + 23, + 12, + 25, + 13, + 27, + 14, + 29, + 15, + 31, + 16, + 33, + 17, + 35, + 18, + 37, + 19, + 39, + 20, + 41, + 21, + 43, + 22, + 45, + 23, + 47, + 24, + 49, + 25, + 51, + 26, + 53, + 27, + 55, + 28, + 57, + 29, + 59, + 30, + 61, + 31, + 63, + 32, + 65, + 33, + 67, + 34, + 69, + 35, + 71, + 36, + 73, + 37, + 75, + 38, + 77, + 39, + 79, + 40, + 81, + 41, + 83, + 42, + 85, + 43, + 87, + 44, + 89, + 45, + 91, + 46, + 93, + 47, + 95, + 48, + 97, + 49, + 99, + 50, + 101, + 51, + 103, + 52, + 105, + 53, + 107, + 54, + 109, + 55, + 111, + 56, + 113, + 57, + 115, + 58, + 117, + 59, + 119, + 60, + 121, + 61, + 123, + 62, + 125, + 63, + 127, + 64, + 129, + 65, + 131, + 66, + 133, + 67, + 135, + 68, + 137, + 69, + 139, + 70, + 141, + 71, + 143, + 72, + 145, + 73, + 147, + 74, + 149, + 75, + 151, + 76, + 153, + 77, + 155, + 78, + 157, + 79, + 159, + 80, + 161, + 81, + 163, + 82, + 165, + 83, + 167, + 84, + 169, + 85, + 171, + 86, + 173, + 87, + 175, + 88, + 177, + 89, + 179, + 90, + 181, + 91, + 183, + 92, + 185, + 93, + 187, + 94, + 189, + 95, + 191, + 96, + 193, + 97, + 195, + 98, + 197, + 99, + 199, + 100, + 201, + 101, + 203, + 102, + 205, + 103, + 207, + 104, + 209, + 105, + 211, + 106, + 213, + 107, + 215, + 108, + 217, + 109, + 219, + 110, + 221, + 111, + 223, + 112, + 225, + 113, + 227, + 114, + 229, + 115, + 231, + 116, + 233, + 117, + 235, + 118, + 237, + 119, + 239, + 120, + 241, + 121, + 243, + 122, + 245, + 123, + 247, + 124, + 249, + 125, + 251, + 126, + 253, + 127, + 255, + 128, + 257, + 129, + 259, + 130, + 261, + 131, + 263, + 132, + 265, + 133, + 267, + 134, + 269, + 135, + 271, + 136, + 273, + 137, + 275, + 138, + 277, + 139, + 279, + 140, + 281, + 141, + 283, + 142, + 285, + 143, + 287, + 144, + 289, + 145, + 291, + 146, + 293, + 147, + 295, + 148, + 297, + 149, + 299, + 150, + 301, + 151, + 303, + 152, + 305, + 153, + 307, + 154, + 309, + 155, + 311, + 156, + 313, + 157, + 315, + 158, + 317, + 159, + 319, + 160, + 321, + 161, + 323, + 162, + 325, + 163, + 327, + 164, + 329, + 165, + 331, + 166, + 333, + 167, + 335, + 168, + 337, + 169, + 339, + 170, + 341, + 171, + 343, + 172, + 345, + 173, + 347, + 174, + 349, + 175, + 351, + 176, + 353, + 177, + 355, + 178, + 357, + 179, + 359, + 180, + 361, + 181, + 363, + 182, + 365, + 183, + 367, + 184, + 369, + 185, + 371, + 186, + 373, + 187, + 375, + 188, + 377, + 189, + 379, + 190, + 381, + 191, + 383, + 192, + 385, + 193, + 387, + 194, + 389, + 195, + 391, + 196, + 393, + 197, + 395, + 198, + 397, + 199, + 399, + 200, + 401, + 0, + 403, + 0, + 405, + 0, + 407, + 0, + 409, + 0, + 411, + 0, + 413, + 0, + 415, + 0, + 417, + 0, + 419, + 0, + 421, + 0, + 423, + 0, + 425, + 0, + 427, + 0, + 429, + 0, + 431, + 0, + 433, + 0, + 435, + 0, + 437, + 0, + 439, + 0, + 441, + 0, + 443, + 0, + 445, + 0, + 447, + 0, + 449, + 0, + 451, + 0, + 453, + 0, + 455, + 0, + 457, + 0, + 459, + 0, + 461, + 201, + 463, + 202, + 465, + 203, + 467, + 204, + 469, + 205, + 471, + 206, + 473, + 207, + 475, + 208, + 477, + 209, + 479, + 210, + 481, + 211, + 483, + 212, + 485, + 213, + 487, + 214, + 489, + 215, + 491, + 216, + 493, + 217, + 495, + 218, + 497, + 219, + 499, + 220, + 501, + 221, + 503, + 222, + 505, + 223, + 507, + 224, + 509, + 225, + 511, + 226, + 513, + 227, + 515, + 228, + 517, + 229, + 519, + 230, + 521, + 231, + 523, + 232, + 525, + 233, + 527, + 234, + 529, + 235, + 531, + 236, + 533, + 237, + 535, + 238, + 537, + 239, + 539, + 240, + 541, + 241, + 543, + 242, + 1, + 0, + 37, + 2, + 0, + 92, + 92, + 96, + 96, + 2, + 0, + 34, + 34, + 92, + 92, + 2, + 0, + 39, + 39, + 92, + 92, + 2, + 0, + 92, + 92, + 125, + 125, + 2, + 0, + 65, + 65, + 97, + 97, + 2, + 0, + 66, + 66, + 98, + 98, + 2, + 0, + 67, + 67, + 99, + 99, + 2, + 0, + 68, + 68, + 100, + 100, + 2, + 0, + 69, + 69, + 101, + 101, + 2, + 0, + 70, + 70, + 102, + 102, + 2, + 0, + 71, + 71, + 103, + 103, + 2, + 0, + 72, + 72, + 104, + 104, + 2, + 0, + 73, + 73, + 105, + 105, + 2, + 0, + 74, + 74, + 106, + 106, + 2, + 0, + 75, + 75, + 107, + 107, + 2, + 0, + 76, + 76, + 108, + 108, + 2, + 0, + 77, + 77, + 109, + 109, + 2, + 0, + 78, + 78, + 110, + 110, + 2, + 0, + 79, + 79, + 111, + 111, + 2, + 0, + 80, + 80, + 112, + 112, + 2, + 0, + 81, + 81, + 113, + 113, + 2, + 0, + 82, + 82, + 114, + 114, + 2, + 0, + 83, + 83, + 115, + 115, + 2, + 0, + 84, + 84, + 116, + 116, + 2, + 0, + 85, + 85, + 117, + 117, + 2, + 0, + 86, + 86, + 118, + 118, + 2, + 0, + 87, + 87, + 119, + 119, + 2, + 0, + 88, + 88, + 120, + 120, + 2, + 0, + 89, + 89, + 121, + 121, + 2, + 0, + 90, + 90, + 122, + 122, + 2, + 0, + 65, + 90, + 97, + 122, + 1, + 0, + 48, + 55, + 1, + 0, + 48, + 57, + 3, + 0, + 48, + 57, + 65, + 70, + 97, + 102, + 2, + 0, + 10, + 10, + 13, + 13, + 2, + 1, + 10, + 10, + 13, + 13, + 2, + 0, + 9, + 13, + 32, + 32, + 2252, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 3, + 1, + 0, + 0, + 0, + 0, + 5, + 1, + 0, + 0, + 0, + 0, + 7, + 1, + 0, + 0, + 0, + 0, + 9, + 1, + 0, + 0, + 0, + 0, + 11, + 1, + 0, + 0, + 0, + 0, + 13, + 1, + 0, + 0, + 0, + 0, + 15, + 1, + 0, + 0, + 0, + 0, + 17, + 1, + 0, + 0, + 0, + 0, + 19, + 1, + 0, + 0, + 0, + 0, + 21, + 1, + 0, + 0, + 0, + 0, + 23, + 1, + 0, + 0, + 0, + 0, + 25, + 1, + 0, + 0, + 0, + 0, + 27, + 1, + 0, + 0, + 0, + 0, + 29, + 1, + 0, + 0, + 0, + 0, + 31, + 1, + 0, + 0, + 0, + 0, + 33, + 1, + 0, + 0, + 0, + 0, + 35, + 1, + 0, + 0, + 0, + 0, + 37, + 1, + 0, + 0, + 0, + 0, + 39, + 1, + 0, + 0, + 0, + 0, + 41, + 1, + 0, + 0, + 0, + 0, + 43, + 1, + 0, + 0, + 0, + 0, + 45, + 1, + 0, + 0, + 0, + 0, + 47, + 1, + 0, + 0, + 0, + 0, + 49, + 1, + 0, + 0, + 0, + 0, + 51, + 1, + 0, + 0, + 0, + 0, + 53, + 1, + 0, + 0, + 0, + 0, + 55, + 1, + 0, + 0, + 0, + 0, + 57, + 1, + 0, + 0, + 0, + 0, + 59, + 1, + 0, + 0, + 0, + 0, + 61, + 1, + 0, + 0, + 0, + 0, + 63, + 1, + 0, + 0, + 0, + 0, + 65, + 1, + 0, + 0, + 0, + 0, + 67, + 1, + 0, + 0, + 0, + 0, + 69, + 1, + 0, + 0, + 0, + 0, + 71, + 1, + 0, + 0, + 0, + 0, + 73, + 1, + 0, + 0, + 0, + 0, + 75, + 1, + 0, + 0, + 0, + 0, + 77, + 1, + 0, + 0, + 0, + 0, + 79, + 1, + 0, + 0, + 0, + 0, + 81, + 1, + 0, + 0, + 0, + 0, + 83, + 1, + 0, + 0, + 0, + 0, + 85, + 1, + 0, + 0, + 0, + 0, + 87, + 1, + 0, + 0, + 0, + 0, + 89, + 1, + 0, + 0, + 0, + 0, + 91, + 1, + 0, + 0, + 0, + 0, + 93, + 1, + 0, + 0, + 0, + 0, + 95, + 1, + 0, + 0, + 0, + 0, + 97, + 1, + 0, + 0, + 0, + 0, + 99, + 1, + 0, + 0, + 0, + 0, + 101, + 1, + 0, + 0, + 0, + 0, + 103, + 1, + 0, + 0, + 0, + 0, + 105, + 1, + 0, + 0, + 0, + 0, + 107, + 1, + 0, + 0, + 0, + 0, + 109, + 1, + 0, + 0, + 0, + 0, + 111, + 1, + 0, + 0, + 0, + 0, + 113, + 1, + 0, + 0, + 0, + 0, + 115, + 1, + 0, + 0, + 0, + 0, + 117, + 1, + 0, + 0, + 0, + 0, + 119, + 1, + 0, + 0, + 0, + 0, + 121, + 1, + 0, + 0, + 0, + 0, + 123, + 1, + 0, + 0, + 0, + 0, + 125, + 1, + 0, + 0, + 0, + 0, + 127, + 1, + 0, + 0, + 0, + 0, + 129, + 1, + 0, + 0, + 0, + 0, + 131, + 1, + 0, + 0, + 0, + 0, + 133, + 1, + 0, + 0, + 0, + 0, + 135, + 1, + 0, + 0, + 0, + 0, + 137, + 1, + 0, + 0, + 0, + 0, + 139, + 1, + 0, + 0, + 0, + 0, + 141, + 1, + 0, + 0, + 0, + 0, + 143, + 1, + 0, + 0, + 0, + 0, + 145, + 1, + 0, + 0, + 0, + 0, + 147, + 1, + 0, + 0, + 0, + 0, + 149, + 1, + 0, + 0, + 0, + 0, + 151, + 1, + 0, + 0, + 0, + 0, + 153, + 1, + 0, + 0, + 0, + 0, + 155, + 1, + 0, + 0, + 0, + 0, + 157, + 1, + 0, + 0, + 0, + 0, + 159, + 1, + 0, + 0, + 0, + 0, + 161, + 1, + 0, + 0, + 0, + 0, + 163, + 1, + 0, + 0, + 0, + 0, + 165, + 1, + 0, + 0, + 0, + 0, + 167, + 1, + 0, + 0, + 0, + 0, + 169, + 1, + 0, + 0, + 0, + 0, + 171, + 1, + 0, + 0, + 0, + 0, + 173, + 1, + 0, + 0, + 0, + 0, + 175, + 1, + 0, + 0, + 0, + 0, + 177, + 1, + 0, + 0, + 0, + 0, + 179, + 1, + 0, + 0, + 0, + 0, + 181, + 1, + 0, + 0, + 0, + 0, + 183, + 1, + 0, + 0, + 0, + 0, + 185, + 1, + 0, + 0, + 0, + 0, + 187, + 1, + 0, + 0, + 0, + 0, + 189, + 1, + 0, + 0, + 0, + 0, + 191, + 1, + 0, + 0, + 0, + 0, + 193, + 1, + 0, + 0, + 0, + 0, + 195, + 1, + 0, + 0, + 0, + 0, + 197, + 1, + 0, + 0, + 0, + 0, + 199, + 1, + 0, + 0, + 0, + 0, + 201, + 1, + 0, + 0, + 0, + 0, + 203, + 1, + 0, + 0, + 0, + 0, + 205, + 1, + 0, + 0, + 0, + 0, + 207, + 1, + 0, + 0, + 0, + 0, + 209, + 1, + 0, + 0, + 0, + 0, + 211, + 1, + 0, + 0, + 0, + 0, + 213, + 1, + 0, + 0, + 0, + 0, + 215, + 1, + 0, + 0, + 0, + 0, + 217, + 1, + 0, + 0, + 0, + 0, + 219, + 1, + 0, + 0, + 0, + 0, + 221, + 1, + 0, + 0, + 0, + 0, + 223, + 1, + 0, + 0, + 0, + 0, + 225, + 1, + 0, + 0, + 0, + 0, + 227, + 1, + 0, + 0, + 0, + 0, + 229, + 1, + 0, + 0, + 0, + 0, + 231, + 1, + 0, + 0, + 0, + 0, + 233, + 1, + 0, + 0, + 0, + 0, + 235, + 1, + 0, + 0, + 0, + 0, + 237, + 1, + 0, + 0, + 0, + 0, + 239, + 1, + 0, + 0, + 0, + 0, + 241, + 1, + 0, + 0, + 0, + 0, + 243, + 1, + 0, + 0, + 0, + 0, + 245, + 1, + 0, + 0, + 0, + 0, + 247, + 1, + 0, + 0, + 0, + 0, + 249, + 1, + 0, + 0, + 0, + 0, + 251, + 1, + 0, + 0, + 0, + 0, + 253, + 1, + 0, + 0, + 0, + 0, + 255, + 1, + 0, + 0, + 0, + 0, + 257, + 1, + 0, + 0, + 0, + 0, + 259, + 1, + 0, + 0, + 0, + 0, + 261, + 1, + 0, + 0, + 0, + 0, + 263, + 1, + 0, + 0, + 0, + 0, + 265, + 1, + 0, + 0, + 0, + 0, + 267, + 1, + 0, + 0, + 0, + 0, + 269, + 1, + 0, + 0, + 0, + 0, + 271, + 1, + 0, + 0, + 0, + 0, + 273, + 1, + 0, + 0, + 0, + 0, + 275, + 1, + 0, + 0, + 0, + 0, + 277, + 1, + 0, + 0, + 0, + 0, + 279, + 1, + 0, + 0, + 0, + 0, + 281, + 1, + 0, + 0, + 0, + 0, + 283, + 1, + 0, + 0, + 0, + 0, + 285, + 1, + 0, + 0, + 0, + 0, + 287, + 1, + 0, + 0, + 0, + 0, + 289, + 1, + 0, + 0, + 0, + 0, + 291, + 1, + 0, + 0, + 0, + 0, + 293, + 1, + 0, + 0, + 0, + 0, + 295, + 1, + 0, + 0, + 0, + 0, + 297, + 1, + 0, + 0, + 0, + 0, + 299, + 1, + 0, + 0, + 0, + 0, + 301, + 1, + 0, + 0, + 0, + 0, + 303, + 1, + 0, + 0, + 0, + 0, + 305, + 1, + 0, + 0, + 0, + 0, + 307, + 1, + 0, + 0, + 0, + 0, + 309, + 1, + 0, + 0, + 0, + 0, + 311, + 1, + 0, + 0, + 0, + 0, + 313, + 1, + 0, + 0, + 0, + 0, + 315, + 1, + 0, + 0, + 0, + 0, + 317, + 1, + 0, + 0, + 0, + 0, + 319, + 1, + 0, + 0, + 0, + 0, + 321, + 1, + 0, + 0, + 0, + 0, + 323, + 1, + 0, + 0, + 0, + 0, + 325, + 1, + 0, + 0, + 0, + 0, + 327, + 1, + 0, + 0, + 0, + 0, + 329, + 1, + 0, + 0, + 0, + 0, + 331, + 1, + 0, + 0, + 0, + 0, + 333, + 1, + 0, + 0, + 0, + 0, + 335, + 1, + 0, + 0, + 0, + 0, + 337, + 1, + 0, + 0, + 0, + 0, + 339, + 1, + 0, + 0, + 0, + 0, + 341, + 1, + 0, + 0, + 0, + 0, + 343, + 1, + 0, + 0, + 0, + 0, + 345, + 1, + 0, + 0, + 0, + 0, + 347, + 1, + 0, + 0, + 0, + 0, + 349, + 1, + 0, + 0, + 0, + 0, + 351, + 1, + 0, + 0, + 0, + 0, + 353, + 1, + 0, + 0, + 0, + 0, + 355, + 1, + 0, + 0, + 0, + 0, + 357, + 1, + 0, + 0, + 0, + 0, + 359, + 1, + 0, + 0, + 0, + 0, + 361, + 1, + 0, + 0, + 0, + 0, + 363, + 1, + 0, + 0, + 0, + 0, + 365, + 1, + 0, + 0, + 0, + 0, + 367, + 1, + 0, + 0, + 0, + 0, + 369, + 1, + 0, + 0, + 0, + 0, + 371, + 1, + 0, + 0, + 0, + 0, + 373, + 1, + 0, + 0, + 0, + 0, + 375, + 1, + 0, + 0, + 0, + 0, + 377, + 1, + 0, + 0, + 0, + 0, + 379, + 1, + 0, + 0, + 0, + 0, + 381, + 1, + 0, + 0, + 0, + 0, + 383, + 1, + 0, + 0, + 0, + 0, + 385, + 1, + 0, + 0, + 0, + 0, + 387, + 1, + 0, + 0, + 0, + 0, + 389, + 1, + 0, + 0, + 0, + 0, + 391, + 1, + 0, + 0, + 0, + 0, + 393, + 1, + 0, + 0, + 0, + 0, + 395, + 1, + 0, + 0, + 0, + 0, + 397, + 1, + 0, + 0, + 0, + 0, + 399, + 1, + 0, + 0, + 0, + 0, + 461, + 1, + 0, + 0, + 0, + 0, + 463, + 1, + 0, + 0, + 0, + 0, + 465, + 1, + 0, + 0, + 0, + 0, + 467, + 1, + 0, + 0, + 0, + 0, + 469, + 1, + 0, + 0, + 0, + 0, + 471, + 1, + 0, + 0, + 0, + 0, + 473, + 1, + 0, + 0, + 0, + 0, + 475, + 1, + 0, + 0, + 0, + 0, + 477, + 1, + 0, + 0, + 0, + 0, + 479, + 1, + 0, + 0, + 0, + 0, + 481, + 1, + 0, + 0, + 0, + 0, + 483, + 1, + 0, + 0, + 0, + 0, + 485, + 1, + 0, + 0, + 0, + 0, + 487, + 1, + 0, + 0, + 0, + 0, + 489, + 1, + 0, + 0, + 0, + 0, + 491, + 1, + 0, + 0, + 0, + 0, + 493, + 1, + 0, + 0, + 0, + 0, + 495, + 1, + 0, + 0, + 0, + 0, + 497, + 1, + 0, + 0, + 0, + 0, + 499, + 1, + 0, + 0, + 0, + 0, + 501, + 1, + 0, + 0, + 0, + 0, + 503, + 1, + 0, + 0, + 0, + 0, + 505, + 1, + 0, + 0, + 0, + 0, + 507, + 1, + 0, + 0, + 0, + 0, + 509, + 1, + 0, + 0, + 0, + 0, + 511, + 1, + 0, + 0, + 0, + 0, + 513, + 1, + 0, + 0, + 0, + 0, + 515, + 1, + 0, + 0, + 0, + 0, + 517, + 1, + 0, + 0, + 0, + 0, + 519, + 1, + 0, + 0, + 0, + 0, + 521, + 1, + 0, + 0, + 0, + 0, + 523, + 1, + 0, + 0, + 0, + 0, + 525, + 1, + 0, + 0, + 0, + 0, + 527, + 1, + 0, + 0, + 0, + 0, + 529, + 1, + 0, + 0, + 0, + 0, + 531, + 1, + 0, + 0, + 0, + 0, + 533, + 1, + 0, + 0, + 0, + 0, + 535, + 1, + 0, + 0, + 0, + 0, + 537, + 1, + 0, + 0, + 0, + 0, + 539, + 1, + 0, + 0, + 0, + 0, + 541, + 1, + 0, + 0, + 0, + 0, + 543, + 1, + 0, + 0, + 0, + 1, + 545, + 1, + 0, + 0, + 0, + 3, + 549, + 1, + 0, + 0, + 0, + 5, + 555, + 1, + 0, + 0, + 0, + 7, + 561, + 1, + 0, + 0, + 0, + 9, + 565, + 1, + 0, + 0, + 0, + 11, + 571, + 1, + 0, + 0, + 0, + 13, + 575, + 1, + 0, + 0, + 0, + 15, + 580, + 1, + 0, + 0, + 0, + 17, + 584, + 1, + 0, + 0, + 0, + 19, + 590, + 1, + 0, + 0, + 0, + 21, + 607, + 1, + 0, + 0, + 0, + 23, + 609, + 1, + 0, + 0, + 0, + 25, + 614, + 1, + 0, + 0, + 0, + 27, + 618, + 1, + 0, + 0, + 0, + 29, + 624, + 1, + 0, + 0, + 0, + 31, + 631, + 1, + 0, + 0, + 0, + 33, + 639, + 1, + 0, + 0, + 0, + 35, + 644, + 1, + 0, + 0, + 0, + 37, + 647, + 1, + 0, + 0, + 0, + 39, + 652, + 1, + 0, + 0, + 0, + 41, + 657, + 1, + 0, + 0, + 0, + 43, + 663, + 1, + 0, + 0, + 0, + 45, + 669, + 1, + 0, + 0, + 0, + 47, + 677, + 1, + 0, + 0, + 0, + 49, + 683, + 1, + 0, + 0, + 0, + 51, + 690, + 1, + 0, + 0, + 0, + 53, + 698, + 1, + 0, + 0, + 0, + 55, + 705, + 1, + 0, + 0, + 0, + 57, + 713, + 1, + 0, + 0, + 0, + 59, + 724, + 1, + 0, + 0, + 0, + 61, + 731, + 1, + 0, + 0, + 0, + 63, + 737, + 1, + 0, + 0, + 0, + 65, + 742, + 1, + 0, + 0, + 0, + 67, + 750, + 1, + 0, + 0, + 0, + 69, + 759, + 1, + 0, + 0, + 0, + 71, + 769, + 1, + 0, + 0, + 0, + 73, + 774, + 1, + 0, + 0, + 0, + 75, + 778, + 1, + 0, + 0, + 0, + 77, + 790, + 1, + 0, + 0, + 0, + 79, + 798, + 1, + 0, + 0, + 0, + 81, + 804, + 1, + 0, + 0, + 0, + 83, + 811, + 1, + 0, + 0, + 0, + 85, + 816, + 1, + 0, + 0, + 0, + 87, + 827, + 1, + 0, + 0, + 0, + 89, + 836, + 1, + 0, + 0, + 0, + 91, + 843, + 1, + 0, + 0, + 0, + 93, + 856, + 1, + 0, + 0, + 0, + 95, + 867, + 1, + 0, + 0, + 0, + 97, + 872, + 1, + 0, + 0, + 0, + 99, + 881, + 1, + 0, + 0, + 0, + 101, + 893, + 1, + 0, + 0, + 0, + 103, + 898, + 1, + 0, + 0, + 0, + 105, + 903, + 1, + 0, + 0, + 0, + 107, + 907, + 1, + 0, + 0, + 0, + 109, + 914, + 1, + 0, + 0, + 0, + 111, + 921, + 1, + 0, + 0, + 0, + 113, + 928, + 1, + 0, + 0, + 0, + 115, + 936, + 1, + 0, + 0, + 0, + 117, + 947, + 1, + 0, + 0, + 0, + 119, + 955, + 1, + 0, + 0, + 0, + 121, + 963, + 1, + 0, + 0, + 0, + 123, + 969, + 1, + 0, + 0, + 0, + 125, + 975, + 1, + 0, + 0, + 0, + 127, + 981, + 1, + 0, + 0, + 0, + 129, + 991, + 1, + 0, + 0, + 0, + 131, + 995, + 1, + 0, + 0, + 0, + 133, + 1002, + 1, + 0, + 0, + 0, + 135, + 1009, + 1, + 0, + 0, + 0, + 137, + 1014, + 1, + 0, + 0, + 0, + 139, + 1019, + 1, + 0, + 0, + 0, + 141, + 1028, + 1, + 0, + 0, + 0, + 143, + 1035, + 1, + 0, + 0, + 0, + 145, + 1047, + 1, + 0, + 0, + 0, + 147, + 1053, + 1, + 0, + 0, + 0, + 149, + 1060, + 1, + 0, + 0, + 0, + 151, + 1073, + 1, + 0, + 0, + 0, + 153, + 1078, + 1, + 0, + 0, + 0, + 155, + 1081, + 1, + 0, + 0, + 0, + 157, + 1084, + 1, + 0, + 0, + 0, + 159, + 1090, + 1, + 0, + 0, + 0, + 161, + 1093, + 1, + 0, + 0, + 0, + 163, + 1112, + 1, + 0, + 0, + 0, + 165, + 1114, + 1, + 0, + 0, + 0, + 167, + 1124, + 1, + 0, + 0, + 0, + 169, + 1130, + 1, + 0, + 0, + 0, + 171, + 1137, + 1, + 0, + 0, + 0, + 173, + 1146, + 1, + 0, + 0, + 0, + 175, + 1151, + 1, + 0, + 0, + 0, + 177, + 1154, + 1, + 0, + 0, + 0, + 179, + 1167, + 1, + 0, + 0, + 0, + 181, + 1172, + 1, + 0, + 0, + 0, + 183, + 1176, + 1, + 0, + 0, + 0, + 185, + 1181, + 1, + 0, + 0, + 0, + 187, + 1186, + 1, + 0, + 0, + 0, + 189, + 1193, + 1, + 0, + 0, + 0, + 191, + 1201, + 1, + 0, + 0, + 0, + 193, + 1206, + 1, + 0, + 0, + 0, + 195, + 1215, + 1, + 0, + 0, + 0, + 197, + 1220, + 1, + 0, + 0, + 0, + 199, + 1226, + 1, + 0, + 0, + 0, + 201, + 1231, + 1, + 0, + 0, + 0, + 203, + 1237, + 1, + 0, + 0, + 0, + 205, + 1242, + 1, + 0, + 0, + 0, + 207, + 1254, + 1, + 0, + 0, + 0, + 209, + 1267, + 1, + 0, + 0, + 0, + 211, + 1271, + 1, + 0, + 0, + 0, + 213, + 1278, + 1, + 0, + 0, + 0, + 215, + 1282, + 1, + 0, + 0, + 0, + 217, + 1289, + 1, + 0, + 0, + 0, + 219, + 1296, + 1, + 0, + 0, + 0, + 221, + 1302, + 1, + 0, + 0, + 0, + 223, + 1307, + 1, + 0, + 0, + 0, + 225, + 1316, + 1, + 0, + 0, + 0, + 227, + 1320, + 1, + 0, + 0, + 0, + 229, + 1323, + 1, + 0, + 0, + 0, + 231, + 1327, + 1, + 0, + 0, + 0, + 233, + 1332, + 1, + 0, + 0, + 0, + 235, + 1338, + 1, + 0, + 0, + 0, + 237, + 1345, + 1, + 0, + 0, + 0, + 239, + 1348, + 1, + 0, + 0, + 0, + 241, + 1357, + 1, + 0, + 0, + 0, + 243, + 1360, + 1, + 0, + 0, + 0, + 245, + 1366, + 1, + 0, + 0, + 0, + 247, + 1372, + 1, + 0, + 0, + 0, + 249, + 1380, + 1, + 0, + 0, + 0, + 251, + 1385, + 1, + 0, + 0, + 0, + 253, + 1395, + 1, + 0, + 0, + 0, + 255, + 1404, + 1, + 0, + 0, + 0, + 257, + 1414, + 1, + 0, + 0, + 0, + 259, + 1423, + 1, + 0, + 0, + 0, + 261, + 1431, + 1, + 0, + 0, + 0, + 263, + 1442, + 1, + 0, + 0, + 0, + 265, + 1450, + 1, + 0, + 0, + 0, + 267, + 1456, + 1, + 0, + 0, + 0, + 269, + 1463, + 1, + 0, + 0, + 0, + 271, + 1470, + 1, + 0, + 0, + 0, + 273, + 1477, + 1, + 0, + 0, + 0, + 275, + 1485, + 1, + 0, + 0, + 0, + 277, + 1493, + 1, + 0, + 0, + 0, + 279, + 1504, + 1, + 0, + 0, + 0, + 281, + 1510, + 1, + 0, + 0, + 0, + 283, + 1517, + 1, + 0, + 0, + 0, + 285, + 1521, + 1, + 0, + 0, + 0, + 287, + 1526, + 1, + 0, + 0, + 0, + 289, + 1533, + 1, + 0, + 0, + 0, + 291, + 1540, + 1, + 0, + 0, + 0, + 293, + 1547, + 1, + 0, + 0, + 0, + 295, + 1552, + 1, + 0, + 0, + 0, + 297, + 1558, + 1, + 0, + 0, + 0, + 299, + 1562, + 1, + 0, + 0, + 0, + 301, + 1571, + 1, + 0, + 0, + 0, + 303, + 1576, + 1, + 0, + 0, + 0, + 305, + 1583, + 1, + 0, + 0, + 0, + 307, + 1589, + 1, + 0, + 0, + 0, + 309, + 1594, + 1, + 0, + 0, + 0, + 311, + 1604, + 1, + 0, + 0, + 0, + 313, + 1609, + 1, + 0, + 0, + 0, + 315, + 1616, + 1, + 0, + 0, + 0, + 317, + 1623, + 1, + 0, + 0, + 0, + 319, + 1629, + 1, + 0, + 0, + 0, + 321, + 1636, + 1, + 0, + 0, + 0, + 323, + 1646, + 1, + 0, + 0, + 0, + 325, + 1651, + 1, + 0, + 0, + 0, + 327, + 1656, + 1, + 0, + 0, + 0, + 329, + 1661, + 1, + 0, + 0, + 0, + 331, + 1669, + 1, + 0, + 0, + 0, + 333, + 1679, + 1, + 0, + 0, + 0, + 335, + 1682, + 1, + 0, + 0, + 0, + 337, + 1686, + 1, + 0, + 0, + 0, + 339, + 1693, + 1, + 0, + 0, + 0, + 341, + 1702, + 1, + 0, + 0, + 0, + 343, + 1707, + 1, + 0, + 0, + 0, + 345, + 1716, + 1, + 0, + 0, + 0, + 347, + 1720, + 1, + 0, + 0, + 0, + 349, + 1725, + 1, + 0, + 0, + 0, + 351, + 1735, + 1, + 0, + 0, + 0, + 353, + 1741, + 1, + 0, + 0, + 0, + 355, + 1748, + 1, + 0, + 0, + 0, + 357, + 1752, + 1, + 0, + 0, + 0, + 359, + 1758, + 1, + 0, + 0, + 0, + 361, + 1763, + 1, + 0, + 0, + 0, + 363, + 1770, + 1, + 0, + 0, + 0, + 365, + 1775, + 1, + 0, + 0, + 0, + 367, + 1782, + 1, + 0, + 0, + 0, + 369, + 1788, + 1, + 0, + 0, + 0, + 371, + 1793, + 1, + 0, + 0, + 0, + 373, + 1798, + 1, + 0, + 0, + 0, + 375, + 1804, + 1, + 0, + 0, + 0, + 377, + 1811, + 1, + 0, + 0, + 0, + 379, + 1826, + 1, + 0, + 0, + 0, + 381, + 1828, + 1, + 0, + 0, + 0, + 383, + 1834, + 1, + 0, + 0, + 0, + 385, + 1869, + 1, + 0, + 0, + 0, + 387, + 1911, + 1, + 0, + 0, + 0, + 389, + 1989, + 1, + 0, + 0, + 0, + 391, + 1991, + 1, + 0, + 0, + 0, + 393, + 1998, + 1, + 0, + 0, + 0, + 395, + 2002, + 1, + 0, + 0, + 0, + 397, + 2009, + 1, + 0, + 0, + 0, + 399, + 2022, + 1, + 0, + 0, + 0, + 401, + 2035, + 1, + 0, + 0, + 0, + 403, + 2037, + 1, + 0, + 0, + 0, + 405, + 2039, + 1, + 0, + 0, + 0, + 407, + 2041, + 1, + 0, + 0, + 0, + 409, + 2043, + 1, + 0, + 0, + 0, + 411, + 2045, + 1, + 0, + 0, + 0, + 413, + 2047, + 1, + 0, + 0, + 0, + 415, + 2049, + 1, + 0, + 0, + 0, + 417, + 2051, + 1, + 0, + 0, + 0, + 419, + 2053, + 1, + 0, + 0, + 0, + 421, + 2055, + 1, + 0, + 0, + 0, + 423, + 2057, + 1, + 0, + 0, + 0, + 425, + 2059, + 1, + 0, + 0, + 0, + 427, + 2061, + 1, + 0, + 0, + 0, + 429, + 2063, + 1, + 0, + 0, + 0, + 431, + 2065, + 1, + 0, + 0, + 0, + 433, + 2067, + 1, + 0, + 0, + 0, + 435, + 2069, + 1, + 0, + 0, + 0, + 437, + 2071, + 1, + 0, + 0, + 0, + 439, + 2073, + 1, + 0, + 0, + 0, + 441, + 2075, + 1, + 0, + 0, + 0, + 443, + 2077, + 1, + 0, + 0, + 0, + 445, + 2079, + 1, + 0, + 0, + 0, + 447, + 2081, + 1, + 0, + 0, + 0, + 449, + 2083, + 1, + 0, + 0, + 0, + 451, + 2085, + 1, + 0, + 0, + 0, + 453, + 2087, + 1, + 0, + 0, + 0, + 455, + 2089, + 1, + 0, + 0, + 0, + 457, + 2091, + 1, + 0, + 0, + 0, + 459, + 2093, + 1, + 0, + 0, + 0, + 461, + 2095, + 1, + 0, + 0, + 0, + 463, + 2098, + 1, + 0, + 0, + 0, + 465, + 2100, + 1, + 0, + 0, + 0, + 467, + 2102, + 1, + 0, + 0, + 0, + 469, + 2104, + 1, + 0, + 0, + 0, + 471, + 2106, + 1, + 0, + 0, + 0, + 473, + 2108, + 1, + 0, + 0, + 0, + 475, + 2111, + 1, + 0, + 0, + 0, + 477, + 2113, + 1, + 0, + 0, + 0, + 479, + 2115, + 1, + 0, + 0, + 0, + 481, + 2117, + 1, + 0, + 0, + 0, + 483, + 2120, + 1, + 0, + 0, + 0, + 485, + 2122, + 1, + 0, + 0, + 0, + 487, + 2125, + 1, + 0, + 0, + 0, + 489, + 2127, + 1, + 0, + 0, + 0, + 491, + 2129, + 1, + 0, + 0, + 0, + 493, + 2132, + 1, + 0, + 0, + 0, + 495, + 2136, + 1, + 0, + 0, + 0, + 497, + 2138, + 1, + 0, + 0, + 0, + 499, + 2140, + 1, + 0, + 0, + 0, + 501, + 2142, + 1, + 0, + 0, + 0, + 503, + 2145, + 1, + 0, + 0, + 0, + 505, + 2151, + 1, + 0, + 0, + 0, + 507, + 2153, + 1, + 0, + 0, + 0, + 509, + 2157, + 1, + 0, + 0, + 0, + 511, + 2160, + 1, + 0, + 0, + 0, + 513, + 2163, + 1, + 0, + 0, + 0, + 515, + 2165, + 1, + 0, + 0, + 0, + 517, + 2167, + 1, + 0, + 0, + 0, + 519, + 2169, + 1, + 0, + 0, + 0, + 521, + 2171, + 1, + 0, + 0, + 0, + 523, + 2173, + 1, + 0, + 0, + 0, + 525, + 2175, + 1, + 0, + 0, + 0, + 527, + 2178, + 1, + 0, + 0, + 0, + 529, + 2180, + 1, + 0, + 0, + 0, + 531, + 2182, + 1, + 0, + 0, + 0, + 533, + 2184, + 1, + 0, + 0, + 0, + 535, + 2186, + 1, + 0, + 0, + 0, + 537, + 2188, + 1, + 0, + 0, + 0, + 539, + 2190, + 1, + 0, + 0, + 0, + 541, + 2204, + 1, + 0, + 0, + 0, + 543, + 2218, + 1, + 0, + 0, + 0, + 545, + 546, + 3, + 401, + 200, + 0, + 546, + 547, + 3, + 407, + 203, + 0, + 547, + 548, + 3, + 407, + 203, + 0, + 548, + 2, + 1, + 0, + 0, + 0, + 549, + 550, + 3, + 401, + 200, + 0, + 550, + 551, + 3, + 411, + 205, + 0, + 551, + 552, + 3, + 439, + 219, + 0, + 552, + 553, + 3, + 409, + 204, + 0, + 553, + 554, + 3, + 435, + 217, + 0, + 554, + 4, + 1, + 0, + 0, + 0, + 555, + 556, + 3, + 401, + 200, + 0, + 556, + 557, + 3, + 423, + 211, + 0, + 557, + 558, + 3, + 417, + 208, + 0, + 558, + 559, + 3, + 401, + 200, + 0, + 559, + 560, + 3, + 437, + 218, + 0, + 560, + 6, + 1, + 0, + 0, + 0, + 561, + 562, + 3, + 401, + 200, + 0, + 562, + 563, + 3, + 423, + 211, + 0, + 563, + 564, + 3, + 423, + 211, + 0, + 564, + 8, + 1, + 0, + 0, + 0, + 565, + 566, + 3, + 401, + 200, + 0, + 566, + 567, + 3, + 423, + 211, + 0, + 567, + 568, + 3, + 439, + 219, + 0, + 568, + 569, + 3, + 409, + 204, + 0, + 569, + 570, + 3, + 435, + 217, + 0, + 570, + 10, + 1, + 0, + 0, + 0, + 571, + 572, + 3, + 401, + 200, + 0, + 572, + 573, + 3, + 427, + 213, + 0, + 573, + 574, + 3, + 407, + 203, + 0, + 574, + 12, + 1, + 0, + 0, + 0, + 575, + 576, + 3, + 401, + 200, + 0, + 576, + 577, + 3, + 427, + 213, + 0, + 577, + 578, + 3, + 439, + 219, + 0, + 578, + 579, + 3, + 417, + 208, + 0, + 579, + 14, + 1, + 0, + 0, + 0, + 580, + 581, + 3, + 401, + 200, + 0, + 581, + 582, + 3, + 427, + 213, + 0, + 582, + 583, + 3, + 449, + 224, + 0, + 583, + 16, + 1, + 0, + 0, + 0, + 584, + 585, + 3, + 401, + 200, + 0, + 585, + 586, + 3, + 435, + 217, + 0, + 586, + 587, + 3, + 435, + 217, + 0, + 587, + 588, + 3, + 401, + 200, + 0, + 588, + 589, + 3, + 449, + 224, + 0, + 589, + 18, + 1, + 0, + 0, + 0, + 590, + 591, + 3, + 401, + 200, + 0, + 591, + 592, + 3, + 437, + 218, + 0, + 592, + 20, + 1, + 0, + 0, + 0, + 593, + 594, + 3, + 401, + 200, + 0, + 594, + 595, + 3, + 437, + 218, + 0, + 595, + 596, + 3, + 405, + 202, + 0, + 596, + 608, + 1, + 0, + 0, + 0, + 597, + 598, + 3, + 401, + 200, + 0, + 598, + 599, + 3, + 437, + 218, + 0, + 599, + 600, + 3, + 405, + 202, + 0, + 600, + 601, + 3, + 409, + 204, + 0, + 601, + 602, + 3, + 427, + 213, + 0, + 602, + 603, + 3, + 407, + 203, + 0, + 603, + 604, + 3, + 417, + 208, + 0, + 604, + 605, + 3, + 427, + 213, + 0, + 605, + 606, + 3, + 413, + 206, + 0, + 606, + 608, + 1, + 0, + 0, + 0, + 607, + 593, + 1, + 0, + 0, + 0, + 607, + 597, + 1, + 0, + 0, + 0, + 608, + 22, + 1, + 0, + 0, + 0, + 609, + 610, + 3, + 401, + 200, + 0, + 610, + 611, + 3, + 437, + 218, + 0, + 611, + 612, + 3, + 429, + 214, + 0, + 612, + 613, + 3, + 411, + 205, + 0, + 613, + 24, + 1, + 0, + 0, + 0, + 614, + 615, + 3, + 401, + 200, + 0, + 615, + 616, + 3, + 437, + 218, + 0, + 616, + 617, + 3, + 439, + 219, + 0, + 617, + 26, + 1, + 0, + 0, + 0, + 618, + 619, + 3, + 401, + 200, + 0, + 619, + 620, + 3, + 437, + 218, + 0, + 620, + 621, + 3, + 449, + 224, + 0, + 621, + 622, + 3, + 427, + 213, + 0, + 622, + 623, + 3, + 405, + 202, + 0, + 623, + 28, + 1, + 0, + 0, + 0, + 624, + 625, + 3, + 401, + 200, + 0, + 625, + 626, + 3, + 439, + 219, + 0, + 626, + 627, + 3, + 439, + 219, + 0, + 627, + 628, + 3, + 401, + 200, + 0, + 628, + 629, + 3, + 405, + 202, + 0, + 629, + 630, + 3, + 415, + 207, + 0, + 630, + 30, + 1, + 0, + 0, + 0, + 631, + 632, + 3, + 403, + 201, + 0, + 632, + 633, + 3, + 409, + 204, + 0, + 633, + 634, + 3, + 439, + 219, + 0, + 634, + 635, + 3, + 445, + 222, + 0, + 635, + 636, + 3, + 409, + 204, + 0, + 636, + 637, + 3, + 409, + 204, + 0, + 637, + 638, + 3, + 427, + 213, + 0, + 638, + 32, + 1, + 0, + 0, + 0, + 639, + 640, + 3, + 403, + 201, + 0, + 640, + 641, + 3, + 429, + 214, + 0, + 641, + 642, + 3, + 439, + 219, + 0, + 642, + 643, + 3, + 415, + 207, + 0, + 643, + 34, + 1, + 0, + 0, + 0, + 644, + 645, + 3, + 403, + 201, + 0, + 645, + 646, + 3, + 449, + 224, + 0, + 646, + 36, + 1, + 0, + 0, + 0, + 647, + 648, + 3, + 405, + 202, + 0, + 648, + 649, + 3, + 401, + 200, + 0, + 649, + 650, + 3, + 437, + 218, + 0, + 650, + 651, + 3, + 409, + 204, + 0, + 651, + 38, + 1, + 0, + 0, + 0, + 652, + 653, + 3, + 405, + 202, + 0, + 653, + 654, + 3, + 401, + 200, + 0, + 654, + 655, + 3, + 437, + 218, + 0, + 655, + 656, + 3, + 439, + 219, + 0, + 656, + 40, + 1, + 0, + 0, + 0, + 657, + 658, + 3, + 405, + 202, + 0, + 658, + 659, + 3, + 415, + 207, + 0, + 659, + 660, + 3, + 409, + 204, + 0, + 660, + 661, + 3, + 405, + 202, + 0, + 661, + 662, + 3, + 421, + 210, + 0, + 662, + 42, + 1, + 0, + 0, + 0, + 663, + 664, + 3, + 405, + 202, + 0, + 664, + 665, + 3, + 423, + 211, + 0, + 665, + 666, + 3, + 409, + 204, + 0, + 666, + 667, + 3, + 401, + 200, + 0, + 667, + 668, + 3, + 435, + 217, + 0, + 668, + 44, + 1, + 0, + 0, + 0, + 669, + 670, + 3, + 405, + 202, + 0, + 670, + 671, + 3, + 423, + 211, + 0, + 671, + 672, + 3, + 441, + 220, + 0, + 672, + 673, + 3, + 437, + 218, + 0, + 673, + 674, + 3, + 439, + 219, + 0, + 674, + 675, + 3, + 409, + 204, + 0, + 675, + 676, + 3, + 435, + 217, + 0, + 676, + 46, + 1, + 0, + 0, + 0, + 677, + 678, + 3, + 405, + 202, + 0, + 678, + 679, + 3, + 429, + 214, + 0, + 679, + 680, + 3, + 407, + 203, + 0, + 680, + 681, + 3, + 409, + 204, + 0, + 681, + 682, + 3, + 405, + 202, + 0, + 682, + 48, + 1, + 0, + 0, + 0, + 683, + 684, + 3, + 405, + 202, + 0, + 684, + 685, + 3, + 429, + 214, + 0, + 685, + 686, + 3, + 415, + 207, + 0, + 686, + 687, + 3, + 429, + 214, + 0, + 687, + 688, + 3, + 435, + 217, + 0, + 688, + 689, + 3, + 439, + 219, + 0, + 689, + 50, + 1, + 0, + 0, + 0, + 690, + 691, + 3, + 405, + 202, + 0, + 691, + 692, + 3, + 429, + 214, + 0, + 692, + 693, + 3, + 423, + 211, + 0, + 693, + 694, + 3, + 423, + 211, + 0, + 694, + 695, + 3, + 401, + 200, + 0, + 695, + 696, + 3, + 439, + 219, + 0, + 696, + 697, + 3, + 409, + 204, + 0, + 697, + 52, + 1, + 0, + 0, + 0, + 698, + 699, + 3, + 405, + 202, + 0, + 699, + 700, + 3, + 429, + 214, + 0, + 700, + 701, + 3, + 423, + 211, + 0, + 701, + 702, + 3, + 441, + 220, + 0, + 702, + 703, + 3, + 425, + 212, + 0, + 703, + 704, + 3, + 427, + 213, + 0, + 704, + 54, + 1, + 0, + 0, + 0, + 705, + 706, + 3, + 405, + 202, + 0, + 706, + 707, + 3, + 429, + 214, + 0, + 707, + 708, + 3, + 425, + 212, + 0, + 708, + 709, + 3, + 425, + 212, + 0, + 709, + 710, + 3, + 409, + 204, + 0, + 710, + 711, + 3, + 427, + 213, + 0, + 711, + 712, + 3, + 439, + 219, + 0, + 712, + 56, + 1, + 0, + 0, + 0, + 713, + 714, + 3, + 405, + 202, + 0, + 714, + 715, + 3, + 429, + 214, + 0, + 715, + 716, + 3, + 427, + 213, + 0, + 716, + 717, + 3, + 437, + 218, + 0, + 717, + 718, + 3, + 439, + 219, + 0, + 718, + 719, + 3, + 435, + 217, + 0, + 719, + 720, + 3, + 401, + 200, + 0, + 720, + 721, + 3, + 417, + 208, + 0, + 721, + 722, + 3, + 427, + 213, + 0, + 722, + 723, + 3, + 439, + 219, + 0, + 723, + 58, + 1, + 0, + 0, + 0, + 724, + 725, + 3, + 405, + 202, + 0, + 725, + 726, + 3, + 435, + 217, + 0, + 726, + 727, + 3, + 409, + 204, + 0, + 727, + 728, + 3, + 401, + 200, + 0, + 728, + 729, + 3, + 439, + 219, + 0, + 729, + 730, + 3, + 409, + 204, + 0, + 730, + 60, + 1, + 0, + 0, + 0, + 731, + 732, + 3, + 405, + 202, + 0, + 732, + 733, + 3, + 435, + 217, + 0, + 733, + 734, + 3, + 429, + 214, + 0, + 734, + 735, + 3, + 437, + 218, + 0, + 735, + 736, + 3, + 437, + 218, + 0, + 736, + 62, + 1, + 0, + 0, + 0, + 737, + 738, + 3, + 405, + 202, + 0, + 738, + 739, + 3, + 441, + 220, + 0, + 739, + 740, + 3, + 403, + 201, + 0, + 740, + 741, + 3, + 409, + 204, + 0, + 741, + 64, + 1, + 0, + 0, + 0, + 742, + 743, + 3, + 405, + 202, + 0, + 743, + 744, + 3, + 441, + 220, + 0, + 744, + 745, + 3, + 435, + 217, + 0, + 745, + 746, + 3, + 435, + 217, + 0, + 746, + 747, + 3, + 409, + 204, + 0, + 747, + 748, + 3, + 427, + 213, + 0, + 748, + 749, + 3, + 439, + 219, + 0, + 749, + 66, + 1, + 0, + 0, + 0, + 750, + 751, + 3, + 407, + 203, + 0, + 751, + 752, + 3, + 401, + 200, + 0, + 752, + 753, + 3, + 439, + 219, + 0, + 753, + 754, + 3, + 401, + 200, + 0, + 754, + 755, + 3, + 403, + 201, + 0, + 755, + 756, + 3, + 401, + 200, + 0, + 756, + 757, + 3, + 437, + 218, + 0, + 757, + 758, + 3, + 409, + 204, + 0, + 758, + 68, + 1, + 0, + 0, + 0, + 759, + 760, + 3, + 407, + 203, + 0, + 760, + 761, + 3, + 401, + 200, + 0, + 761, + 762, + 3, + 439, + 219, + 0, + 762, + 763, + 3, + 401, + 200, + 0, + 763, + 764, + 3, + 403, + 201, + 0, + 764, + 765, + 3, + 401, + 200, + 0, + 765, + 766, + 3, + 437, + 218, + 0, + 766, + 767, + 3, + 409, + 204, + 0, + 767, + 768, + 3, + 437, + 218, + 0, + 768, + 70, + 1, + 0, + 0, + 0, + 769, + 770, + 3, + 407, + 203, + 0, + 770, + 771, + 3, + 401, + 200, + 0, + 771, + 772, + 3, + 439, + 219, + 0, + 772, + 773, + 3, + 409, + 204, + 0, + 773, + 72, + 1, + 0, + 0, + 0, + 774, + 775, + 3, + 407, + 203, + 0, + 775, + 776, + 3, + 401, + 200, + 0, + 776, + 777, + 3, + 449, + 224, + 0, + 777, + 74, + 1, + 0, + 0, + 0, + 778, + 779, + 3, + 407, + 203, + 0, + 779, + 780, + 3, + 409, + 204, + 0, + 780, + 781, + 3, + 407, + 203, + 0, + 781, + 782, + 3, + 441, + 220, + 0, + 782, + 783, + 3, + 431, + 215, + 0, + 783, + 784, + 3, + 423, + 211, + 0, + 784, + 785, + 3, + 417, + 208, + 0, + 785, + 786, + 3, + 405, + 202, + 0, + 786, + 787, + 3, + 401, + 200, + 0, + 787, + 788, + 3, + 439, + 219, + 0, + 788, + 789, + 3, + 409, + 204, + 0, + 789, + 76, + 1, + 0, + 0, + 0, + 790, + 791, + 3, + 407, + 203, + 0, + 791, + 792, + 3, + 409, + 204, + 0, + 792, + 793, + 3, + 411, + 205, + 0, + 793, + 794, + 3, + 401, + 200, + 0, + 794, + 795, + 3, + 441, + 220, + 0, + 795, + 796, + 3, + 423, + 211, + 0, + 796, + 797, + 3, + 439, + 219, + 0, + 797, + 78, + 1, + 0, + 0, + 0, + 798, + 799, + 3, + 407, + 203, + 0, + 799, + 800, + 3, + 409, + 204, + 0, + 800, + 801, + 3, + 423, + 211, + 0, + 801, + 802, + 3, + 401, + 200, + 0, + 802, + 803, + 3, + 449, + 224, + 0, + 803, + 80, + 1, + 0, + 0, + 0, + 804, + 805, + 3, + 407, + 203, + 0, + 805, + 806, + 3, + 409, + 204, + 0, + 806, + 807, + 3, + 423, + 211, + 0, + 807, + 808, + 3, + 409, + 204, + 0, + 808, + 809, + 3, + 439, + 219, + 0, + 809, + 810, + 3, + 409, + 204, + 0, + 810, + 82, + 1, + 0, + 0, + 0, + 811, + 812, + 3, + 407, + 203, + 0, + 812, + 813, + 3, + 409, + 204, + 0, + 813, + 814, + 3, + 437, + 218, + 0, + 814, + 815, + 3, + 405, + 202, + 0, + 815, + 84, + 1, + 0, + 0, + 0, + 816, + 817, + 3, + 407, + 203, + 0, + 817, + 818, + 3, + 409, + 204, + 0, + 818, + 819, + 3, + 437, + 218, + 0, + 819, + 820, + 3, + 405, + 202, + 0, + 820, + 821, + 3, + 409, + 204, + 0, + 821, + 822, + 3, + 427, + 213, + 0, + 822, + 823, + 3, + 407, + 203, + 0, + 823, + 824, + 3, + 417, + 208, + 0, + 824, + 825, + 3, + 427, + 213, + 0, + 825, + 826, + 3, + 413, + 206, + 0, + 826, + 86, + 1, + 0, + 0, + 0, + 827, + 828, + 3, + 407, + 203, + 0, + 828, + 829, + 3, + 409, + 204, + 0, + 829, + 830, + 3, + 437, + 218, + 0, + 830, + 831, + 3, + 405, + 202, + 0, + 831, + 832, + 3, + 435, + 217, + 0, + 832, + 833, + 3, + 417, + 208, + 0, + 833, + 834, + 3, + 403, + 201, + 0, + 834, + 835, + 3, + 409, + 204, + 0, + 835, + 88, + 1, + 0, + 0, + 0, + 836, + 837, + 3, + 407, + 203, + 0, + 837, + 838, + 3, + 409, + 204, + 0, + 838, + 839, + 3, + 439, + 219, + 0, + 839, + 840, + 3, + 401, + 200, + 0, + 840, + 841, + 3, + 405, + 202, + 0, + 841, + 842, + 3, + 415, + 207, + 0, + 842, + 90, + 1, + 0, + 0, + 0, + 843, + 844, + 3, + 407, + 203, + 0, + 844, + 845, + 3, + 417, + 208, + 0, + 845, + 846, + 3, + 405, + 202, + 0, + 846, + 847, + 3, + 439, + 219, + 0, + 847, + 848, + 3, + 417, + 208, + 0, + 848, + 849, + 3, + 429, + 214, + 0, + 849, + 850, + 3, + 427, + 213, + 0, + 850, + 851, + 3, + 401, + 200, + 0, + 851, + 852, + 3, + 435, + 217, + 0, + 852, + 853, + 3, + 417, + 208, + 0, + 853, + 854, + 3, + 409, + 204, + 0, + 854, + 855, + 3, + 437, + 218, + 0, + 855, + 92, + 1, + 0, + 0, + 0, + 856, + 857, + 3, + 407, + 203, + 0, + 857, + 858, + 3, + 417, + 208, + 0, + 858, + 859, + 3, + 405, + 202, + 0, + 859, + 860, + 3, + 439, + 219, + 0, + 860, + 861, + 3, + 417, + 208, + 0, + 861, + 862, + 3, + 429, + 214, + 0, + 862, + 863, + 3, + 427, + 213, + 0, + 863, + 864, + 3, + 401, + 200, + 0, + 864, + 865, + 3, + 435, + 217, + 0, + 865, + 866, + 3, + 449, + 224, + 0, + 866, + 94, + 1, + 0, + 0, + 0, + 867, + 868, + 3, + 407, + 203, + 0, + 868, + 869, + 3, + 417, + 208, + 0, + 869, + 870, + 3, + 437, + 218, + 0, + 870, + 871, + 3, + 421, + 210, + 0, + 871, + 96, + 1, + 0, + 0, + 0, + 872, + 873, + 3, + 407, + 203, + 0, + 873, + 874, + 3, + 417, + 208, + 0, + 874, + 875, + 3, + 437, + 218, + 0, + 875, + 876, + 3, + 439, + 219, + 0, + 876, + 877, + 3, + 417, + 208, + 0, + 877, + 878, + 3, + 427, + 213, + 0, + 878, + 879, + 3, + 405, + 202, + 0, + 879, + 880, + 3, + 439, + 219, + 0, + 880, + 98, + 1, + 0, + 0, + 0, + 881, + 882, + 3, + 407, + 203, + 0, + 882, + 883, + 3, + 417, + 208, + 0, + 883, + 884, + 3, + 437, + 218, + 0, + 884, + 885, + 3, + 439, + 219, + 0, + 885, + 886, + 3, + 435, + 217, + 0, + 886, + 887, + 3, + 417, + 208, + 0, + 887, + 888, + 3, + 403, + 201, + 0, + 888, + 889, + 3, + 441, + 220, + 0, + 889, + 890, + 3, + 439, + 219, + 0, + 890, + 891, + 3, + 409, + 204, + 0, + 891, + 892, + 3, + 407, + 203, + 0, + 892, + 100, + 1, + 0, + 0, + 0, + 893, + 894, + 3, + 407, + 203, + 0, + 894, + 895, + 3, + 435, + 217, + 0, + 895, + 896, + 3, + 429, + 214, + 0, + 896, + 897, + 3, + 431, + 215, + 0, + 897, + 102, + 1, + 0, + 0, + 0, + 898, + 899, + 3, + 409, + 204, + 0, + 899, + 900, + 3, + 423, + 211, + 0, + 900, + 901, + 3, + 437, + 218, + 0, + 901, + 902, + 3, + 409, + 204, + 0, + 902, + 104, + 1, + 0, + 0, + 0, + 903, + 904, + 3, + 409, + 204, + 0, + 904, + 905, + 3, + 427, + 213, + 0, + 905, + 906, + 3, + 407, + 203, + 0, + 906, + 106, + 1, + 0, + 0, + 0, + 907, + 908, + 3, + 409, + 204, + 0, + 908, + 909, + 3, + 427, + 213, + 0, + 909, + 910, + 3, + 413, + 206, + 0, + 910, + 911, + 3, + 417, + 208, + 0, + 911, + 912, + 3, + 427, + 213, + 0, + 912, + 913, + 3, + 409, + 204, + 0, + 913, + 108, + 1, + 0, + 0, + 0, + 914, + 915, + 3, + 409, + 204, + 0, + 915, + 916, + 3, + 443, + 221, + 0, + 916, + 917, + 3, + 409, + 204, + 0, + 917, + 918, + 3, + 427, + 213, + 0, + 918, + 919, + 3, + 439, + 219, + 0, + 919, + 920, + 3, + 437, + 218, + 0, + 920, + 110, + 1, + 0, + 0, + 0, + 921, + 922, + 3, + 409, + 204, + 0, + 922, + 923, + 3, + 447, + 223, + 0, + 923, + 924, + 3, + 417, + 208, + 0, + 924, + 925, + 3, + 437, + 218, + 0, + 925, + 926, + 3, + 439, + 219, + 0, + 926, + 927, + 3, + 437, + 218, + 0, + 927, + 112, + 1, + 0, + 0, + 0, + 928, + 929, + 3, + 409, + 204, + 0, + 929, + 930, + 3, + 447, + 223, + 0, + 930, + 931, + 3, + 431, + 215, + 0, + 931, + 932, + 3, + 423, + 211, + 0, + 932, + 933, + 3, + 401, + 200, + 0, + 933, + 934, + 3, + 417, + 208, + 0, + 934, + 935, + 3, + 427, + 213, + 0, + 935, + 114, + 1, + 0, + 0, + 0, + 936, + 937, + 3, + 409, + 204, + 0, + 937, + 938, + 3, + 447, + 223, + 0, + 938, + 939, + 3, + 431, + 215, + 0, + 939, + 940, + 3, + 435, + 217, + 0, + 940, + 941, + 3, + 409, + 204, + 0, + 941, + 942, + 3, + 437, + 218, + 0, + 942, + 943, + 3, + 437, + 218, + 0, + 943, + 944, + 3, + 417, + 208, + 0, + 944, + 945, + 3, + 429, + 214, + 0, + 945, + 946, + 3, + 427, + 213, + 0, + 946, + 116, + 1, + 0, + 0, + 0, + 947, + 948, + 3, + 409, + 204, + 0, + 948, + 949, + 3, + 447, + 223, + 0, + 949, + 950, + 3, + 439, + 219, + 0, + 950, + 951, + 3, + 435, + 217, + 0, + 951, + 952, + 3, + 401, + 200, + 0, + 952, + 953, + 3, + 405, + 202, + 0, + 953, + 954, + 3, + 439, + 219, + 0, + 954, + 118, + 1, + 0, + 0, + 0, + 955, + 956, + 3, + 411, + 205, + 0, + 956, + 957, + 3, + 409, + 204, + 0, + 957, + 958, + 3, + 439, + 219, + 0, + 958, + 959, + 3, + 405, + 202, + 0, + 959, + 960, + 3, + 415, + 207, + 0, + 960, + 961, + 3, + 409, + 204, + 0, + 961, + 962, + 3, + 437, + 218, + 0, + 962, + 120, + 1, + 0, + 0, + 0, + 963, + 964, + 3, + 411, + 205, + 0, + 964, + 965, + 3, + 417, + 208, + 0, + 965, + 966, + 3, + 427, + 213, + 0, + 966, + 967, + 3, + 401, + 200, + 0, + 967, + 968, + 3, + 423, + 211, + 0, + 968, + 122, + 1, + 0, + 0, + 0, + 969, + 970, + 3, + 411, + 205, + 0, + 970, + 971, + 3, + 417, + 208, + 0, + 971, + 972, + 3, + 435, + 217, + 0, + 972, + 973, + 3, + 437, + 218, + 0, + 973, + 974, + 3, + 439, + 219, + 0, + 974, + 124, + 1, + 0, + 0, + 0, + 975, + 976, + 3, + 411, + 205, + 0, + 976, + 977, + 3, + 423, + 211, + 0, + 977, + 978, + 3, + 441, + 220, + 0, + 978, + 979, + 3, + 437, + 218, + 0, + 979, + 980, + 3, + 415, + 207, + 0, + 980, + 126, + 1, + 0, + 0, + 0, + 981, + 982, + 3, + 411, + 205, + 0, + 982, + 983, + 3, + 429, + 214, + 0, + 983, + 984, + 3, + 423, + 211, + 0, + 984, + 985, + 3, + 423, + 211, + 0, + 985, + 986, + 3, + 429, + 214, + 0, + 986, + 987, + 3, + 445, + 222, + 0, + 987, + 988, + 3, + 417, + 208, + 0, + 988, + 989, + 3, + 427, + 213, + 0, + 989, + 990, + 3, + 413, + 206, + 0, + 990, + 128, + 1, + 0, + 0, + 0, + 991, + 992, + 3, + 411, + 205, + 0, + 992, + 993, + 3, + 429, + 214, + 0, + 993, + 994, + 3, + 435, + 217, + 0, + 994, + 130, + 1, + 0, + 0, + 0, + 995, + 996, + 3, + 411, + 205, + 0, + 996, + 997, + 3, + 429, + 214, + 0, + 997, + 998, + 3, + 435, + 217, + 0, + 998, + 999, + 3, + 425, + 212, + 0, + 999, + 1000, + 3, + 401, + 200, + 0, + 1000, + 1001, + 3, + 439, + 219, + 0, + 1001, + 132, + 1, + 0, + 0, + 0, + 1002, + 1003, + 3, + 411, + 205, + 0, + 1003, + 1004, + 3, + 435, + 217, + 0, + 1004, + 1005, + 3, + 409, + 204, + 0, + 1005, + 1006, + 3, + 409, + 204, + 0, + 1006, + 1007, + 3, + 451, + 225, + 0, + 1007, + 1008, + 3, + 409, + 204, + 0, + 1008, + 134, + 1, + 0, + 0, + 0, + 1009, + 1010, + 3, + 411, + 205, + 0, + 1010, + 1011, + 3, + 435, + 217, + 0, + 1011, + 1012, + 3, + 429, + 214, + 0, + 1012, + 1013, + 3, + 425, + 212, + 0, + 1013, + 136, + 1, + 0, + 0, + 0, + 1014, + 1015, + 3, + 411, + 205, + 0, + 1015, + 1016, + 3, + 441, + 220, + 0, + 1016, + 1017, + 3, + 423, + 211, + 0, + 1017, + 1018, + 3, + 423, + 211, + 0, + 1018, + 138, + 1, + 0, + 0, + 0, + 1019, + 1020, + 3, + 411, + 205, + 0, + 1020, + 1021, + 3, + 441, + 220, + 0, + 1021, + 1022, + 3, + 427, + 213, + 0, + 1022, + 1023, + 3, + 405, + 202, + 0, + 1023, + 1024, + 3, + 439, + 219, + 0, + 1024, + 1025, + 3, + 417, + 208, + 0, + 1025, + 1026, + 3, + 429, + 214, + 0, + 1026, + 1027, + 3, + 427, + 213, + 0, + 1027, + 140, + 1, + 0, + 0, + 0, + 1028, + 1029, + 3, + 413, + 206, + 0, + 1029, + 1030, + 3, + 423, + 211, + 0, + 1030, + 1031, + 3, + 429, + 214, + 0, + 1031, + 1032, + 3, + 403, + 201, + 0, + 1032, + 1033, + 3, + 401, + 200, + 0, + 1033, + 1034, + 3, + 423, + 211, + 0, + 1034, + 142, + 1, + 0, + 0, + 0, + 1035, + 1036, + 3, + 413, + 206, + 0, + 1036, + 1037, + 3, + 435, + 217, + 0, + 1037, + 1038, + 3, + 401, + 200, + 0, + 1038, + 1039, + 3, + 427, + 213, + 0, + 1039, + 1040, + 3, + 441, + 220, + 0, + 1040, + 1041, + 3, + 423, + 211, + 0, + 1041, + 1042, + 3, + 401, + 200, + 0, + 1042, + 1043, + 3, + 435, + 217, + 0, + 1043, + 1044, + 3, + 417, + 208, + 0, + 1044, + 1045, + 3, + 439, + 219, + 0, + 1045, + 1046, + 3, + 449, + 224, + 0, + 1046, + 144, + 1, + 0, + 0, + 0, + 1047, + 1048, + 3, + 413, + 206, + 0, + 1048, + 1049, + 3, + 435, + 217, + 0, + 1049, + 1050, + 3, + 429, + 214, + 0, + 1050, + 1051, + 3, + 441, + 220, + 0, + 1051, + 1052, + 3, + 431, + 215, + 0, + 1052, + 146, + 1, + 0, + 0, + 0, + 1053, + 1054, + 3, + 415, + 207, + 0, + 1054, + 1055, + 3, + 401, + 200, + 0, + 1055, + 1056, + 3, + 443, + 221, + 0, + 1056, + 1057, + 3, + 417, + 208, + 0, + 1057, + 1058, + 3, + 427, + 213, + 0, + 1058, + 1059, + 3, + 413, + 206, + 0, + 1059, + 148, + 1, + 0, + 0, + 0, + 1060, + 1061, + 3, + 415, + 207, + 0, + 1061, + 1062, + 3, + 417, + 208, + 0, + 1062, + 1063, + 3, + 409, + 204, + 0, + 1063, + 1064, + 3, + 435, + 217, + 0, + 1064, + 1065, + 3, + 401, + 200, + 0, + 1065, + 1066, + 3, + 435, + 217, + 0, + 1066, + 1067, + 3, + 405, + 202, + 0, + 1067, + 1068, + 3, + 415, + 207, + 0, + 1068, + 1069, + 3, + 417, + 208, + 0, + 1069, + 1070, + 3, + 405, + 202, + 0, + 1070, + 1071, + 3, + 401, + 200, + 0, + 1071, + 1072, + 3, + 423, + 211, + 0, + 1072, + 150, + 1, + 0, + 0, + 0, + 1073, + 1074, + 3, + 415, + 207, + 0, + 1074, + 1075, + 3, + 429, + 214, + 0, + 1075, + 1076, + 3, + 441, + 220, + 0, + 1076, + 1077, + 3, + 435, + 217, + 0, + 1077, + 152, + 1, + 0, + 0, + 0, + 1078, + 1079, + 3, + 417, + 208, + 0, + 1079, + 1080, + 3, + 407, + 203, + 0, + 1080, + 154, + 1, + 0, + 0, + 0, + 1081, + 1082, + 3, + 417, + 208, + 0, + 1082, + 1083, + 3, + 411, + 205, + 0, + 1083, + 156, + 1, + 0, + 0, + 0, + 1084, + 1085, + 3, + 417, + 208, + 0, + 1085, + 1086, + 3, + 423, + 211, + 0, + 1086, + 1087, + 3, + 417, + 208, + 0, + 1087, + 1088, + 3, + 421, + 210, + 0, + 1088, + 1089, + 3, + 409, + 204, + 0, + 1089, + 158, + 1, + 0, + 0, + 0, + 1090, + 1091, + 3, + 417, + 208, + 0, + 1091, + 1092, + 3, + 427, + 213, + 0, + 1092, + 160, + 1, + 0, + 0, + 0, + 1093, + 1094, + 3, + 417, + 208, + 0, + 1094, + 1095, + 3, + 427, + 213, + 0, + 1095, + 1096, + 3, + 407, + 203, + 0, + 1096, + 1097, + 3, + 409, + 204, + 0, + 1097, + 1098, + 3, + 447, + 223, + 0, + 1098, + 162, + 1, + 0, + 0, + 0, + 1099, + 1100, + 3, + 417, + 208, + 0, + 1100, + 1101, + 3, + 427, + 213, + 0, + 1101, + 1102, + 3, + 411, + 205, + 0, + 1102, + 1113, + 1, + 0, + 0, + 0, + 1103, + 1104, + 3, + 417, + 208, + 0, + 1104, + 1105, + 3, + 427, + 213, + 0, + 1105, + 1106, + 3, + 411, + 205, + 0, + 1106, + 1107, + 3, + 417, + 208, + 0, + 1107, + 1108, + 3, + 427, + 213, + 0, + 1108, + 1109, + 3, + 417, + 208, + 0, + 1109, + 1110, + 3, + 439, + 219, + 0, + 1110, + 1111, + 3, + 449, + 224, + 0, + 1111, + 1113, + 1, + 0, + 0, + 0, + 1112, + 1099, + 1, + 0, + 0, + 0, + 1112, + 1103, + 1, + 0, + 0, + 0, + 1113, + 164, + 1, + 0, + 0, + 0, + 1114, + 1115, + 3, + 417, + 208, + 0, + 1115, + 1116, + 3, + 427, + 213, + 0, + 1116, + 1117, + 3, + 419, + 209, + 0, + 1117, + 1118, + 3, + 409, + 204, + 0, + 1118, + 1119, + 3, + 405, + 202, + 0, + 1119, + 1120, + 3, + 439, + 219, + 0, + 1120, + 1121, + 3, + 417, + 208, + 0, + 1121, + 1122, + 3, + 443, + 221, + 0, + 1122, + 1123, + 3, + 409, + 204, + 0, + 1123, + 166, + 1, + 0, + 0, + 0, + 1124, + 1125, + 3, + 417, + 208, + 0, + 1125, + 1126, + 3, + 427, + 213, + 0, + 1126, + 1127, + 3, + 427, + 213, + 0, + 1127, + 1128, + 3, + 409, + 204, + 0, + 1128, + 1129, + 3, + 435, + 217, + 0, + 1129, + 168, + 1, + 0, + 0, + 0, + 1130, + 1131, + 3, + 417, + 208, + 0, + 1131, + 1132, + 3, + 427, + 213, + 0, + 1132, + 1133, + 3, + 437, + 218, + 0, + 1133, + 1134, + 3, + 409, + 204, + 0, + 1134, + 1135, + 3, + 435, + 217, + 0, + 1135, + 1136, + 3, + 439, + 219, + 0, + 1136, + 170, + 1, + 0, + 0, + 0, + 1137, + 1138, + 3, + 417, + 208, + 0, + 1138, + 1139, + 3, + 427, + 213, + 0, + 1139, + 1140, + 3, + 439, + 219, + 0, + 1140, + 1141, + 3, + 409, + 204, + 0, + 1141, + 1142, + 3, + 435, + 217, + 0, + 1142, + 1143, + 3, + 443, + 221, + 0, + 1143, + 1144, + 3, + 401, + 200, + 0, + 1144, + 1145, + 3, + 423, + 211, + 0, + 1145, + 172, + 1, + 0, + 0, + 0, + 1146, + 1147, + 3, + 417, + 208, + 0, + 1147, + 1148, + 3, + 427, + 213, + 0, + 1148, + 1149, + 3, + 439, + 219, + 0, + 1149, + 1150, + 3, + 429, + 214, + 0, + 1150, + 174, + 1, + 0, + 0, + 0, + 1151, + 1152, + 3, + 417, + 208, + 0, + 1152, + 1153, + 3, + 437, + 218, + 0, + 1153, + 176, + 1, + 0, + 0, + 0, + 1154, + 1155, + 3, + 417, + 208, + 0, + 1155, + 1156, + 3, + 437, + 218, + 0, + 1156, + 1157, + 3, + 537, + 268, + 0, + 1157, + 1158, + 3, + 429, + 214, + 0, + 1158, + 1159, + 3, + 403, + 201, + 0, + 1159, + 1160, + 3, + 419, + 209, + 0, + 1160, + 1161, + 3, + 409, + 204, + 0, + 1161, + 1162, + 3, + 405, + 202, + 0, + 1162, + 1163, + 3, + 439, + 219, + 0, + 1163, + 1164, + 3, + 537, + 268, + 0, + 1164, + 1165, + 3, + 417, + 208, + 0, + 1165, + 1166, + 3, + 407, + 203, + 0, + 1166, + 178, + 1, + 0, + 0, + 0, + 1167, + 1168, + 3, + 419, + 209, + 0, + 1168, + 1169, + 3, + 429, + 214, + 0, + 1169, + 1170, + 3, + 417, + 208, + 0, + 1170, + 1171, + 3, + 427, + 213, + 0, + 1171, + 180, + 1, + 0, + 0, + 0, + 1172, + 1173, + 3, + 421, + 210, + 0, + 1173, + 1174, + 3, + 409, + 204, + 0, + 1174, + 1175, + 3, + 449, + 224, + 0, + 1175, + 182, + 1, + 0, + 0, + 0, + 1176, + 1177, + 3, + 421, + 210, + 0, + 1177, + 1178, + 3, + 417, + 208, + 0, + 1178, + 1179, + 3, + 423, + 211, + 0, + 1179, + 1180, + 3, + 423, + 211, + 0, + 1180, + 184, + 1, + 0, + 0, + 0, + 1181, + 1182, + 3, + 423, + 211, + 0, + 1182, + 1183, + 3, + 401, + 200, + 0, + 1183, + 1184, + 3, + 437, + 218, + 0, + 1184, + 1185, + 3, + 439, + 219, + 0, + 1185, + 186, + 1, + 0, + 0, + 0, + 1186, + 1187, + 3, + 423, + 211, + 0, + 1187, + 1188, + 3, + 401, + 200, + 0, + 1188, + 1189, + 3, + 449, + 224, + 0, + 1189, + 1190, + 3, + 429, + 214, + 0, + 1190, + 1191, + 3, + 441, + 220, + 0, + 1191, + 1192, + 3, + 439, + 219, + 0, + 1192, + 188, + 1, + 0, + 0, + 0, + 1193, + 1194, + 3, + 423, + 211, + 0, + 1194, + 1195, + 3, + 409, + 204, + 0, + 1195, + 1196, + 3, + 401, + 200, + 0, + 1196, + 1197, + 3, + 407, + 203, + 0, + 1197, + 1198, + 3, + 417, + 208, + 0, + 1198, + 1199, + 3, + 427, + 213, + 0, + 1199, + 1200, + 3, + 413, + 206, + 0, + 1200, + 190, + 1, + 0, + 0, + 0, + 1201, + 1202, + 3, + 423, + 211, + 0, + 1202, + 1203, + 3, + 409, + 204, + 0, + 1203, + 1204, + 3, + 411, + 205, + 0, + 1204, + 1205, + 3, + 439, + 219, + 0, + 1205, + 192, + 1, + 0, + 0, + 0, + 1206, + 1207, + 3, + 423, + 211, + 0, + 1207, + 1208, + 3, + 417, + 208, + 0, + 1208, + 1209, + 3, + 411, + 205, + 0, + 1209, + 1210, + 3, + 409, + 204, + 0, + 1210, + 1211, + 3, + 439, + 219, + 0, + 1211, + 1212, + 3, + 417, + 208, + 0, + 1212, + 1213, + 3, + 425, + 212, + 0, + 1213, + 1214, + 3, + 409, + 204, + 0, + 1214, + 194, + 1, + 0, + 0, + 0, + 1215, + 1216, + 3, + 423, + 211, + 0, + 1216, + 1217, + 3, + 417, + 208, + 0, + 1217, + 1218, + 3, + 421, + 210, + 0, + 1218, + 1219, + 3, + 409, + 204, + 0, + 1219, + 196, + 1, + 0, + 0, + 0, + 1220, + 1221, + 3, + 423, + 211, + 0, + 1221, + 1222, + 3, + 417, + 208, + 0, + 1222, + 1223, + 3, + 425, + 212, + 0, + 1223, + 1224, + 3, + 417, + 208, + 0, + 1224, + 1225, + 3, + 439, + 219, + 0, + 1225, + 198, + 1, + 0, + 0, + 0, + 1226, + 1227, + 3, + 423, + 211, + 0, + 1227, + 1228, + 3, + 417, + 208, + 0, + 1228, + 1229, + 3, + 443, + 221, + 0, + 1229, + 1230, + 3, + 409, + 204, + 0, + 1230, + 200, + 1, + 0, + 0, + 0, + 1231, + 1232, + 3, + 423, + 211, + 0, + 1232, + 1233, + 3, + 429, + 214, + 0, + 1233, + 1234, + 3, + 405, + 202, + 0, + 1234, + 1235, + 3, + 401, + 200, + 0, + 1235, + 1236, + 3, + 423, + 211, + 0, + 1236, + 202, + 1, + 0, + 0, + 0, + 1237, + 1238, + 3, + 423, + 211, + 0, + 1238, + 1239, + 3, + 429, + 214, + 0, + 1239, + 1240, + 3, + 413, + 206, + 0, + 1240, + 1241, + 3, + 437, + 218, + 0, + 1241, + 204, + 1, + 0, + 0, + 0, + 1242, + 1243, + 3, + 425, + 212, + 0, + 1243, + 1244, + 3, + 401, + 200, + 0, + 1244, + 1245, + 3, + 439, + 219, + 0, + 1245, + 1246, + 3, + 409, + 204, + 0, + 1246, + 1247, + 3, + 435, + 217, + 0, + 1247, + 1248, + 3, + 417, + 208, + 0, + 1248, + 1249, + 3, + 401, + 200, + 0, + 1249, + 1250, + 3, + 423, + 211, + 0, + 1250, + 1251, + 3, + 417, + 208, + 0, + 1251, + 1252, + 3, + 451, + 225, + 0, + 1252, + 1253, + 3, + 409, + 204, + 0, + 1253, + 206, + 1, + 0, + 0, + 0, + 1254, + 1255, + 3, + 425, + 212, + 0, + 1255, + 1256, + 3, + 401, + 200, + 0, + 1256, + 1257, + 3, + 439, + 219, + 0, + 1257, + 1258, + 3, + 409, + 204, + 0, + 1258, + 1259, + 3, + 435, + 217, + 0, + 1259, + 1260, + 3, + 417, + 208, + 0, + 1260, + 1261, + 3, + 401, + 200, + 0, + 1261, + 1262, + 3, + 423, + 211, + 0, + 1262, + 1263, + 3, + 417, + 208, + 0, + 1263, + 1264, + 3, + 451, + 225, + 0, + 1264, + 1265, + 3, + 409, + 204, + 0, + 1265, + 1266, + 3, + 407, + 203, + 0, + 1266, + 208, + 1, + 0, + 0, + 0, + 1267, + 1268, + 3, + 425, + 212, + 0, + 1268, + 1269, + 3, + 401, + 200, + 0, + 1269, + 1270, + 3, + 447, + 223, + 0, + 1270, + 210, + 1, + 0, + 0, + 0, + 1271, + 1272, + 3, + 425, + 212, + 0, + 1272, + 1273, + 3, + 409, + 204, + 0, + 1273, + 1274, + 3, + 435, + 217, + 0, + 1274, + 1275, + 3, + 413, + 206, + 0, + 1275, + 1276, + 3, + 409, + 204, + 0, + 1276, + 1277, + 3, + 437, + 218, + 0, + 1277, + 212, + 1, + 0, + 0, + 0, + 1278, + 1279, + 3, + 425, + 212, + 0, + 1279, + 1280, + 3, + 417, + 208, + 0, + 1280, + 1281, + 3, + 427, + 213, + 0, + 1281, + 214, + 1, + 0, + 0, + 0, + 1282, + 1283, + 3, + 425, + 212, + 0, + 1283, + 1284, + 3, + 417, + 208, + 0, + 1284, + 1285, + 3, + 427, + 213, + 0, + 1285, + 1286, + 3, + 441, + 220, + 0, + 1286, + 1287, + 3, + 439, + 219, + 0, + 1287, + 1288, + 3, + 409, + 204, + 0, + 1288, + 216, + 1, + 0, + 0, + 0, + 1289, + 1290, + 3, + 425, + 212, + 0, + 1290, + 1291, + 3, + 429, + 214, + 0, + 1291, + 1292, + 3, + 407, + 203, + 0, + 1292, + 1293, + 3, + 417, + 208, + 0, + 1293, + 1294, + 3, + 411, + 205, + 0, + 1294, + 1295, + 3, + 449, + 224, + 0, + 1295, + 218, + 1, + 0, + 0, + 0, + 1296, + 1297, + 3, + 425, + 212, + 0, + 1297, + 1298, + 3, + 429, + 214, + 0, + 1298, + 1299, + 3, + 427, + 213, + 0, + 1299, + 1300, + 3, + 439, + 219, + 0, + 1300, + 1301, + 3, + 415, + 207, + 0, + 1301, + 220, + 1, + 0, + 0, + 0, + 1302, + 1303, + 3, + 425, + 212, + 0, + 1303, + 1304, + 3, + 429, + 214, + 0, + 1304, + 1305, + 3, + 443, + 221, + 0, + 1305, + 1306, + 3, + 409, + 204, + 0, + 1306, + 222, + 1, + 0, + 0, + 0, + 1307, + 1308, + 3, + 425, + 212, + 0, + 1308, + 1309, + 3, + 441, + 220, + 0, + 1309, + 1310, + 3, + 439, + 219, + 0, + 1310, + 1311, + 3, + 401, + 200, + 0, + 1311, + 1312, + 3, + 439, + 219, + 0, + 1312, + 1313, + 3, + 417, + 208, + 0, + 1313, + 1314, + 3, + 429, + 214, + 0, + 1314, + 1315, + 3, + 427, + 213, + 0, + 1315, + 224, + 1, + 0, + 0, + 0, + 1316, + 1317, + 3, + 427, + 213, + 0, + 1317, + 1318, + 3, + 401, + 200, + 0, + 1318, + 1319, + 3, + 427, + 213, + 0, + 1319, + 226, + 1, + 0, + 0, + 0, + 1320, + 1321, + 3, + 427, + 213, + 0, + 1321, + 1322, + 3, + 429, + 214, + 0, + 1322, + 228, + 1, + 0, + 0, + 0, + 1323, + 1324, + 3, + 427, + 213, + 0, + 1324, + 1325, + 3, + 429, + 214, + 0, + 1325, + 1326, + 3, + 439, + 219, + 0, + 1326, + 230, + 1, + 0, + 0, + 0, + 1327, + 1328, + 3, + 427, + 213, + 0, + 1328, + 1329, + 3, + 441, + 220, + 0, + 1329, + 1330, + 3, + 423, + 211, + 0, + 1330, + 1331, + 3, + 423, + 211, + 0, + 1331, + 232, + 1, + 0, + 0, + 0, + 1332, + 1333, + 3, + 427, + 213, + 0, + 1333, + 1334, + 3, + 441, + 220, + 0, + 1334, + 1335, + 3, + 423, + 211, + 0, + 1335, + 1336, + 3, + 423, + 211, + 0, + 1336, + 1337, + 3, + 437, + 218, + 0, + 1337, + 234, + 1, + 0, + 0, + 0, + 1338, + 1339, + 3, + 429, + 214, + 0, + 1339, + 1340, + 3, + 411, + 205, + 0, + 1340, + 1341, + 3, + 411, + 205, + 0, + 1341, + 1342, + 3, + 437, + 218, + 0, + 1342, + 1343, + 3, + 409, + 204, + 0, + 1343, + 1344, + 3, + 439, + 219, + 0, + 1344, + 236, + 1, + 0, + 0, + 0, + 1345, + 1346, + 3, + 429, + 214, + 0, + 1346, + 1347, + 3, + 427, + 213, + 0, + 1347, + 238, + 1, + 0, + 0, + 0, + 1348, + 1349, + 3, + 429, + 214, + 0, + 1349, + 1350, + 3, + 431, + 215, + 0, + 1350, + 1351, + 3, + 439, + 219, + 0, + 1351, + 1352, + 3, + 417, + 208, + 0, + 1352, + 1353, + 3, + 425, + 212, + 0, + 1353, + 1354, + 3, + 417, + 208, + 0, + 1354, + 1355, + 3, + 451, + 225, + 0, + 1355, + 1356, + 3, + 409, + 204, + 0, + 1356, + 240, + 1, + 0, + 0, + 0, + 1357, + 1358, + 3, + 429, + 214, + 0, + 1358, + 1359, + 3, + 435, + 217, + 0, + 1359, + 242, + 1, + 0, + 0, + 0, + 1360, + 1361, + 3, + 429, + 214, + 0, + 1361, + 1362, + 3, + 435, + 217, + 0, + 1362, + 1363, + 3, + 407, + 203, + 0, + 1363, + 1364, + 3, + 409, + 204, + 0, + 1364, + 1365, + 3, + 435, + 217, + 0, + 1365, + 244, + 1, + 0, + 0, + 0, + 1366, + 1367, + 3, + 429, + 214, + 0, + 1367, + 1368, + 3, + 441, + 220, + 0, + 1368, + 1369, + 3, + 439, + 219, + 0, + 1369, + 1370, + 3, + 409, + 204, + 0, + 1370, + 1371, + 3, + 435, + 217, + 0, + 1371, + 246, + 1, + 0, + 0, + 0, + 1372, + 1373, + 3, + 429, + 214, + 0, + 1373, + 1374, + 3, + 441, + 220, + 0, + 1374, + 1375, + 3, + 439, + 219, + 0, + 1375, + 1376, + 3, + 411, + 205, + 0, + 1376, + 1377, + 3, + 417, + 208, + 0, + 1377, + 1378, + 3, + 423, + 211, + 0, + 1378, + 1379, + 3, + 409, + 204, + 0, + 1379, + 248, + 1, + 0, + 0, + 0, + 1380, + 1381, + 3, + 429, + 214, + 0, + 1381, + 1382, + 3, + 443, + 221, + 0, + 1382, + 1383, + 3, + 409, + 204, + 0, + 1383, + 1384, + 3, + 435, + 217, + 0, + 1384, + 250, + 1, + 0, + 0, + 0, + 1385, + 1386, + 3, + 431, + 215, + 0, + 1386, + 1387, + 3, + 401, + 200, + 0, + 1387, + 1388, + 3, + 435, + 217, + 0, + 1388, + 1389, + 3, + 439, + 219, + 0, + 1389, + 1390, + 3, + 417, + 208, + 0, + 1390, + 1391, + 3, + 439, + 219, + 0, + 1391, + 1392, + 3, + 417, + 208, + 0, + 1392, + 1393, + 3, + 429, + 214, + 0, + 1393, + 1394, + 3, + 427, + 213, + 0, + 1394, + 252, + 1, + 0, + 0, + 0, + 1395, + 1396, + 3, + 431, + 215, + 0, + 1396, + 1397, + 3, + 429, + 214, + 0, + 1397, + 1398, + 3, + 431, + 215, + 0, + 1398, + 1399, + 3, + 441, + 220, + 0, + 1399, + 1400, + 3, + 423, + 211, + 0, + 1400, + 1401, + 3, + 401, + 200, + 0, + 1401, + 1402, + 3, + 439, + 219, + 0, + 1402, + 1403, + 3, + 409, + 204, + 0, + 1403, + 254, + 1, + 0, + 0, + 0, + 1404, + 1405, + 3, + 431, + 215, + 0, + 1405, + 1406, + 3, + 435, + 217, + 0, + 1406, + 1407, + 3, + 409, + 204, + 0, + 1407, + 1408, + 3, + 405, + 202, + 0, + 1408, + 1409, + 3, + 409, + 204, + 0, + 1409, + 1410, + 3, + 407, + 203, + 0, + 1410, + 1411, + 3, + 417, + 208, + 0, + 1411, + 1412, + 3, + 427, + 213, + 0, + 1412, + 1413, + 3, + 413, + 206, + 0, + 1413, + 256, + 1, + 0, + 0, + 0, + 1414, + 1415, + 3, + 431, + 215, + 0, + 1415, + 1416, + 3, + 435, + 217, + 0, + 1416, + 1417, + 3, + 409, + 204, + 0, + 1417, + 1418, + 3, + 445, + 222, + 0, + 1418, + 1419, + 3, + 415, + 207, + 0, + 1419, + 1420, + 3, + 409, + 204, + 0, + 1420, + 1421, + 3, + 435, + 217, + 0, + 1421, + 1422, + 3, + 409, + 204, + 0, + 1422, + 258, + 1, + 0, + 0, + 0, + 1423, + 1424, + 3, + 431, + 215, + 0, + 1424, + 1425, + 3, + 435, + 217, + 0, + 1425, + 1426, + 3, + 417, + 208, + 0, + 1426, + 1427, + 3, + 425, + 212, + 0, + 1427, + 1428, + 3, + 401, + 200, + 0, + 1428, + 1429, + 3, + 435, + 217, + 0, + 1429, + 1430, + 3, + 449, + 224, + 0, + 1430, + 260, + 1, + 0, + 0, + 0, + 1431, + 1432, + 3, + 431, + 215, + 0, + 1432, + 1433, + 3, + 435, + 217, + 0, + 1433, + 1434, + 3, + 429, + 214, + 0, + 1434, + 1435, + 3, + 419, + 209, + 0, + 1435, + 1436, + 3, + 409, + 204, + 0, + 1436, + 1437, + 3, + 405, + 202, + 0, + 1437, + 1438, + 3, + 439, + 219, + 0, + 1438, + 1439, + 3, + 417, + 208, + 0, + 1439, + 1440, + 3, + 429, + 214, + 0, + 1440, + 1441, + 3, + 427, + 213, + 0, + 1441, + 262, + 1, + 0, + 0, + 0, + 1442, + 1443, + 3, + 433, + 216, + 0, + 1443, + 1444, + 3, + 441, + 220, + 0, + 1444, + 1445, + 3, + 401, + 200, + 0, + 1445, + 1446, + 3, + 435, + 217, + 0, + 1446, + 1447, + 3, + 439, + 219, + 0, + 1447, + 1448, + 3, + 409, + 204, + 0, + 1448, + 1449, + 3, + 435, + 217, + 0, + 1449, + 264, + 1, + 0, + 0, + 0, + 1450, + 1451, + 3, + 435, + 217, + 0, + 1451, + 1452, + 3, + 401, + 200, + 0, + 1452, + 1453, + 3, + 427, + 213, + 0, + 1453, + 1454, + 3, + 413, + 206, + 0, + 1454, + 1455, + 3, + 409, + 204, + 0, + 1455, + 266, + 1, + 0, + 0, + 0, + 1456, + 1457, + 3, + 435, + 217, + 0, + 1457, + 1458, + 3, + 409, + 204, + 0, + 1458, + 1459, + 3, + 423, + 211, + 0, + 1459, + 1460, + 3, + 429, + 214, + 0, + 1460, + 1461, + 3, + 401, + 200, + 0, + 1461, + 1462, + 3, + 407, + 203, + 0, + 1462, + 268, + 1, + 0, + 0, + 0, + 1463, + 1464, + 3, + 435, + 217, + 0, + 1464, + 1465, + 3, + 409, + 204, + 0, + 1465, + 1466, + 3, + 425, + 212, + 0, + 1466, + 1467, + 3, + 429, + 214, + 0, + 1467, + 1468, + 3, + 443, + 221, + 0, + 1468, + 1469, + 3, + 409, + 204, + 0, + 1469, + 270, + 1, + 0, + 0, + 0, + 1470, + 1471, + 3, + 435, + 217, + 0, + 1471, + 1472, + 3, + 409, + 204, + 0, + 1472, + 1473, + 3, + 427, + 213, + 0, + 1473, + 1474, + 3, + 401, + 200, + 0, + 1474, + 1475, + 3, + 425, + 212, + 0, + 1475, + 1476, + 3, + 409, + 204, + 0, + 1476, + 272, + 1, + 0, + 0, + 0, + 1477, + 1478, + 3, + 435, + 217, + 0, + 1478, + 1479, + 3, + 409, + 204, + 0, + 1479, + 1480, + 3, + 431, + 215, + 0, + 1480, + 1481, + 3, + 423, + 211, + 0, + 1481, + 1482, + 3, + 401, + 200, + 0, + 1482, + 1483, + 3, + 405, + 202, + 0, + 1483, + 1484, + 3, + 409, + 204, + 0, + 1484, + 274, + 1, + 0, + 0, + 0, + 1485, + 1486, + 3, + 435, + 217, + 0, + 1486, + 1487, + 3, + 409, + 204, + 0, + 1487, + 1488, + 3, + 431, + 215, + 0, + 1488, + 1489, + 3, + 423, + 211, + 0, + 1489, + 1490, + 3, + 417, + 208, + 0, + 1490, + 1491, + 3, + 405, + 202, + 0, + 1491, + 1492, + 3, + 401, + 200, + 0, + 1492, + 276, + 1, + 0, + 0, + 0, + 1493, + 1494, + 3, + 435, + 217, + 0, + 1494, + 1495, + 3, + 409, + 204, + 0, + 1495, + 1496, + 3, + 431, + 215, + 0, + 1496, + 1497, + 3, + 423, + 211, + 0, + 1497, + 1498, + 3, + 417, + 208, + 0, + 1498, + 1499, + 3, + 405, + 202, + 0, + 1499, + 1500, + 3, + 401, + 200, + 0, + 1500, + 1501, + 3, + 439, + 219, + 0, + 1501, + 1502, + 3, + 409, + 204, + 0, + 1502, + 1503, + 3, + 407, + 203, + 0, + 1503, + 278, + 1, + 0, + 0, + 0, + 1504, + 1505, + 3, + 435, + 217, + 0, + 1505, + 1506, + 3, + 417, + 208, + 0, + 1506, + 1507, + 3, + 413, + 206, + 0, + 1507, + 1508, + 3, + 415, + 207, + 0, + 1508, + 1509, + 3, + 439, + 219, + 0, + 1509, + 280, + 1, + 0, + 0, + 0, + 1510, + 1511, + 3, + 435, + 217, + 0, + 1511, + 1512, + 3, + 429, + 214, + 0, + 1512, + 1513, + 3, + 423, + 211, + 0, + 1513, + 1514, + 3, + 423, + 211, + 0, + 1514, + 1515, + 3, + 441, + 220, + 0, + 1515, + 1516, + 3, + 431, + 215, + 0, + 1516, + 282, + 1, + 0, + 0, + 0, + 1517, + 1518, + 3, + 435, + 217, + 0, + 1518, + 1519, + 3, + 429, + 214, + 0, + 1519, + 1520, + 3, + 445, + 222, + 0, + 1520, + 284, + 1, + 0, + 0, + 0, + 1521, + 1522, + 3, + 435, + 217, + 0, + 1522, + 1523, + 3, + 429, + 214, + 0, + 1523, + 1524, + 3, + 445, + 222, + 0, + 1524, + 1525, + 3, + 437, + 218, + 0, + 1525, + 286, + 1, + 0, + 0, + 0, + 1526, + 1527, + 3, + 437, + 218, + 0, + 1527, + 1528, + 3, + 401, + 200, + 0, + 1528, + 1529, + 3, + 425, + 212, + 0, + 1529, + 1530, + 3, + 431, + 215, + 0, + 1530, + 1531, + 3, + 423, + 211, + 0, + 1531, + 1532, + 3, + 409, + 204, + 0, + 1532, + 288, + 1, + 0, + 0, + 0, + 1533, + 1534, + 3, + 437, + 218, + 0, + 1534, + 1535, + 3, + 409, + 204, + 0, + 1535, + 1536, + 3, + 405, + 202, + 0, + 1536, + 1537, + 3, + 429, + 214, + 0, + 1537, + 1538, + 3, + 427, + 213, + 0, + 1538, + 1539, + 3, + 407, + 203, + 0, + 1539, + 290, + 1, + 0, + 0, + 0, + 1540, + 1541, + 3, + 437, + 218, + 0, + 1541, + 1542, + 3, + 409, + 204, + 0, + 1542, + 1543, + 3, + 423, + 211, + 0, + 1543, + 1544, + 3, + 409, + 204, + 0, + 1544, + 1545, + 3, + 405, + 202, + 0, + 1545, + 1546, + 3, + 439, + 219, + 0, + 1546, + 292, + 1, + 0, + 0, + 0, + 1547, + 1548, + 3, + 437, + 218, + 0, + 1548, + 1549, + 3, + 409, + 204, + 0, + 1549, + 1550, + 3, + 425, + 212, + 0, + 1550, + 1551, + 3, + 417, + 208, + 0, + 1551, + 294, + 1, + 0, + 0, + 0, + 1552, + 1553, + 3, + 437, + 218, + 0, + 1553, + 1554, + 3, + 409, + 204, + 0, + 1554, + 1555, + 3, + 427, + 213, + 0, + 1555, + 1556, + 3, + 407, + 203, + 0, + 1556, + 1557, + 3, + 437, + 218, + 0, + 1557, + 296, + 1, + 0, + 0, + 0, + 1558, + 1559, + 3, + 437, + 218, + 0, + 1559, + 1560, + 3, + 409, + 204, + 0, + 1560, + 1561, + 3, + 439, + 219, + 0, + 1561, + 298, + 1, + 0, + 0, + 0, + 1562, + 1563, + 3, + 437, + 218, + 0, + 1563, + 1564, + 3, + 409, + 204, + 0, + 1564, + 1565, + 3, + 439, + 219, + 0, + 1565, + 1566, + 3, + 439, + 219, + 0, + 1566, + 1567, + 3, + 417, + 208, + 0, + 1567, + 1568, + 3, + 427, + 213, + 0, + 1568, + 1569, + 3, + 413, + 206, + 0, + 1569, + 1570, + 3, + 437, + 218, + 0, + 1570, + 300, + 1, + 0, + 0, + 0, + 1571, + 1572, + 3, + 437, + 218, + 0, + 1572, + 1573, + 3, + 415, + 207, + 0, + 1573, + 1574, + 3, + 429, + 214, + 0, + 1574, + 1575, + 3, + 445, + 222, + 0, + 1575, + 302, + 1, + 0, + 0, + 0, + 1576, + 1577, + 3, + 437, + 218, + 0, + 1577, + 1578, + 3, + 429, + 214, + 0, + 1578, + 1579, + 3, + 441, + 220, + 0, + 1579, + 1580, + 3, + 435, + 217, + 0, + 1580, + 1581, + 3, + 405, + 202, + 0, + 1581, + 1582, + 3, + 409, + 204, + 0, + 1582, + 304, + 1, + 0, + 0, + 0, + 1583, + 1584, + 3, + 437, + 218, + 0, + 1584, + 1585, + 3, + 439, + 219, + 0, + 1585, + 1586, + 3, + 401, + 200, + 0, + 1586, + 1587, + 3, + 435, + 217, + 0, + 1587, + 1588, + 3, + 439, + 219, + 0, + 1588, + 306, + 1, + 0, + 0, + 0, + 1589, + 1590, + 3, + 437, + 218, + 0, + 1590, + 1591, + 3, + 439, + 219, + 0, + 1591, + 1592, + 3, + 429, + 214, + 0, + 1592, + 1593, + 3, + 431, + 215, + 0, + 1593, + 308, + 1, + 0, + 0, + 0, + 1594, + 1595, + 3, + 437, + 218, + 0, + 1595, + 1596, + 3, + 441, + 220, + 0, + 1596, + 1597, + 3, + 403, + 201, + 0, + 1597, + 1598, + 3, + 437, + 218, + 0, + 1598, + 1599, + 3, + 439, + 219, + 0, + 1599, + 1600, + 3, + 435, + 217, + 0, + 1600, + 1601, + 3, + 417, + 208, + 0, + 1601, + 1602, + 3, + 427, + 213, + 0, + 1602, + 1603, + 3, + 413, + 206, + 0, + 1603, + 310, + 1, + 0, + 0, + 0, + 1604, + 1605, + 3, + 437, + 218, + 0, + 1605, + 1606, + 3, + 449, + 224, + 0, + 1606, + 1607, + 3, + 427, + 213, + 0, + 1607, + 1608, + 3, + 405, + 202, + 0, + 1608, + 312, + 1, + 0, + 0, + 0, + 1609, + 1610, + 3, + 437, + 218, + 0, + 1610, + 1611, + 3, + 449, + 224, + 0, + 1611, + 1612, + 3, + 427, + 213, + 0, + 1612, + 1613, + 3, + 439, + 219, + 0, + 1613, + 1614, + 3, + 401, + 200, + 0, + 1614, + 1615, + 3, + 447, + 223, + 0, + 1615, + 314, + 1, + 0, + 0, + 0, + 1616, + 1617, + 3, + 437, + 218, + 0, + 1617, + 1618, + 3, + 449, + 224, + 0, + 1618, + 1619, + 3, + 437, + 218, + 0, + 1619, + 1620, + 3, + 439, + 219, + 0, + 1620, + 1621, + 3, + 409, + 204, + 0, + 1621, + 1622, + 3, + 425, + 212, + 0, + 1622, + 316, + 1, + 0, + 0, + 0, + 1623, + 1624, + 3, + 439, + 219, + 0, + 1624, + 1625, + 3, + 401, + 200, + 0, + 1625, + 1626, + 3, + 403, + 201, + 0, + 1626, + 1627, + 3, + 423, + 211, + 0, + 1627, + 1628, + 3, + 409, + 204, + 0, + 1628, + 318, + 1, + 0, + 0, + 0, + 1629, + 1630, + 3, + 439, + 219, + 0, + 1630, + 1631, + 3, + 401, + 200, + 0, + 1631, + 1632, + 3, + 403, + 201, + 0, + 1632, + 1633, + 3, + 423, + 211, + 0, + 1633, + 1634, + 3, + 409, + 204, + 0, + 1634, + 1635, + 3, + 437, + 218, + 0, + 1635, + 320, + 1, + 0, + 0, + 0, + 1636, + 1637, + 3, + 439, + 219, + 0, + 1637, + 1638, + 3, + 409, + 204, + 0, + 1638, + 1639, + 3, + 425, + 212, + 0, + 1639, + 1640, + 3, + 431, + 215, + 0, + 1640, + 1641, + 3, + 429, + 214, + 0, + 1641, + 1642, + 3, + 435, + 217, + 0, + 1642, + 1643, + 3, + 401, + 200, + 0, + 1643, + 1644, + 3, + 435, + 217, + 0, + 1644, + 1645, + 3, + 449, + 224, + 0, + 1645, + 322, + 1, + 0, + 0, + 0, + 1646, + 1647, + 3, + 439, + 219, + 0, + 1647, + 1648, + 3, + 409, + 204, + 0, + 1648, + 1649, + 3, + 437, + 218, + 0, + 1649, + 1650, + 3, + 439, + 219, + 0, + 1650, + 324, + 1, + 0, + 0, + 0, + 1651, + 1652, + 3, + 439, + 219, + 0, + 1652, + 1653, + 3, + 415, + 207, + 0, + 1653, + 1654, + 3, + 409, + 204, + 0, + 1654, + 1655, + 3, + 427, + 213, + 0, + 1655, + 326, + 1, + 0, + 0, + 0, + 1656, + 1657, + 3, + 439, + 219, + 0, + 1657, + 1658, + 3, + 417, + 208, + 0, + 1658, + 1659, + 3, + 409, + 204, + 0, + 1659, + 1660, + 3, + 437, + 218, + 0, + 1660, + 328, + 1, + 0, + 0, + 0, + 1661, + 1662, + 3, + 439, + 219, + 0, + 1662, + 1663, + 3, + 417, + 208, + 0, + 1663, + 1664, + 3, + 425, + 212, + 0, + 1664, + 1665, + 3, + 409, + 204, + 0, + 1665, + 1666, + 3, + 429, + 214, + 0, + 1666, + 1667, + 3, + 441, + 220, + 0, + 1667, + 1668, + 3, + 439, + 219, + 0, + 1668, + 330, + 1, + 0, + 0, + 0, + 1669, + 1670, + 3, + 439, + 219, + 0, + 1670, + 1671, + 3, + 417, + 208, + 0, + 1671, + 1672, + 3, + 425, + 212, + 0, + 1672, + 1673, + 3, + 409, + 204, + 0, + 1673, + 1674, + 3, + 437, + 218, + 0, + 1674, + 1675, + 3, + 439, + 219, + 0, + 1675, + 1676, + 3, + 401, + 200, + 0, + 1676, + 1677, + 3, + 425, + 212, + 0, + 1677, + 1678, + 3, + 431, + 215, + 0, + 1678, + 332, + 1, + 0, + 0, + 0, + 1679, + 1680, + 3, + 439, + 219, + 0, + 1680, + 1681, + 3, + 429, + 214, + 0, + 1681, + 334, + 1, + 0, + 0, + 0, + 1682, + 1683, + 3, + 439, + 219, + 0, + 1683, + 1684, + 3, + 429, + 214, + 0, + 1684, + 1685, + 3, + 431, + 215, + 0, + 1685, + 336, + 1, + 0, + 0, + 0, + 1686, + 1687, + 3, + 439, + 219, + 0, + 1687, + 1688, + 3, + 429, + 214, + 0, + 1688, + 1689, + 3, + 439, + 219, + 0, + 1689, + 1690, + 3, + 401, + 200, + 0, + 1690, + 1691, + 3, + 423, + 211, + 0, + 1691, + 1692, + 3, + 437, + 218, + 0, + 1692, + 338, + 1, + 0, + 0, + 0, + 1693, + 1694, + 3, + 439, + 219, + 0, + 1694, + 1695, + 3, + 435, + 217, + 0, + 1695, + 1696, + 3, + 401, + 200, + 0, + 1696, + 1697, + 3, + 417, + 208, + 0, + 1697, + 1698, + 3, + 423, + 211, + 0, + 1698, + 1699, + 3, + 417, + 208, + 0, + 1699, + 1700, + 3, + 427, + 213, + 0, + 1700, + 1701, + 3, + 413, + 206, + 0, + 1701, + 340, + 1, + 0, + 0, + 0, + 1702, + 1703, + 3, + 439, + 219, + 0, + 1703, + 1704, + 3, + 435, + 217, + 0, + 1704, + 1705, + 3, + 417, + 208, + 0, + 1705, + 1706, + 3, + 425, + 212, + 0, + 1706, + 342, + 1, + 0, + 0, + 0, + 1707, + 1708, + 3, + 439, + 219, + 0, + 1708, + 1709, + 3, + 435, + 217, + 0, + 1709, + 1710, + 3, + 441, + 220, + 0, + 1710, + 1711, + 3, + 427, + 213, + 0, + 1711, + 1712, + 3, + 405, + 202, + 0, + 1712, + 1713, + 3, + 401, + 200, + 0, + 1713, + 1714, + 3, + 439, + 219, + 0, + 1714, + 1715, + 3, + 409, + 204, + 0, + 1715, + 344, + 1, + 0, + 0, + 0, + 1716, + 1717, + 3, + 439, + 219, + 0, + 1717, + 1718, + 3, + 439, + 219, + 0, + 1718, + 1719, + 3, + 423, + 211, + 0, + 1719, + 346, + 1, + 0, + 0, + 0, + 1720, + 1721, + 3, + 439, + 219, + 0, + 1721, + 1722, + 3, + 449, + 224, + 0, + 1722, + 1723, + 3, + 431, + 215, + 0, + 1723, + 1724, + 3, + 409, + 204, + 0, + 1724, + 348, + 1, + 0, + 0, + 0, + 1725, + 1726, + 3, + 441, + 220, + 0, + 1726, + 1727, + 3, + 427, + 213, + 0, + 1727, + 1728, + 3, + 403, + 201, + 0, + 1728, + 1729, + 3, + 429, + 214, + 0, + 1729, + 1730, + 3, + 441, + 220, + 0, + 1730, + 1731, + 3, + 427, + 213, + 0, + 1731, + 1732, + 3, + 407, + 203, + 0, + 1732, + 1733, + 3, + 409, + 204, + 0, + 1733, + 1734, + 3, + 407, + 203, + 0, + 1734, + 350, + 1, + 0, + 0, + 0, + 1735, + 1736, + 3, + 441, + 220, + 0, + 1736, + 1737, + 3, + 427, + 213, + 0, + 1737, + 1738, + 3, + 417, + 208, + 0, + 1738, + 1739, + 3, + 429, + 214, + 0, + 1739, + 1740, + 3, + 427, + 213, + 0, + 1740, + 352, + 1, + 0, + 0, + 0, + 1741, + 1742, + 3, + 441, + 220, + 0, + 1742, + 1743, + 3, + 431, + 215, + 0, + 1743, + 1744, + 3, + 407, + 203, + 0, + 1744, + 1745, + 3, + 401, + 200, + 0, + 1745, + 1746, + 3, + 439, + 219, + 0, + 1746, + 1747, + 3, + 409, + 204, + 0, + 1747, + 354, + 1, + 0, + 0, + 0, + 1748, + 1749, + 3, + 441, + 220, + 0, + 1749, + 1750, + 3, + 437, + 218, + 0, + 1750, + 1751, + 3, + 409, + 204, + 0, + 1751, + 356, + 1, + 0, + 0, + 0, + 1752, + 1753, + 3, + 441, + 220, + 0, + 1753, + 1754, + 3, + 437, + 218, + 0, + 1754, + 1755, + 3, + 417, + 208, + 0, + 1755, + 1756, + 3, + 427, + 213, + 0, + 1756, + 1757, + 3, + 413, + 206, + 0, + 1757, + 358, + 1, + 0, + 0, + 0, + 1758, + 1759, + 3, + 441, + 220, + 0, + 1759, + 1760, + 3, + 441, + 220, + 0, + 1760, + 1761, + 3, + 417, + 208, + 0, + 1761, + 1762, + 3, + 407, + 203, + 0, + 1762, + 360, + 1, + 0, + 0, + 0, + 1763, + 1764, + 3, + 443, + 221, + 0, + 1764, + 1765, + 3, + 401, + 200, + 0, + 1765, + 1766, + 3, + 423, + 211, + 0, + 1766, + 1767, + 3, + 441, + 220, + 0, + 1767, + 1768, + 3, + 409, + 204, + 0, + 1768, + 1769, + 3, + 437, + 218, + 0, + 1769, + 362, + 1, + 0, + 0, + 0, + 1770, + 1771, + 3, + 443, + 221, + 0, + 1771, + 1772, + 3, + 417, + 208, + 0, + 1772, + 1773, + 3, + 409, + 204, + 0, + 1773, + 1774, + 3, + 445, + 222, + 0, + 1774, + 364, + 1, + 0, + 0, + 0, + 1775, + 1776, + 3, + 443, + 221, + 0, + 1776, + 1777, + 3, + 429, + 214, + 0, + 1777, + 1778, + 3, + 423, + 211, + 0, + 1778, + 1779, + 3, + 441, + 220, + 0, + 1779, + 1780, + 3, + 425, + 212, + 0, + 1780, + 1781, + 3, + 409, + 204, + 0, + 1781, + 366, + 1, + 0, + 0, + 0, + 1782, + 1783, + 3, + 445, + 222, + 0, + 1783, + 1784, + 3, + 401, + 200, + 0, + 1784, + 1785, + 3, + 439, + 219, + 0, + 1785, + 1786, + 3, + 405, + 202, + 0, + 1786, + 1787, + 3, + 415, + 207, + 0, + 1787, + 368, + 1, + 0, + 0, + 0, + 1788, + 1789, + 3, + 445, + 222, + 0, + 1789, + 1790, + 3, + 409, + 204, + 0, + 1790, + 1791, + 3, + 409, + 204, + 0, + 1791, + 1792, + 3, + 421, + 210, + 0, + 1792, + 370, + 1, + 0, + 0, + 0, + 1793, + 1794, + 3, + 445, + 222, + 0, + 1794, + 1795, + 3, + 415, + 207, + 0, + 1795, + 1796, + 3, + 409, + 204, + 0, + 1796, + 1797, + 3, + 427, + 213, + 0, + 1797, + 372, + 1, + 0, + 0, + 0, + 1798, + 1799, + 3, + 445, + 222, + 0, + 1799, + 1800, + 3, + 415, + 207, + 0, + 1800, + 1801, + 3, + 409, + 204, + 0, + 1801, + 1802, + 3, + 435, + 217, + 0, + 1802, + 1803, + 3, + 409, + 204, + 0, + 1803, + 374, + 1, + 0, + 0, + 0, + 1804, + 1805, + 3, + 445, + 222, + 0, + 1805, + 1806, + 3, + 417, + 208, + 0, + 1806, + 1807, + 3, + 427, + 213, + 0, + 1807, + 1808, + 3, + 407, + 203, + 0, + 1808, + 1809, + 3, + 429, + 214, + 0, + 1809, + 1810, + 3, + 445, + 222, + 0, + 1810, + 376, + 1, + 0, + 0, + 0, + 1811, + 1812, + 3, + 445, + 222, + 0, + 1812, + 1813, + 3, + 417, + 208, + 0, + 1813, + 1814, + 3, + 439, + 219, + 0, + 1814, + 1815, + 3, + 415, + 207, + 0, + 1815, + 378, + 1, + 0, + 0, + 0, + 1816, + 1817, + 3, + 449, + 224, + 0, + 1817, + 1818, + 3, + 409, + 204, + 0, + 1818, + 1819, + 3, + 401, + 200, + 0, + 1819, + 1820, + 3, + 435, + 217, + 0, + 1820, + 1827, + 1, + 0, + 0, + 0, + 1821, + 1822, + 3, + 449, + 224, + 0, + 1822, + 1823, + 3, + 449, + 224, + 0, + 1823, + 1824, + 3, + 449, + 224, + 0, + 1824, + 1825, + 3, + 449, + 224, + 0, + 1825, + 1827, + 1, + 0, + 0, + 0, + 1826, + 1816, + 1, + 0, + 0, + 0, + 1826, + 1821, + 1, + 0, + 0, + 0, + 1827, + 380, + 1, + 0, + 0, + 0, + 1828, + 1829, + 5, + 102, + 0, + 0, + 1829, + 1830, + 5, + 97, + 0, + 0, + 1830, + 1831, + 5, + 108, + 0, + 0, + 1831, + 1832, + 5, + 115, + 0, + 0, + 1832, + 1833, + 5, + 101, + 0, + 0, + 1833, + 382, + 1, + 0, + 0, + 0, + 1834, + 1835, + 5, + 116, + 0, + 0, + 1835, + 1836, + 5, + 114, + 0, + 0, + 1836, + 1837, + 5, + 117, + 0, + 0, + 1837, + 1838, + 5, + 101, + 0, + 0, + 1838, + 384, + 1, + 0, + 0, + 0, + 1839, + 1840, + 3, + 467, + 233, + 0, + 1840, + 1841, + 3, + 403, + 201, + 0, + 1841, + 1870, + 1, + 0, + 0, + 0, + 1842, + 1843, + 3, + 467, + 233, + 0, + 1843, + 1844, + 3, + 411, + 205, + 0, + 1844, + 1870, + 1, + 0, + 0, + 0, + 1845, + 1846, + 3, + 467, + 233, + 0, + 1846, + 1847, + 3, + 435, + 217, + 0, + 1847, + 1870, + 1, + 0, + 0, + 0, + 1848, + 1849, + 3, + 467, + 233, + 0, + 1849, + 1850, + 3, + 427, + 213, + 0, + 1850, + 1870, + 1, + 0, + 0, + 0, + 1851, + 1852, + 3, + 467, + 233, + 0, + 1852, + 1853, + 3, + 439, + 219, + 0, + 1853, + 1870, + 1, + 0, + 0, + 0, + 1854, + 1855, + 3, + 467, + 233, + 0, + 1855, + 1856, + 5, + 48, + 0, + 0, + 1856, + 1870, + 1, + 0, + 0, + 0, + 1857, + 1858, + 3, + 467, + 233, + 0, + 1858, + 1859, + 3, + 401, + 200, + 0, + 1859, + 1870, + 1, + 0, + 0, + 0, + 1860, + 1861, + 3, + 467, + 233, + 0, + 1861, + 1862, + 3, + 443, + 221, + 0, + 1862, + 1870, + 1, + 0, + 0, + 0, + 1863, + 1864, + 3, + 467, + 233, + 0, + 1864, + 1865, + 3, + 467, + 233, + 0, + 1865, + 1870, + 1, + 0, + 0, + 0, + 1866, + 1867, + 3, + 467, + 233, + 0, + 1867, + 1868, + 3, + 521, + 260, + 0, + 1868, + 1870, + 1, + 0, + 0, + 0, + 1869, + 1839, + 1, + 0, + 0, + 0, + 1869, + 1842, + 1, + 0, + 0, + 0, + 1869, + 1845, + 1, + 0, + 0, + 0, + 1869, + 1848, + 1, + 0, + 0, + 0, + 1869, + 1851, + 1, + 0, + 0, + 0, + 1869, + 1854, + 1, + 0, + 0, + 0, + 1869, + 1857, + 1, + 0, + 0, + 0, + 1869, + 1860, + 1, + 0, + 0, + 0, + 1869, + 1863, + 1, + 0, + 0, + 0, + 1869, + 1866, + 1, + 0, + 0, + 0, + 1870, + 386, + 1, + 0, + 0, + 0, + 1871, + 1875, + 3, + 453, + 226, + 0, + 1872, + 1875, + 3, + 537, + 268, + 0, + 1873, + 1875, + 3, + 477, + 238, + 0, + 1874, + 1871, + 1, + 0, + 0, + 0, + 1874, + 1872, + 1, + 0, + 0, + 0, + 1874, + 1873, + 1, + 0, + 0, + 0, + 1875, + 1882, + 1, + 0, + 0, + 0, + 1876, + 1881, + 3, + 453, + 226, + 0, + 1877, + 1881, + 3, + 537, + 268, + 0, + 1878, + 1881, + 3, + 457, + 228, + 0, + 1879, + 1881, + 3, + 477, + 238, + 0, + 1880, + 1876, + 1, + 0, + 0, + 0, + 1880, + 1877, + 1, + 0, + 0, + 0, + 1880, + 1878, + 1, + 0, + 0, + 0, + 1880, + 1879, + 1, + 0, + 0, + 0, + 1881, + 1884, + 1, + 0, + 0, + 0, + 1882, + 1880, + 1, + 0, + 0, + 0, + 1882, + 1883, + 1, + 0, + 0, + 0, + 1883, + 1912, + 1, + 0, + 0, + 0, + 1884, + 1882, + 1, + 0, + 0, + 0, + 1885, + 1893, + 3, + 465, + 232, + 0, + 1886, + 1892, + 8, + 0, + 0, + 0, + 1887, + 1892, + 3, + 385, + 192, + 0, + 1888, + 1889, + 3, + 465, + 232, + 0, + 1889, + 1890, + 3, + 465, + 232, + 0, + 1890, + 1892, + 1, + 0, + 0, + 0, + 1891, + 1886, + 1, + 0, + 0, + 0, + 1891, + 1887, + 1, + 0, + 0, + 0, + 1891, + 1888, + 1, + 0, + 0, + 0, + 1892, + 1895, + 1, + 0, + 0, + 0, + 1893, + 1891, + 1, + 0, + 0, + 0, + 1893, + 1894, + 1, + 0, + 0, + 0, + 1894, + 1896, + 1, + 0, + 0, + 0, + 1895, + 1893, + 1, + 0, + 0, + 0, + 1896, + 1897, + 3, + 465, + 232, + 0, + 1897, + 1912, + 1, + 0, + 0, + 0, + 1898, + 1906, + 3, + 519, + 259, + 0, + 1899, + 1905, + 8, + 1, + 0, + 0, + 1900, + 1905, + 3, + 385, + 192, + 0, + 1901, + 1902, + 3, + 519, + 259, + 0, + 1902, + 1903, + 3, + 519, + 259, + 0, + 1903, + 1905, + 1, + 0, + 0, + 0, + 1904, + 1899, + 1, + 0, + 0, + 0, + 1904, + 1900, + 1, + 0, + 0, + 0, + 1904, + 1901, + 1, + 0, + 0, + 0, + 1905, + 1908, + 1, + 0, + 0, + 0, + 1906, + 1904, + 1, + 0, + 0, + 0, + 1906, + 1907, + 1, + 0, + 0, + 0, + 1907, + 1909, + 1, + 0, + 0, + 0, + 1908, + 1906, + 1, + 0, + 0, + 0, + 1909, + 1910, + 3, + 519, + 259, + 0, + 1910, + 1912, + 1, + 0, + 0, + 0, + 1911, + 1874, + 1, + 0, + 0, + 0, + 1911, + 1885, + 1, + 0, + 0, + 0, + 1911, + 1898, + 1, + 0, + 0, + 0, + 1912, + 388, + 1, + 0, + 0, + 0, + 1913, + 1914, + 3, + 395, + 197, + 0, + 1914, + 1918, + 3, + 479, + 239, + 0, + 1915, + 1917, + 3, + 459, + 229, + 0, + 1916, + 1915, + 1, + 0, + 0, + 0, + 1917, + 1920, + 1, + 0, + 0, + 0, + 1918, + 1916, + 1, + 0, + 0, + 0, + 1918, + 1919, + 1, + 0, + 0, + 0, + 1919, + 1923, + 1, + 0, + 0, + 0, + 1920, + 1918, + 1, + 0, + 0, + 0, + 1921, + 1924, + 3, + 431, + 215, + 0, + 1922, + 1924, + 3, + 409, + 204, + 0, + 1923, + 1921, + 1, + 0, + 0, + 0, + 1923, + 1922, + 1, + 0, + 0, + 0, + 1924, + 1927, + 1, + 0, + 0, + 0, + 1925, + 1928, + 3, + 515, + 257, + 0, + 1926, + 1928, + 3, + 475, + 237, + 0, + 1927, + 1925, + 1, + 0, + 0, + 0, + 1927, + 1926, + 1, + 0, + 0, + 0, + 1927, + 1928, + 1, + 0, + 0, + 0, + 1928, + 1930, + 1, + 0, + 0, + 0, + 1929, + 1931, + 3, + 457, + 228, + 0, + 1930, + 1929, + 1, + 0, + 0, + 0, + 1931, + 1932, + 1, + 0, + 0, + 0, + 1932, + 1930, + 1, + 0, + 0, + 0, + 1932, + 1933, + 1, + 0, + 0, + 0, + 1933, + 1990, + 1, + 0, + 0, + 0, + 1934, + 1937, + 3, + 395, + 197, + 0, + 1935, + 1938, + 3, + 431, + 215, + 0, + 1936, + 1938, + 3, + 409, + 204, + 0, + 1937, + 1935, + 1, + 0, + 0, + 0, + 1937, + 1936, + 1, + 0, + 0, + 0, + 1938, + 1941, + 1, + 0, + 0, + 0, + 1939, + 1942, + 3, + 515, + 257, + 0, + 1940, + 1942, + 3, + 475, + 237, + 0, + 1941, + 1939, + 1, + 0, + 0, + 0, + 1941, + 1940, + 1, + 0, + 0, + 0, + 1941, + 1942, + 1, + 0, + 0, + 0, + 1942, + 1944, + 1, + 0, + 0, + 0, + 1943, + 1945, + 3, + 457, + 228, + 0, + 1944, + 1943, + 1, + 0, + 0, + 0, + 1945, + 1946, + 1, + 0, + 0, + 0, + 1946, + 1944, + 1, + 0, + 0, + 0, + 1946, + 1947, + 1, + 0, + 0, + 0, + 1947, + 1990, + 1, + 0, + 0, + 0, + 1948, + 1949, + 3, + 393, + 196, + 0, + 1949, + 1953, + 3, + 479, + 239, + 0, + 1950, + 1952, + 3, + 457, + 228, + 0, + 1951, + 1950, + 1, + 0, + 0, + 0, + 1952, + 1955, + 1, + 0, + 0, + 0, + 1953, + 1951, + 1, + 0, + 0, + 0, + 1953, + 1954, + 1, + 0, + 0, + 0, + 1954, + 1956, + 1, + 0, + 0, + 0, + 1955, + 1953, + 1, + 0, + 0, + 0, + 1956, + 1959, + 3, + 409, + 204, + 0, + 1957, + 1960, + 3, + 515, + 257, + 0, + 1958, + 1960, + 3, + 475, + 237, + 0, + 1959, + 1957, + 1, + 0, + 0, + 0, + 1959, + 1958, + 1, + 0, + 0, + 0, + 1959, + 1960, + 1, + 0, + 0, + 0, + 1960, + 1962, + 1, + 0, + 0, + 0, + 1961, + 1963, + 3, + 457, + 228, + 0, + 1962, + 1961, + 1, + 0, + 0, + 0, + 1963, + 1964, + 1, + 0, + 0, + 0, + 1964, + 1962, + 1, + 0, + 0, + 0, + 1964, + 1965, + 1, + 0, + 0, + 0, + 1965, + 1990, + 1, + 0, + 0, + 0, + 1966, + 1967, + 3, + 479, + 239, + 0, + 1967, + 1968, + 3, + 393, + 196, + 0, + 1968, + 1971, + 3, + 409, + 204, + 0, + 1969, + 1972, + 3, + 515, + 257, + 0, + 1970, + 1972, + 3, + 475, + 237, + 0, + 1971, + 1969, + 1, + 0, + 0, + 0, + 1971, + 1970, + 1, + 0, + 0, + 0, + 1971, + 1972, + 1, + 0, + 0, + 0, + 1972, + 1974, + 1, + 0, + 0, + 0, + 1973, + 1975, + 3, + 457, + 228, + 0, + 1974, + 1973, + 1, + 0, + 0, + 0, + 1975, + 1976, + 1, + 0, + 0, + 0, + 1976, + 1974, + 1, + 0, + 0, + 0, + 1976, + 1977, + 1, + 0, + 0, + 0, + 1977, + 1990, + 1, + 0, + 0, + 0, + 1978, + 1979, + 3, + 393, + 196, + 0, + 1979, + 1982, + 3, + 409, + 204, + 0, + 1980, + 1983, + 3, + 515, + 257, + 0, + 1981, + 1983, + 3, + 475, + 237, + 0, + 1982, + 1980, + 1, + 0, + 0, + 0, + 1982, + 1981, + 1, + 0, + 0, + 0, + 1982, + 1983, + 1, + 0, + 0, + 0, + 1983, + 1985, + 1, + 0, + 0, + 0, + 1984, + 1986, + 3, + 457, + 228, + 0, + 1985, + 1984, + 1, + 0, + 0, + 0, + 1986, + 1987, + 1, + 0, + 0, + 0, + 1987, + 1985, + 1, + 0, + 0, + 0, + 1987, + 1988, + 1, + 0, + 0, + 0, + 1988, + 1990, + 1, + 0, + 0, + 0, + 1989, + 1913, + 1, + 0, + 0, + 0, + 1989, + 1934, + 1, + 0, + 0, + 0, + 1989, + 1948, + 1, + 0, + 0, + 0, + 1989, + 1966, + 1, + 0, + 0, + 0, + 1989, + 1978, + 1, + 0, + 0, + 0, + 1990, + 390, + 1, + 0, + 0, + 0, + 1991, + 1993, + 5, + 48, + 0, + 0, + 1992, + 1994, + 3, + 455, + 227, + 0, + 1993, + 1992, + 1, + 0, + 0, + 0, + 1994, + 1995, + 1, + 0, + 0, + 0, + 1995, + 1993, + 1, + 0, + 0, + 0, + 1995, + 1996, + 1, + 0, + 0, + 0, + 1996, + 392, + 1, + 0, + 0, + 0, + 1997, + 1999, + 3, + 457, + 228, + 0, + 1998, + 1997, + 1, + 0, + 0, + 0, + 1999, + 2000, + 1, + 0, + 0, + 0, + 2000, + 1998, + 1, + 0, + 0, + 0, + 2000, + 2001, + 1, + 0, + 0, + 0, + 2001, + 394, + 1, + 0, + 0, + 0, + 2002, + 2003, + 5, + 48, + 0, + 0, + 2003, + 2005, + 3, + 447, + 223, + 0, + 2004, + 2006, + 3, + 459, + 229, + 0, + 2005, + 2004, + 1, + 0, + 0, + 0, + 2006, + 2007, + 1, + 0, + 0, + 0, + 2007, + 2005, + 1, + 0, + 0, + 0, + 2007, + 2008, + 1, + 0, + 0, + 0, + 2008, + 396, + 1, + 0, + 0, + 0, + 2009, + 2017, + 3, + 521, + 260, + 0, + 2010, + 2016, + 8, + 2, + 0, + 0, + 2011, + 2016, + 3, + 385, + 192, + 0, + 2012, + 2013, + 3, + 521, + 260, + 0, + 2013, + 2014, + 3, + 521, + 260, + 0, + 2014, + 2016, + 1, + 0, + 0, + 0, + 2015, + 2010, + 1, + 0, + 0, + 0, + 2015, + 2011, + 1, + 0, + 0, + 0, + 2015, + 2012, + 1, + 0, + 0, + 0, + 2016, + 2019, + 1, + 0, + 0, + 0, + 2017, + 2015, + 1, + 0, + 0, + 0, + 2017, + 2018, + 1, + 0, + 0, + 0, + 2018, + 2020, + 1, + 0, + 0, + 0, + 2019, + 2017, + 1, + 0, + 0, + 0, + 2020, + 2021, + 3, + 521, + 260, + 0, + 2021, + 398, + 1, + 0, + 0, + 0, + 2022, + 2030, + 3, + 495, + 247, + 0, + 2023, + 2029, + 8, + 3, + 0, + 0, + 2024, + 2029, + 3, + 385, + 192, + 0, + 2025, + 2026, + 3, + 495, + 247, + 0, + 2026, + 2027, + 3, + 495, + 247, + 0, + 2027, + 2029, + 1, + 0, + 0, + 0, + 2028, + 2023, + 1, + 0, + 0, + 0, + 2028, + 2024, + 1, + 0, + 0, + 0, + 2028, + 2025, + 1, + 0, + 0, + 0, + 2029, + 2032, + 1, + 0, + 0, + 0, + 2030, + 2028, + 1, + 0, + 0, + 0, + 2030, + 2031, + 1, + 0, + 0, + 0, + 2031, + 2033, + 1, + 0, + 0, + 0, + 2032, + 2030, + 1, + 0, + 0, + 0, + 2033, + 2034, + 3, + 527, + 263, + 0, + 2034, + 400, + 1, + 0, + 0, + 0, + 2035, + 2036, + 7, + 4, + 0, + 0, + 2036, + 402, + 1, + 0, + 0, + 0, + 2037, + 2038, + 7, + 5, + 0, + 0, + 2038, + 404, + 1, + 0, + 0, + 0, + 2039, + 2040, + 7, + 6, + 0, + 0, + 2040, + 406, + 1, + 0, + 0, + 0, + 2041, + 2042, + 7, + 7, + 0, + 0, + 2042, + 408, + 1, + 0, + 0, + 0, + 2043, + 2044, + 7, + 8, + 0, + 0, + 2044, + 410, + 1, + 0, + 0, + 0, + 2045, + 2046, + 7, + 9, + 0, + 0, + 2046, + 412, + 1, + 0, + 0, + 0, + 2047, + 2048, + 7, + 10, + 0, + 0, + 2048, + 414, + 1, + 0, + 0, + 0, + 2049, + 2050, + 7, + 11, + 0, + 0, + 2050, + 416, + 1, + 0, + 0, + 0, + 2051, + 2052, + 7, + 12, + 0, + 0, + 2052, + 418, + 1, + 0, + 0, + 0, + 2053, + 2054, + 7, + 13, + 0, + 0, + 2054, + 420, + 1, + 0, + 0, + 0, + 2055, + 2056, + 7, + 14, + 0, + 0, + 2056, + 422, + 1, + 0, + 0, + 0, + 2057, + 2058, + 7, + 15, + 0, + 0, + 2058, + 424, + 1, + 0, + 0, + 0, + 2059, + 2060, + 7, + 16, + 0, + 0, + 2060, + 426, + 1, + 0, + 0, + 0, + 2061, + 2062, + 7, + 17, + 0, + 0, + 2062, + 428, + 1, + 0, + 0, + 0, + 2063, + 2064, + 7, + 18, + 0, + 0, + 2064, + 430, + 1, + 0, + 0, + 0, + 2065, + 2066, + 7, + 19, + 0, + 0, + 2066, + 432, + 1, + 0, + 0, + 0, + 2067, + 2068, + 7, + 20, + 0, + 0, + 2068, + 434, + 1, + 0, + 0, + 0, + 2069, + 2070, + 7, + 21, + 0, + 0, + 2070, + 436, + 1, + 0, + 0, + 0, + 2071, + 2072, + 7, + 22, + 0, + 0, + 2072, + 438, + 1, + 0, + 0, + 0, + 2073, + 2074, + 7, + 23, + 0, + 0, + 2074, + 440, + 1, + 0, + 0, + 0, + 2075, + 2076, + 7, + 24, + 0, + 0, + 2076, + 442, + 1, + 0, + 0, + 0, + 2077, + 2078, + 7, + 25, + 0, + 0, + 2078, + 444, + 1, + 0, + 0, + 0, + 2079, + 2080, + 7, + 26, + 0, + 0, + 2080, + 446, + 1, + 0, + 0, + 0, + 2081, + 2082, + 7, + 27, + 0, + 0, + 2082, + 448, + 1, + 0, + 0, + 0, + 2083, + 2084, + 7, + 28, + 0, + 0, + 2084, + 450, + 1, + 0, + 0, + 0, + 2085, + 2086, + 7, + 29, + 0, + 0, + 2086, + 452, + 1, + 0, + 0, + 0, + 2087, + 2088, + 7, + 30, + 0, + 0, + 2088, + 454, + 1, + 0, + 0, + 0, + 2089, + 2090, + 7, + 31, + 0, + 0, + 2090, + 456, + 1, + 0, + 0, + 0, + 2091, + 2092, + 7, + 32, + 0, + 0, + 2092, + 458, + 1, + 0, + 0, + 0, + 2093, + 2094, + 7, + 33, + 0, + 0, + 2094, + 460, + 1, + 0, + 0, + 0, + 2095, + 2096, + 5, + 45, + 0, + 0, + 2096, + 2097, + 5, + 62, + 0, + 0, + 2097, + 462, + 1, + 0, + 0, + 0, + 2098, + 2099, + 5, + 42, + 0, + 0, + 2099, + 464, + 1, + 0, + 0, + 0, + 2100, + 2101, + 5, + 96, + 0, + 0, + 2101, + 466, + 1, + 0, + 0, + 0, + 2102, + 2103, + 5, + 92, + 0, + 0, + 2103, + 468, + 1, + 0, + 0, + 0, + 2104, + 2105, + 5, + 58, + 0, + 0, + 2105, + 470, + 1, + 0, + 0, + 0, + 2106, + 2107, + 5, + 44, + 0, + 0, + 2107, + 472, + 1, + 0, + 0, + 0, + 2108, + 2109, + 5, + 124, + 0, + 0, + 2109, + 2110, + 5, + 124, + 0, + 0, + 2110, + 474, + 1, + 0, + 0, + 0, + 2111, + 2112, + 5, + 45, + 0, + 0, + 2112, + 476, + 1, + 0, + 0, + 0, + 2113, + 2114, + 5, + 36, + 0, + 0, + 2114, + 478, + 1, + 0, + 0, + 0, + 2115, + 2116, + 5, + 46, + 0, + 0, + 2116, + 480, + 1, + 0, + 0, + 0, + 2117, + 2118, + 5, + 61, + 0, + 0, + 2118, + 2119, + 5, + 61, + 0, + 0, + 2119, + 482, + 1, + 0, + 0, + 0, + 2120, + 2121, + 5, + 61, + 0, + 0, + 2121, + 484, + 1, + 0, + 0, + 0, + 2122, + 2123, + 5, + 62, + 0, + 0, + 2123, + 2124, + 5, + 61, + 0, + 0, + 2124, + 486, + 1, + 0, + 0, + 0, + 2125, + 2126, + 5, + 62, + 0, + 0, + 2126, + 488, + 1, + 0, + 0, + 0, + 2127, + 2128, + 5, + 35, + 0, + 0, + 2128, + 490, + 1, + 0, + 0, + 0, + 2129, + 2130, + 5, + 126, + 0, + 0, + 2130, + 2131, + 5, + 42, + 0, + 0, + 2131, + 492, + 1, + 0, + 0, + 0, + 2132, + 2133, + 5, + 61, + 0, + 0, + 2133, + 2134, + 5, + 126, + 0, + 0, + 2134, + 2135, + 5, + 42, + 0, + 0, + 2135, + 494, + 1, + 0, + 0, + 0, + 2136, + 2137, + 5, + 123, + 0, + 0, + 2137, + 496, + 1, + 0, + 0, + 0, + 2138, + 2139, + 5, + 91, + 0, + 0, + 2139, + 498, + 1, + 0, + 0, + 0, + 2140, + 2141, + 5, + 40, + 0, + 0, + 2141, + 500, + 1, + 0, + 0, + 0, + 2142, + 2143, + 5, + 60, + 0, + 0, + 2143, + 2144, + 5, + 61, + 0, + 0, + 2144, + 502, + 1, + 0, + 0, + 0, + 2145, + 2146, + 5, + 60, + 0, + 0, + 2146, + 504, + 1, + 0, + 0, + 0, + 2147, + 2148, + 5, + 33, + 0, + 0, + 2148, + 2152, + 5, + 61, + 0, + 0, + 2149, + 2150, + 5, + 60, + 0, + 0, + 2150, + 2152, + 5, + 62, + 0, + 0, + 2151, + 2147, + 1, + 0, + 0, + 0, + 2151, + 2149, + 1, + 0, + 0, + 0, + 2152, + 506, + 1, + 0, + 0, + 0, + 2153, + 2154, + 5, + 33, + 0, + 0, + 2154, + 2155, + 5, + 126, + 0, + 0, + 2155, + 2156, + 5, + 42, + 0, + 0, + 2156, + 508, + 1, + 0, + 0, + 0, + 2157, + 2158, + 5, + 33, + 0, + 0, + 2158, + 2159, + 5, + 126, + 0, + 0, + 2159, + 510, + 1, + 0, + 0, + 0, + 2160, + 2161, + 5, + 63, + 0, + 0, + 2161, + 2162, + 5, + 63, + 0, + 0, + 2162, + 512, + 1, + 0, + 0, + 0, + 2163, + 2164, + 5, + 37, + 0, + 0, + 2164, + 514, + 1, + 0, + 0, + 0, + 2165, + 2166, + 5, + 43, + 0, + 0, + 2166, + 516, + 1, + 0, + 0, + 0, + 2167, + 2168, + 5, + 63, + 0, + 0, + 2168, + 518, + 1, + 0, + 0, + 0, + 2169, + 2170, + 5, + 34, + 0, + 0, + 2170, + 520, + 1, + 0, + 0, + 0, + 2171, + 2172, + 5, + 39, + 0, + 0, + 2172, + 522, + 1, + 0, + 0, + 0, + 2173, + 2174, + 5, + 126, + 0, + 0, + 2174, + 524, + 1, + 0, + 0, + 0, + 2175, + 2176, + 5, + 61, + 0, + 0, + 2176, + 2177, + 5, + 126, + 0, + 0, + 2177, + 526, + 1, + 0, + 0, + 0, + 2178, + 2179, + 5, + 125, + 0, + 0, + 2179, + 528, + 1, + 0, + 0, + 0, + 2180, + 2181, + 5, + 93, + 0, + 0, + 2181, + 530, + 1, + 0, + 0, + 0, + 2182, + 2183, + 5, + 41, + 0, + 0, + 2183, + 532, + 1, + 0, + 0, + 0, + 2184, + 2185, + 5, + 59, + 0, + 0, + 2185, + 534, + 1, + 0, + 0, + 0, + 2186, + 2187, + 5, + 47, + 0, + 0, + 2187, + 536, + 1, + 0, + 0, + 0, + 2188, + 2189, + 5, + 95, + 0, + 0, + 2189, + 538, + 1, + 0, + 0, + 0, + 2190, + 2191, + 5, + 47, + 0, + 0, + 2191, + 2192, + 5, + 42, + 0, + 0, + 2192, + 2196, + 1, + 0, + 0, + 0, + 2193, + 2195, + 9, + 0, + 0, + 0, + 2194, + 2193, + 1, + 0, + 0, + 0, + 2195, + 2198, + 1, + 0, + 0, + 0, + 2196, + 2197, + 1, + 0, + 0, + 0, + 2196, + 2194, + 1, + 0, + 0, + 0, + 2197, + 2199, + 1, + 0, + 0, + 0, + 2198, + 2196, + 1, + 0, + 0, + 0, + 2199, + 2200, + 5, + 42, + 0, + 0, + 2200, + 2201, + 5, + 47, + 0, + 0, + 2201, + 2202, + 1, + 0, + 0, + 0, + 2202, + 2203, + 6, + 269, + 0, + 0, + 2203, + 540, + 1, + 0, + 0, + 0, + 2204, + 2205, + 5, + 45, + 0, + 0, + 2205, + 2206, + 5, + 45, + 0, + 0, + 2206, + 2210, + 1, + 0, + 0, + 0, + 2207, + 2209, + 8, + 34, + 0, + 0, + 2208, + 2207, + 1, + 0, + 0, + 0, + 2209, + 2212, + 1, + 0, + 0, + 0, + 2210, + 2208, + 1, + 0, + 0, + 0, + 2210, + 2211, + 1, + 0, + 0, + 0, + 2211, + 2214, + 1, + 0, + 0, + 0, + 2212, + 2210, + 1, + 0, + 0, + 0, + 2213, + 2215, + 7, + 35, + 0, + 0, + 2214, + 2213, + 1, + 0, + 0, + 0, + 2215, + 2216, + 1, + 0, + 0, + 0, + 2216, + 2217, + 6, + 270, + 0, + 0, + 2217, + 542, + 1, + 0, + 0, + 0, + 2218, + 2219, + 7, + 36, + 0, + 0, + 2219, + 2220, + 1, + 0, + 0, + 0, + 2220, + 2221, + 6, + 271, + 1, + 0, + 2221, + 544, + 1, + 0, + 0, + 0, + 39, + 0, + 607, + 1112, + 1826, + 1869, + 1874, + 1880, + 1882, + 1891, + 1893, + 1904, + 1906, + 1911, + 1918, + 1923, + 1927, + 1932, + 1937, + 1941, + 1946, + 1953, + 1959, + 1964, + 1971, + 1976, + 1982, + 1987, + 1989, + 1995, + 2000, + 2007, + 2015, + 2017, + 2028, + 2030, + 2151, + 2196, + 2210, + 2214, + 2, + 6, + 0, + 0, + 0, + 1, + 0, ] + class HogQLLexer(Lexer): atn = ATNDeserializer().deserialize(serializedATN()) - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] ADD = 1 AFTER = 2 @@ -1149,112 +19092,580 @@ class HogQLLexer(Lexer): SINGLE_LINE_COMMENT = 241 WHITESPACE = 242 - channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"] - modeNames = [ "DEFAULT_MODE" ] + modeNames = ["DEFAULT_MODE"] - literalNames = [ "", - "'false'", "'true'", "'->'", "'*'", "'`'", "'\\'", "':'", "','", - "'||'", "'-'", "'$'", "'.'", "'=='", "'='", "'>='", "'>'", "'#'", - "'~*'", "'=~*'", "'{'", "'['", "'('", "'<='", "'<'", "'!~*'", - "'!~'", "'??'", "'%'", "'+'", "'?'", "'\"'", "'''", "'~'", "'=~'", - "'}'", "']'", "')'", "';'", "'/'", "'_'" ] + literalNames = [ + "", + "'false'", + "'true'", + "'->'", + "'*'", + "'`'", + "'\\'", + "':'", + "','", + "'||'", + "'-'", + "'$'", + "'.'", + "'=='", + "'='", + "'>='", + "'>'", + "'#'", + "'~*'", + "'=~*'", + "'{'", + "'['", + "'('", + "'<='", + "'<'", + "'!~*'", + "'!~'", + "'??'", + "'%'", + "'+'", + "'?'", + "'\"'", + "'''", + "'~'", + "'=~'", + "'}'", + "']'", + "')'", + "';'", + "'/'", + "'_'", + ] - symbolicNames = [ "", - "ADD", "AFTER", "ALIAS", "ALL", "ALTER", "AND", "ANTI", "ANY", - "ARRAY", "AS", "ASCENDING", "ASOF", "AST", "ASYNC", "ATTACH", - "BETWEEN", "BOTH", "BY", "CASE", "CAST", "CHECK", "CLEAR", "CLUSTER", - "CODEC", "COHORT", "COLLATE", "COLUMN", "COMMENT", "CONSTRAINT", - "CREATE", "CROSS", "CUBE", "CURRENT", "DATABASE", "DATABASES", - "DATE", "DAY", "DEDUPLICATE", "DEFAULT", "DELAY", "DELETE", - "DESC", "DESCENDING", "DESCRIBE", "DETACH", "DICTIONARIES", - "DICTIONARY", "DISK", "DISTINCT", "DISTRIBUTED", "DROP", "ELSE", - "END", "ENGINE", "EVENTS", "EXISTS", "EXPLAIN", "EXPRESSION", - "EXTRACT", "FETCHES", "FINAL", "FIRST", "FLUSH", "FOLLOWING", - "FOR", "FORMAT", "FREEZE", "FROM", "FULL", "FUNCTION", "GLOBAL", - "GRANULARITY", "GROUP", "HAVING", "HIERARCHICAL", "HOUR", "ID", - "IF", "ILIKE", "IN", "INDEX", "INF", "INJECTIVE", "INNER", "INSERT", - "INTERVAL", "INTO", "IS", "IS_OBJECT_ID", "JOIN", "KEY", "KILL", - "LAST", "LAYOUT", "LEADING", "LEFT", "LIFETIME", "LIKE", "LIMIT", - "LIVE", "LOCAL", "LOGS", "MATERIALIZE", "MATERIALIZED", "MAX", - "MERGES", "MIN", "MINUTE", "MODIFY", "MONTH", "MOVE", "MUTATION", - "NAN_SQL", "NO", "NOT", "NULL_SQL", "NULLS", "OFFSET", "ON", - "OPTIMIZE", "OR", "ORDER", "OUTER", "OUTFILE", "OVER", "PARTITION", - "POPULATE", "PRECEDING", "PREWHERE", "PRIMARY", "PROJECTION", - "QUARTER", "RANGE", "RELOAD", "REMOVE", "RENAME", "REPLACE", - "REPLICA", "REPLICATED", "RIGHT", "ROLLUP", "ROW", "ROWS", "SAMPLE", - "SECOND", "SELECT", "SEMI", "SENDS", "SET", "SETTINGS", "SHOW", - "SOURCE", "START", "STOP", "SUBSTRING", "SYNC", "SYNTAX", "SYSTEM", - "TABLE", "TABLES", "TEMPORARY", "TEST", "THEN", "TIES", "TIMEOUT", - "TIMESTAMP", "TO", "TOP", "TOTALS", "TRAILING", "TRIM", "TRUNCATE", - "TTL", "TYPE", "UNBOUNDED", "UNION", "UPDATE", "USE", "USING", - "UUID", "VALUES", "VIEW", "VOLUME", "WATCH", "WEEK", "WHEN", - "WHERE", "WINDOW", "WITH", "YEAR", "JSON_FALSE", "JSON_TRUE", - "ESCAPE_CHAR", "IDENTIFIER", "FLOATING_LITERAL", "OCTAL_LITERAL", - "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "STRING_LITERAL", - "PLACEHOLDER", "ARROW", "ASTERISK", "BACKQUOTE", "BACKSLASH", - "COLON", "COMMA", "CONCAT", "DASH", "DOLLAR", "DOT", "EQ_DOUBLE", - "EQ_SINGLE", "GT_EQ", "GT", "HASH", "IREGEX_SINGLE", "IREGEX_DOUBLE", - "LBRACE", "LBRACKET", "LPAREN", "LT_EQ", "LT", "NOT_EQ", "NOT_IREGEX", - "NOT_REGEX", "NULLISH", "PERCENT", "PLUS", "QUERY", "QUOTE_DOUBLE", - "QUOTE_SINGLE", "REGEX_SINGLE", "REGEX_DOUBLE", "RBRACE", "RBRACKET", - "RPAREN", "SEMICOLON", "SLASH", "UNDERSCORE", "MULTI_LINE_COMMENT", - "SINGLE_LINE_COMMENT", "WHITESPACE" ] + symbolicNames = [ + "", + "ADD", + "AFTER", + "ALIAS", + "ALL", + "ALTER", + "AND", + "ANTI", + "ANY", + "ARRAY", + "AS", + "ASCENDING", + "ASOF", + "AST", + "ASYNC", + "ATTACH", + "BETWEEN", + "BOTH", + "BY", + "CASE", + "CAST", + "CHECK", + "CLEAR", + "CLUSTER", + "CODEC", + "COHORT", + "COLLATE", + "COLUMN", + "COMMENT", + "CONSTRAINT", + "CREATE", + "CROSS", + "CUBE", + "CURRENT", + "DATABASE", + "DATABASES", + "DATE", + "DAY", + "DEDUPLICATE", + "DEFAULT", + "DELAY", + "DELETE", + "DESC", + "DESCENDING", + "DESCRIBE", + "DETACH", + "DICTIONARIES", + "DICTIONARY", + "DISK", + "DISTINCT", + "DISTRIBUTED", + "DROP", + "ELSE", + "END", + "ENGINE", + "EVENTS", + "EXISTS", + "EXPLAIN", + "EXPRESSION", + "EXTRACT", + "FETCHES", + "FINAL", + "FIRST", + "FLUSH", + "FOLLOWING", + "FOR", + "FORMAT", + "FREEZE", + "FROM", + "FULL", + "FUNCTION", + "GLOBAL", + "GRANULARITY", + "GROUP", + "HAVING", + "HIERARCHICAL", + "HOUR", + "ID", + "IF", + "ILIKE", + "IN", + "INDEX", + "INF", + "INJECTIVE", + "INNER", + "INSERT", + "INTERVAL", + "INTO", + "IS", + "IS_OBJECT_ID", + "JOIN", + "KEY", + "KILL", + "LAST", + "LAYOUT", + "LEADING", + "LEFT", + "LIFETIME", + "LIKE", + "LIMIT", + "LIVE", + "LOCAL", + "LOGS", + "MATERIALIZE", + "MATERIALIZED", + "MAX", + "MERGES", + "MIN", + "MINUTE", + "MODIFY", + "MONTH", + "MOVE", + "MUTATION", + "NAN_SQL", + "NO", + "NOT", + "NULL_SQL", + "NULLS", + "OFFSET", + "ON", + "OPTIMIZE", + "OR", + "ORDER", + "OUTER", + "OUTFILE", + "OVER", + "PARTITION", + "POPULATE", + "PRECEDING", + "PREWHERE", + "PRIMARY", + "PROJECTION", + "QUARTER", + "RANGE", + "RELOAD", + "REMOVE", + "RENAME", + "REPLACE", + "REPLICA", + "REPLICATED", + "RIGHT", + "ROLLUP", + "ROW", + "ROWS", + "SAMPLE", + "SECOND", + "SELECT", + "SEMI", + "SENDS", + "SET", + "SETTINGS", + "SHOW", + "SOURCE", + "START", + "STOP", + "SUBSTRING", + "SYNC", + "SYNTAX", + "SYSTEM", + "TABLE", + "TABLES", + "TEMPORARY", + "TEST", + "THEN", + "TIES", + "TIMEOUT", + "TIMESTAMP", + "TO", + "TOP", + "TOTALS", + "TRAILING", + "TRIM", + "TRUNCATE", + "TTL", + "TYPE", + "UNBOUNDED", + "UNION", + "UPDATE", + "USE", + "USING", + "UUID", + "VALUES", + "VIEW", + "VOLUME", + "WATCH", + "WEEK", + "WHEN", + "WHERE", + "WINDOW", + "WITH", + "YEAR", + "JSON_FALSE", + "JSON_TRUE", + "ESCAPE_CHAR", + "IDENTIFIER", + "FLOATING_LITERAL", + "OCTAL_LITERAL", + "DECIMAL_LITERAL", + "HEXADECIMAL_LITERAL", + "STRING_LITERAL", + "PLACEHOLDER", + "ARROW", + "ASTERISK", + "BACKQUOTE", + "BACKSLASH", + "COLON", + "COMMA", + "CONCAT", + "DASH", + "DOLLAR", + "DOT", + "EQ_DOUBLE", + "EQ_SINGLE", + "GT_EQ", + "GT", + "HASH", + "IREGEX_SINGLE", + "IREGEX_DOUBLE", + "LBRACE", + "LBRACKET", + "LPAREN", + "LT_EQ", + "LT", + "NOT_EQ", + "NOT_IREGEX", + "NOT_REGEX", + "NULLISH", + "PERCENT", + "PLUS", + "QUERY", + "QUOTE_DOUBLE", + "QUOTE_SINGLE", + "REGEX_SINGLE", + "REGEX_DOUBLE", + "RBRACE", + "RBRACKET", + "RPAREN", + "SEMICOLON", + "SLASH", + "UNDERSCORE", + "MULTI_LINE_COMMENT", + "SINGLE_LINE_COMMENT", + "WHITESPACE", + ] - ruleNames = [ "ADD", "AFTER", "ALIAS", "ALL", "ALTER", "AND", "ANTI", - "ANY", "ARRAY", "AS", "ASCENDING", "ASOF", "AST", "ASYNC", - "ATTACH", "BETWEEN", "BOTH", "BY", "CASE", "CAST", "CHECK", - "CLEAR", "CLUSTER", "CODEC", "COHORT", "COLLATE", "COLUMN", - "COMMENT", "CONSTRAINT", "CREATE", "CROSS", "CUBE", "CURRENT", - "DATABASE", "DATABASES", "DATE", "DAY", "DEDUPLICATE", - "DEFAULT", "DELAY", "DELETE", "DESC", "DESCENDING", "DESCRIBE", - "DETACH", "DICTIONARIES", "DICTIONARY", "DISK", "DISTINCT", - "DISTRIBUTED", "DROP", "ELSE", "END", "ENGINE", "EVENTS", - "EXISTS", "EXPLAIN", "EXPRESSION", "EXTRACT", "FETCHES", - "FINAL", "FIRST", "FLUSH", "FOLLOWING", "FOR", "FORMAT", - "FREEZE", "FROM", "FULL", "FUNCTION", "GLOBAL", "GRANULARITY", - "GROUP", "HAVING", "HIERARCHICAL", "HOUR", "ID", "IF", - "ILIKE", "IN", "INDEX", "INF", "INJECTIVE", "INNER", "INSERT", - "INTERVAL", "INTO", "IS", "IS_OBJECT_ID", "JOIN", "KEY", - "KILL", "LAST", "LAYOUT", "LEADING", "LEFT", "LIFETIME", - "LIKE", "LIMIT", "LIVE", "LOCAL", "LOGS", "MATERIALIZE", - "MATERIALIZED", "MAX", "MERGES", "MIN", "MINUTE", "MODIFY", - "MONTH", "MOVE", "MUTATION", "NAN_SQL", "NO", "NOT", "NULL_SQL", - "NULLS", "OFFSET", "ON", "OPTIMIZE", "OR", "ORDER", "OUTER", - "OUTFILE", "OVER", "PARTITION", "POPULATE", "PRECEDING", - "PREWHERE", "PRIMARY", "PROJECTION", "QUARTER", "RANGE", - "RELOAD", "REMOVE", "RENAME", "REPLACE", "REPLICA", "REPLICATED", - "RIGHT", "ROLLUP", "ROW", "ROWS", "SAMPLE", "SECOND", - "SELECT", "SEMI", "SENDS", "SET", "SETTINGS", "SHOW", - "SOURCE", "START", "STOP", "SUBSTRING", "SYNC", "SYNTAX", - "SYSTEM", "TABLE", "TABLES", "TEMPORARY", "TEST", "THEN", - "TIES", "TIMEOUT", "TIMESTAMP", "TO", "TOP", "TOTALS", - "TRAILING", "TRIM", "TRUNCATE", "TTL", "TYPE", "UNBOUNDED", - "UNION", "UPDATE", "USE", "USING", "UUID", "VALUES", "VIEW", - "VOLUME", "WATCH", "WEEK", "WHEN", "WHERE", "WINDOW", - "WITH", "YEAR", "JSON_FALSE", "JSON_TRUE", "ESCAPE_CHAR", - "IDENTIFIER", "FLOATING_LITERAL", "OCTAL_LITERAL", "DECIMAL_LITERAL", - "HEXADECIMAL_LITERAL", "STRING_LITERAL", "PLACEHOLDER", - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", - "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", - "W", "X", "Y", "Z", "LETTER", "OCT_DIGIT", "DEC_DIGIT", - "HEX_DIGIT", "ARROW", "ASTERISK", "BACKQUOTE", "BACKSLASH", - "COLON", "COMMA", "CONCAT", "DASH", "DOLLAR", "DOT", "EQ_DOUBLE", - "EQ_SINGLE", "GT_EQ", "GT", "HASH", "IREGEX_SINGLE", "IREGEX_DOUBLE", - "LBRACE", "LBRACKET", "LPAREN", "LT_EQ", "LT", "NOT_EQ", - "NOT_IREGEX", "NOT_REGEX", "NULLISH", "PERCENT", "PLUS", - "QUERY", "QUOTE_DOUBLE", "QUOTE_SINGLE", "REGEX_SINGLE", - "REGEX_DOUBLE", "RBRACE", "RBRACKET", "RPAREN", "SEMICOLON", - "SLASH", "UNDERSCORE", "MULTI_LINE_COMMENT", "SINGLE_LINE_COMMENT", - "WHITESPACE" ] + ruleNames = [ + "ADD", + "AFTER", + "ALIAS", + "ALL", + "ALTER", + "AND", + "ANTI", + "ANY", + "ARRAY", + "AS", + "ASCENDING", + "ASOF", + "AST", + "ASYNC", + "ATTACH", + "BETWEEN", + "BOTH", + "BY", + "CASE", + "CAST", + "CHECK", + "CLEAR", + "CLUSTER", + "CODEC", + "COHORT", + "COLLATE", + "COLUMN", + "COMMENT", + "CONSTRAINT", + "CREATE", + "CROSS", + "CUBE", + "CURRENT", + "DATABASE", + "DATABASES", + "DATE", + "DAY", + "DEDUPLICATE", + "DEFAULT", + "DELAY", + "DELETE", + "DESC", + "DESCENDING", + "DESCRIBE", + "DETACH", + "DICTIONARIES", + "DICTIONARY", + "DISK", + "DISTINCT", + "DISTRIBUTED", + "DROP", + "ELSE", + "END", + "ENGINE", + "EVENTS", + "EXISTS", + "EXPLAIN", + "EXPRESSION", + "EXTRACT", + "FETCHES", + "FINAL", + "FIRST", + "FLUSH", + "FOLLOWING", + "FOR", + "FORMAT", + "FREEZE", + "FROM", + "FULL", + "FUNCTION", + "GLOBAL", + "GRANULARITY", + "GROUP", + "HAVING", + "HIERARCHICAL", + "HOUR", + "ID", + "IF", + "ILIKE", + "IN", + "INDEX", + "INF", + "INJECTIVE", + "INNER", + "INSERT", + "INTERVAL", + "INTO", + "IS", + "IS_OBJECT_ID", + "JOIN", + "KEY", + "KILL", + "LAST", + "LAYOUT", + "LEADING", + "LEFT", + "LIFETIME", + "LIKE", + "LIMIT", + "LIVE", + "LOCAL", + "LOGS", + "MATERIALIZE", + "MATERIALIZED", + "MAX", + "MERGES", + "MIN", + "MINUTE", + "MODIFY", + "MONTH", + "MOVE", + "MUTATION", + "NAN_SQL", + "NO", + "NOT", + "NULL_SQL", + "NULLS", + "OFFSET", + "ON", + "OPTIMIZE", + "OR", + "ORDER", + "OUTER", + "OUTFILE", + "OVER", + "PARTITION", + "POPULATE", + "PRECEDING", + "PREWHERE", + "PRIMARY", + "PROJECTION", + "QUARTER", + "RANGE", + "RELOAD", + "REMOVE", + "RENAME", + "REPLACE", + "REPLICA", + "REPLICATED", + "RIGHT", + "ROLLUP", + "ROW", + "ROWS", + "SAMPLE", + "SECOND", + "SELECT", + "SEMI", + "SENDS", + "SET", + "SETTINGS", + "SHOW", + "SOURCE", + "START", + "STOP", + "SUBSTRING", + "SYNC", + "SYNTAX", + "SYSTEM", + "TABLE", + "TABLES", + "TEMPORARY", + "TEST", + "THEN", + "TIES", + "TIMEOUT", + "TIMESTAMP", + "TO", + "TOP", + "TOTALS", + "TRAILING", + "TRIM", + "TRUNCATE", + "TTL", + "TYPE", + "UNBOUNDED", + "UNION", + "UPDATE", + "USE", + "USING", + "UUID", + "VALUES", + "VIEW", + "VOLUME", + "WATCH", + "WEEK", + "WHEN", + "WHERE", + "WINDOW", + "WITH", + "YEAR", + "JSON_FALSE", + "JSON_TRUE", + "ESCAPE_CHAR", + "IDENTIFIER", + "FLOATING_LITERAL", + "OCTAL_LITERAL", + "DECIMAL_LITERAL", + "HEXADECIMAL_LITERAL", + "STRING_LITERAL", + "PLACEHOLDER", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "LETTER", + "OCT_DIGIT", + "DEC_DIGIT", + "HEX_DIGIT", + "ARROW", + "ASTERISK", + "BACKQUOTE", + "BACKSLASH", + "COLON", + "COMMA", + "CONCAT", + "DASH", + "DOLLAR", + "DOT", + "EQ_DOUBLE", + "EQ_SINGLE", + "GT_EQ", + "GT", + "HASH", + "IREGEX_SINGLE", + "IREGEX_DOUBLE", + "LBRACE", + "LBRACKET", + "LPAREN", + "LT_EQ", + "LT", + "NOT_EQ", + "NOT_IREGEX", + "NOT_REGEX", + "NULLISH", + "PERCENT", + "PLUS", + "QUERY", + "QUOTE_DOUBLE", + "QUOTE_SINGLE", + "REGEX_SINGLE", + "REGEX_DOUBLE", + "RBRACE", + "RBRACKET", + "RPAREN", + "SEMICOLON", + "SLASH", + "UNDERSCORE", + "MULTI_LINE_COMMENT", + "SINGLE_LINE_COMMENT", + "WHITESPACE", + ] grammarFileName = "HogQLLexer.g4" - def __init__(self, input=None, output:TextIO = sys.stdout): + def __init__(self, input=None, output: TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.13.1") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None - - diff --git a/posthog/hogql/grammar/HogQLParser.py b/posthog/hogql/grammar/HogQLParser.py index 7f3b6995ecb50..d8488dfaad76f 100644 --- a/posthog/hogql/grammar/HogQLParser.py +++ b/posthog/hogql/grammar/HogQLParser.py @@ -3,492 +3,9077 @@ from antlr4 import * from io import StringIO import sys + if sys.version_info[1] > 5: - from typing import TextIO + from typing import TextIO else: - from typing.io import TextIO + from typing.io import TextIO + def serializedATN(): return [ - 4,1,242,922,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, - 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, - 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, - 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, - 26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2, - 33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7, - 39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2, - 46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7, - 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,1, - 0,1,0,3,0,121,8,0,1,0,1,0,1,1,1,1,1,1,1,1,5,1,129,8,1,10,1,12,1, - 132,9,1,1,2,1,2,1,2,1,2,1,2,3,2,139,8,2,1,3,3,3,142,8,3,1,3,1,3, - 3,3,146,8,3,1,3,3,3,149,8,3,1,3,1,3,3,3,153,8,3,1,3,3,3,156,8,3, - 1,3,3,3,159,8,3,1,3,3,3,162,8,3,1,3,3,3,165,8,3,1,3,1,3,3,3,169, - 8,3,1,3,1,3,3,3,173,8,3,1,3,3,3,176,8,3,1,3,3,3,179,8,3,1,3,3,3, - 182,8,3,1,3,1,3,3,3,186,8,3,1,3,3,3,189,8,3,1,4,1,4,1,4,1,5,1,5, - 1,5,1,5,3,5,198,8,5,1,6,1,6,1,6,1,7,3,7,204,8,7,1,7,1,7,1,7,1,7, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,223,8,8, - 10,8,12,8,226,9,8,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,11, - 1,11,1,11,1,11,1,11,3,11,242,8,11,1,12,1,12,1,12,1,13,1,13,1,13, - 1,13,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,3,15,259,8,15,1,15, - 1,15,1,15,1,15,3,15,265,8,15,1,15,1,15,1,15,1,15,3,15,271,8,15,1, - 15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,282,8,15,3,15,284, - 8,15,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,3,18,295,8,18, - 1,18,3,18,298,8,18,1,18,1,18,1,18,1,18,3,18,304,8,18,1,18,1,18,1, - 18,1,18,1,18,1,18,3,18,312,8,18,1,18,1,18,1,18,1,18,5,18,318,8,18, - 10,18,12,18,321,9,18,1,19,3,19,324,8,19,1,19,1,19,1,19,3,19,329, - 8,19,1,19,3,19,332,8,19,1,19,3,19,335,8,19,1,19,1,19,3,19,339,8, - 19,1,19,1,19,3,19,343,8,19,1,19,3,19,346,8,19,3,19,348,8,19,1,19, - 3,19,351,8,19,1,19,1,19,3,19,355,8,19,1,19,1,19,3,19,359,8,19,1, - 19,3,19,362,8,19,3,19,364,8,19,3,19,366,8,19,1,20,1,20,1,20,3,20, - 371,8,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,382,8, - 21,1,22,1,22,1,22,1,22,3,22,388,8,22,1,23,1,23,1,23,5,23,393,8,23, - 10,23,12,23,396,9,23,1,24,1,24,3,24,400,8,24,1,24,1,24,3,24,404, - 8,24,1,24,1,24,3,24,408,8,24,1,25,1,25,1,25,1,25,3,25,414,8,25,3, - 25,416,8,25,1,26,1,26,1,26,5,26,421,8,26,10,26,12,26,424,9,26,1, - 27,1,27,1,27,1,27,1,28,3,28,431,8,28,1,28,3,28,434,8,28,1,28,3,28, - 437,8,28,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,31,1,31,1,31, - 1,32,1,32,1,32,1,32,1,32,1,32,3,32,456,8,32,1,33,1,33,1,33,1,33, - 1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,470,8,33,1,34,1,34, - 1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,5,35,484,8,35, - 10,35,12,35,487,9,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,5,35,496, - 8,35,10,35,12,35,499,9,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,5,35, - 508,8,35,10,35,12,35,511,9,35,1,35,1,35,1,35,1,35,1,35,3,35,518, - 8,35,1,35,1,35,3,35,522,8,35,1,36,1,36,1,36,5,36,527,8,36,10,36, - 12,36,530,9,36,1,37,1,37,1,37,3,37,535,8,37,1,37,1,37,1,37,1,37, - 1,37,4,37,542,8,37,11,37,12,37,543,1,37,1,37,3,37,548,8,37,1,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37, - 1,37,1,37,3,37,579,8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,596,8,37,1,37,1,37,1,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,608,8,37,1,37,1,37,1,37, - 1,37,1,37,1,37,1,37,1,37,3,37,618,8,37,1,37,3,37,621,8,37,1,37,1, - 37,3,37,625,8,37,1,37,3,37,628,8,37,1,37,1,37,1,37,1,37,1,37,1,37, - 1,37,1,37,1,37,1,37,3,37,640,8,37,1,37,1,37,1,37,1,37,1,37,1,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,657,8,37,1,37, - 1,37,3,37,661,8,37,1,37,1,37,1,37,1,37,3,37,667,8,37,1,37,1,37,1, - 37,1,37,1,37,3,37,674,8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1, - 37,1,37,1,37,3,37,686,8,37,1,37,1,37,3,37,690,8,37,1,37,3,37,693, - 8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,702,8,37,1,37,1,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,716,8,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37, - 743,8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,752,8,37,5,37,754, - 8,37,10,37,12,37,757,9,37,1,38,1,38,1,38,5,38,762,8,38,10,38,12, - 38,765,9,38,1,39,1,39,3,39,769,8,39,1,40,1,40,1,40,1,40,5,40,775, - 8,40,10,40,12,40,778,9,40,1,40,1,40,1,40,1,40,1,40,5,40,785,8,40, - 10,40,12,40,788,9,40,3,40,790,8,40,1,40,1,40,1,40,1,41,1,41,1,41, - 5,41,798,8,41,10,41,12,41,801,9,41,1,42,1,42,1,42,1,42,1,42,1,42, - 1,42,1,42,1,42,1,42,3,42,813,8,42,1,43,1,43,1,43,1,43,3,43,819,8, - 43,1,43,3,43,822,8,43,1,44,1,44,1,44,5,44,827,8,44,10,44,12,44,830, - 9,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,3,45,840,8,45,1,45, - 1,45,1,45,1,45,3,45,846,8,45,5,45,848,8,45,10,45,12,45,851,9,45, - 1,46,1,46,1,46,3,46,856,8,46,1,46,1,46,1,47,1,47,1,47,3,47,863,8, - 47,1,47,1,47,1,48,1,48,1,48,5,48,870,8,48,10,48,12,48,873,9,48,1, - 49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,3,50,883,8,50,3,50,885,8,50, - 1,51,3,51,888,8,51,1,51,1,51,1,51,1,51,1,51,1,51,3,51,896,8,51,1, - 52,1,52,1,52,3,52,901,8,52,1,53,1,53,1,54,1,54,1,55,1,55,1,56,1, - 56,3,56,911,8,56,1,57,1,57,1,57,3,57,916,8,57,1,58,1,58,1,58,1,58, - 1,58,0,3,36,74,90,59,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30, - 32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74, - 76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112, - 114,116,0,16,2,0,32,32,141,141,2,0,84,84,96,96,3,0,4,4,8,8,12,12, - 4,0,4,4,7,8,12,12,147,147,2,0,96,96,140,140,2,0,4,4,8,8,2,0,11,11, - 42,43,2,0,62,62,93,93,2,0,133,133,143,143,3,0,17,17,95,95,170,170, - 2,0,79,79,98,98,1,0,196,197,2,0,208,208,228,228,8,0,37,37,76,76, - 108,108,110,110,132,132,145,145,185,185,190,190,13,0,2,24,26,36, - 38,75,77,81,83,107,109,109,111,112,114,115,117,130,133,144,146,184, - 186,189,191,192,4,0,36,36,62,62,77,77,91,91,1043,0,120,1,0,0,0,2, - 124,1,0,0,0,4,138,1,0,0,0,6,141,1,0,0,0,8,190,1,0,0,0,10,193,1,0, - 0,0,12,199,1,0,0,0,14,203,1,0,0,0,16,209,1,0,0,0,18,227,1,0,0,0, - 20,230,1,0,0,0,22,233,1,0,0,0,24,243,1,0,0,0,26,246,1,0,0,0,28,250, - 1,0,0,0,30,283,1,0,0,0,32,285,1,0,0,0,34,288,1,0,0,0,36,303,1,0, - 0,0,38,365,1,0,0,0,40,370,1,0,0,0,42,381,1,0,0,0,44,383,1,0,0,0, - 46,389,1,0,0,0,48,397,1,0,0,0,50,415,1,0,0,0,52,417,1,0,0,0,54,425, - 1,0,0,0,56,430,1,0,0,0,58,438,1,0,0,0,60,442,1,0,0,0,62,446,1,0, - 0,0,64,455,1,0,0,0,66,469,1,0,0,0,68,471,1,0,0,0,70,521,1,0,0,0, - 72,523,1,0,0,0,74,660,1,0,0,0,76,758,1,0,0,0,78,768,1,0,0,0,80,789, - 1,0,0,0,82,794,1,0,0,0,84,812,1,0,0,0,86,821,1,0,0,0,88,823,1,0, - 0,0,90,839,1,0,0,0,92,852,1,0,0,0,94,862,1,0,0,0,96,866,1,0,0,0, - 98,874,1,0,0,0,100,884,1,0,0,0,102,887,1,0,0,0,104,900,1,0,0,0,106, - 902,1,0,0,0,108,904,1,0,0,0,110,906,1,0,0,0,112,910,1,0,0,0,114, - 915,1,0,0,0,116,917,1,0,0,0,118,121,3,2,1,0,119,121,3,6,3,0,120, - 118,1,0,0,0,120,119,1,0,0,0,121,122,1,0,0,0,122,123,5,0,0,1,123, - 1,1,0,0,0,124,130,3,4,2,0,125,126,5,176,0,0,126,127,5,4,0,0,127, - 129,3,4,2,0,128,125,1,0,0,0,129,132,1,0,0,0,130,128,1,0,0,0,130, - 131,1,0,0,0,131,3,1,0,0,0,132,130,1,0,0,0,133,139,3,6,3,0,134,135, - 5,220,0,0,135,136,3,2,1,0,136,137,5,236,0,0,137,139,1,0,0,0,138, - 133,1,0,0,0,138,134,1,0,0,0,139,5,1,0,0,0,140,142,3,8,4,0,141,140, - 1,0,0,0,141,142,1,0,0,0,142,143,1,0,0,0,143,145,5,146,0,0,144,146, - 5,49,0,0,145,144,1,0,0,0,145,146,1,0,0,0,146,148,1,0,0,0,147,149, - 3,10,5,0,148,147,1,0,0,0,148,149,1,0,0,0,149,150,1,0,0,0,150,152, - 3,72,36,0,151,153,3,12,6,0,152,151,1,0,0,0,152,153,1,0,0,0,153,155, - 1,0,0,0,154,156,3,14,7,0,155,154,1,0,0,0,155,156,1,0,0,0,156,158, - 1,0,0,0,157,159,3,18,9,0,158,157,1,0,0,0,158,159,1,0,0,0,159,161, - 1,0,0,0,160,162,3,20,10,0,161,160,1,0,0,0,161,162,1,0,0,0,162,164, - 1,0,0,0,163,165,3,22,11,0,164,163,1,0,0,0,164,165,1,0,0,0,165,168, - 1,0,0,0,166,167,5,189,0,0,167,169,7,0,0,0,168,166,1,0,0,0,168,169, - 1,0,0,0,169,172,1,0,0,0,170,171,5,189,0,0,171,173,5,169,0,0,172, - 170,1,0,0,0,172,173,1,0,0,0,173,175,1,0,0,0,174,176,3,24,12,0,175, - 174,1,0,0,0,175,176,1,0,0,0,176,178,1,0,0,0,177,179,3,16,8,0,178, - 177,1,0,0,0,178,179,1,0,0,0,179,181,1,0,0,0,180,182,3,26,13,0,181, - 180,1,0,0,0,181,182,1,0,0,0,182,185,1,0,0,0,183,186,3,30,15,0,184, - 186,3,32,16,0,185,183,1,0,0,0,185,184,1,0,0,0,185,186,1,0,0,0,186, - 188,1,0,0,0,187,189,3,34,17,0,188,187,1,0,0,0,188,189,1,0,0,0,189, - 7,1,0,0,0,190,191,5,189,0,0,191,192,3,82,41,0,192,9,1,0,0,0,193, - 194,5,168,0,0,194,197,5,197,0,0,195,196,5,189,0,0,196,198,5,164, - 0,0,197,195,1,0,0,0,197,198,1,0,0,0,198,11,1,0,0,0,199,200,5,68, - 0,0,200,201,3,36,18,0,201,13,1,0,0,0,202,204,7,1,0,0,203,202,1,0, - 0,0,203,204,1,0,0,0,204,205,1,0,0,0,205,206,5,9,0,0,206,207,5,90, - 0,0,207,208,3,72,36,0,208,15,1,0,0,0,209,210,5,188,0,0,210,211,3, - 114,57,0,211,212,5,10,0,0,212,213,5,220,0,0,213,214,3,56,28,0,214, - 224,5,236,0,0,215,216,5,206,0,0,216,217,3,114,57,0,217,218,5,10, - 0,0,218,219,5,220,0,0,219,220,3,56,28,0,220,221,5,236,0,0,221,223, - 1,0,0,0,222,215,1,0,0,0,223,226,1,0,0,0,224,222,1,0,0,0,224,225, - 1,0,0,0,225,17,1,0,0,0,226,224,1,0,0,0,227,228,5,129,0,0,228,229, - 3,74,37,0,229,19,1,0,0,0,230,231,5,187,0,0,231,232,3,74,37,0,232, - 21,1,0,0,0,233,234,5,73,0,0,234,241,5,18,0,0,235,236,7,0,0,0,236, - 237,5,220,0,0,237,238,3,72,36,0,238,239,5,236,0,0,239,242,1,0,0, - 0,240,242,3,72,36,0,241,235,1,0,0,0,241,240,1,0,0,0,242,23,1,0,0, - 0,243,244,5,74,0,0,244,245,3,74,37,0,245,25,1,0,0,0,246,247,5,122, - 0,0,247,248,5,18,0,0,248,249,3,46,23,0,249,27,1,0,0,0,250,251,5, - 122,0,0,251,252,5,18,0,0,252,253,3,72,36,0,253,29,1,0,0,0,254,255, - 5,99,0,0,255,258,3,74,37,0,256,257,5,206,0,0,257,259,3,74,37,0,258, - 256,1,0,0,0,258,259,1,0,0,0,259,264,1,0,0,0,260,261,5,189,0,0,261, - 265,5,164,0,0,262,263,5,18,0,0,263,265,3,72,36,0,264,260,1,0,0,0, - 264,262,1,0,0,0,264,265,1,0,0,0,265,284,1,0,0,0,266,267,5,99,0,0, - 267,270,3,74,37,0,268,269,5,189,0,0,269,271,5,164,0,0,270,268,1, - 0,0,0,270,271,1,0,0,0,271,272,1,0,0,0,272,273,5,118,0,0,273,274, - 3,74,37,0,274,284,1,0,0,0,275,276,5,99,0,0,276,277,3,74,37,0,277, - 278,5,118,0,0,278,281,3,74,37,0,279,280,5,18,0,0,280,282,3,72,36, - 0,281,279,1,0,0,0,281,282,1,0,0,0,282,284,1,0,0,0,283,254,1,0,0, - 0,283,266,1,0,0,0,283,275,1,0,0,0,284,31,1,0,0,0,285,286,5,118,0, - 0,286,287,3,74,37,0,287,33,1,0,0,0,288,289,5,150,0,0,289,290,3,52, - 26,0,290,35,1,0,0,0,291,292,6,18,-1,0,292,294,3,90,45,0,293,295, - 5,61,0,0,294,293,1,0,0,0,294,295,1,0,0,0,295,297,1,0,0,0,296,298, - 3,44,22,0,297,296,1,0,0,0,297,298,1,0,0,0,298,304,1,0,0,0,299,300, - 5,220,0,0,300,301,3,36,18,0,301,302,5,236,0,0,302,304,1,0,0,0,303, - 291,1,0,0,0,303,299,1,0,0,0,304,319,1,0,0,0,305,306,10,3,0,0,306, - 307,3,40,20,0,307,308,3,36,18,4,308,318,1,0,0,0,309,311,10,4,0,0, - 310,312,3,38,19,0,311,310,1,0,0,0,311,312,1,0,0,0,312,313,1,0,0, - 0,313,314,5,90,0,0,314,315,3,36,18,0,315,316,3,42,21,0,316,318,1, - 0,0,0,317,305,1,0,0,0,317,309,1,0,0,0,318,321,1,0,0,0,319,317,1, - 0,0,0,319,320,1,0,0,0,320,37,1,0,0,0,321,319,1,0,0,0,322,324,7,2, - 0,0,323,322,1,0,0,0,323,324,1,0,0,0,324,325,1,0,0,0,325,332,5,84, - 0,0,326,328,5,84,0,0,327,329,7,2,0,0,328,327,1,0,0,0,328,329,1,0, - 0,0,329,332,1,0,0,0,330,332,7,2,0,0,331,323,1,0,0,0,331,326,1,0, - 0,0,331,330,1,0,0,0,332,366,1,0,0,0,333,335,7,3,0,0,334,333,1,0, - 0,0,334,335,1,0,0,0,335,336,1,0,0,0,336,338,7,4,0,0,337,339,5,123, - 0,0,338,337,1,0,0,0,338,339,1,0,0,0,339,348,1,0,0,0,340,342,7,4, - 0,0,341,343,5,123,0,0,342,341,1,0,0,0,342,343,1,0,0,0,343,345,1, - 0,0,0,344,346,7,3,0,0,345,344,1,0,0,0,345,346,1,0,0,0,346,348,1, - 0,0,0,347,334,1,0,0,0,347,340,1,0,0,0,348,366,1,0,0,0,349,351,7, - 5,0,0,350,349,1,0,0,0,350,351,1,0,0,0,351,352,1,0,0,0,352,354,5, - 69,0,0,353,355,5,123,0,0,354,353,1,0,0,0,354,355,1,0,0,0,355,364, - 1,0,0,0,356,358,5,69,0,0,357,359,5,123,0,0,358,357,1,0,0,0,358,359, - 1,0,0,0,359,361,1,0,0,0,360,362,7,5,0,0,361,360,1,0,0,0,361,362, - 1,0,0,0,362,364,1,0,0,0,363,350,1,0,0,0,363,356,1,0,0,0,364,366, - 1,0,0,0,365,331,1,0,0,0,365,347,1,0,0,0,365,363,1,0,0,0,366,39,1, - 0,0,0,367,368,5,31,0,0,368,371,5,90,0,0,369,371,5,206,0,0,370,367, - 1,0,0,0,370,369,1,0,0,0,371,41,1,0,0,0,372,373,5,119,0,0,373,382, - 3,72,36,0,374,375,5,179,0,0,375,376,5,220,0,0,376,377,3,72,36,0, - 377,378,5,236,0,0,378,382,1,0,0,0,379,380,5,179,0,0,380,382,3,72, - 36,0,381,372,1,0,0,0,381,374,1,0,0,0,381,379,1,0,0,0,382,43,1,0, - 0,0,383,384,5,144,0,0,384,387,3,50,25,0,385,386,5,118,0,0,386,388, - 3,50,25,0,387,385,1,0,0,0,387,388,1,0,0,0,388,45,1,0,0,0,389,394, - 3,48,24,0,390,391,5,206,0,0,391,393,3,48,24,0,392,390,1,0,0,0,393, - 396,1,0,0,0,394,392,1,0,0,0,394,395,1,0,0,0,395,47,1,0,0,0,396,394, - 1,0,0,0,397,399,3,74,37,0,398,400,7,6,0,0,399,398,1,0,0,0,399,400, - 1,0,0,0,400,403,1,0,0,0,401,402,5,117,0,0,402,404,7,7,0,0,403,401, - 1,0,0,0,403,404,1,0,0,0,404,407,1,0,0,0,405,406,5,26,0,0,406,408, - 5,199,0,0,407,405,1,0,0,0,407,408,1,0,0,0,408,49,1,0,0,0,409,416, - 5,200,0,0,410,413,3,102,51,0,411,412,5,238,0,0,412,414,3,102,51, - 0,413,411,1,0,0,0,413,414,1,0,0,0,414,416,1,0,0,0,415,409,1,0,0, - 0,415,410,1,0,0,0,416,51,1,0,0,0,417,422,3,54,27,0,418,419,5,206, - 0,0,419,421,3,54,27,0,420,418,1,0,0,0,421,424,1,0,0,0,422,420,1, - 0,0,0,422,423,1,0,0,0,423,53,1,0,0,0,424,422,1,0,0,0,425,426,3,114, - 57,0,426,427,5,212,0,0,427,428,3,104,52,0,428,55,1,0,0,0,429,431, - 3,58,29,0,430,429,1,0,0,0,430,431,1,0,0,0,431,433,1,0,0,0,432,434, - 3,60,30,0,433,432,1,0,0,0,433,434,1,0,0,0,434,436,1,0,0,0,435,437, - 3,62,31,0,436,435,1,0,0,0,436,437,1,0,0,0,437,57,1,0,0,0,438,439, - 5,126,0,0,439,440,5,18,0,0,440,441,3,72,36,0,441,59,1,0,0,0,442, - 443,5,122,0,0,443,444,5,18,0,0,444,445,3,46,23,0,445,61,1,0,0,0, - 446,447,7,8,0,0,447,448,3,64,32,0,448,63,1,0,0,0,449,456,3,66,33, - 0,450,451,5,16,0,0,451,452,3,66,33,0,452,453,5,6,0,0,453,454,3,66, - 33,0,454,456,1,0,0,0,455,449,1,0,0,0,455,450,1,0,0,0,456,65,1,0, - 0,0,457,458,5,33,0,0,458,470,5,142,0,0,459,460,5,175,0,0,460,470, - 5,128,0,0,461,462,5,175,0,0,462,470,5,64,0,0,463,464,3,102,51,0, - 464,465,5,128,0,0,465,470,1,0,0,0,466,467,3,102,51,0,467,468,5,64, - 0,0,468,470,1,0,0,0,469,457,1,0,0,0,469,459,1,0,0,0,469,461,1,0, - 0,0,469,463,1,0,0,0,469,466,1,0,0,0,470,67,1,0,0,0,471,472,3,74, - 37,0,472,473,5,0,0,1,473,69,1,0,0,0,474,522,3,114,57,0,475,476,3, - 114,57,0,476,477,5,220,0,0,477,478,3,114,57,0,478,485,3,70,35,0, - 479,480,5,206,0,0,480,481,3,114,57,0,481,482,3,70,35,0,482,484,1, - 0,0,0,483,479,1,0,0,0,484,487,1,0,0,0,485,483,1,0,0,0,485,486,1, - 0,0,0,486,488,1,0,0,0,487,485,1,0,0,0,488,489,5,236,0,0,489,522, - 1,0,0,0,490,491,3,114,57,0,491,492,5,220,0,0,492,497,3,116,58,0, - 493,494,5,206,0,0,494,496,3,116,58,0,495,493,1,0,0,0,496,499,1,0, - 0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,500,1,0,0,0,499,497,1,0, - 0,0,500,501,5,236,0,0,501,522,1,0,0,0,502,503,3,114,57,0,503,504, - 5,220,0,0,504,509,3,70,35,0,505,506,5,206,0,0,506,508,3,70,35,0, - 507,505,1,0,0,0,508,511,1,0,0,0,509,507,1,0,0,0,509,510,1,0,0,0, - 510,512,1,0,0,0,511,509,1,0,0,0,512,513,5,236,0,0,513,522,1,0,0, - 0,514,515,3,114,57,0,515,517,5,220,0,0,516,518,3,72,36,0,517,516, - 1,0,0,0,517,518,1,0,0,0,518,519,1,0,0,0,519,520,5,236,0,0,520,522, - 1,0,0,0,521,474,1,0,0,0,521,475,1,0,0,0,521,490,1,0,0,0,521,502, - 1,0,0,0,521,514,1,0,0,0,522,71,1,0,0,0,523,528,3,74,37,0,524,525, - 5,206,0,0,525,527,3,74,37,0,526,524,1,0,0,0,527,530,1,0,0,0,528, - 526,1,0,0,0,528,529,1,0,0,0,529,73,1,0,0,0,530,528,1,0,0,0,531,532, - 6,37,-1,0,532,534,5,19,0,0,533,535,3,74,37,0,534,533,1,0,0,0,534, - 535,1,0,0,0,535,541,1,0,0,0,536,537,5,186,0,0,537,538,3,74,37,0, - 538,539,5,163,0,0,539,540,3,74,37,0,540,542,1,0,0,0,541,536,1,0, - 0,0,542,543,1,0,0,0,543,541,1,0,0,0,543,544,1,0,0,0,544,547,1,0, - 0,0,545,546,5,52,0,0,546,548,3,74,37,0,547,545,1,0,0,0,547,548,1, - 0,0,0,548,549,1,0,0,0,549,550,5,53,0,0,550,661,1,0,0,0,551,552,5, - 20,0,0,552,553,5,220,0,0,553,554,3,74,37,0,554,555,5,10,0,0,555, - 556,3,70,35,0,556,557,5,236,0,0,557,661,1,0,0,0,558,559,5,36,0,0, - 559,661,5,199,0,0,560,561,5,59,0,0,561,562,5,220,0,0,562,563,3,106, - 53,0,563,564,5,68,0,0,564,565,3,74,37,0,565,566,5,236,0,0,566,661, - 1,0,0,0,567,568,5,86,0,0,568,569,3,74,37,0,569,570,3,106,53,0,570, - 661,1,0,0,0,571,572,5,155,0,0,572,573,5,220,0,0,573,574,3,74,37, - 0,574,575,5,68,0,0,575,578,3,74,37,0,576,577,5,65,0,0,577,579,3, - 74,37,0,578,576,1,0,0,0,578,579,1,0,0,0,579,580,1,0,0,0,580,581, - 5,236,0,0,581,661,1,0,0,0,582,583,5,166,0,0,583,661,5,199,0,0,584, - 585,5,171,0,0,585,586,5,220,0,0,586,587,7,9,0,0,587,588,5,199,0, - 0,588,589,5,68,0,0,589,590,3,74,37,0,590,591,5,236,0,0,591,661,1, - 0,0,0,592,593,3,114,57,0,593,595,5,220,0,0,594,596,3,72,36,0,595, - 594,1,0,0,0,595,596,1,0,0,0,596,597,1,0,0,0,597,598,5,236,0,0,598, - 599,1,0,0,0,599,600,5,125,0,0,600,601,5,220,0,0,601,602,3,56,28, - 0,602,603,5,236,0,0,603,661,1,0,0,0,604,605,3,114,57,0,605,607,5, - 220,0,0,606,608,3,72,36,0,607,606,1,0,0,0,607,608,1,0,0,0,608,609, - 1,0,0,0,609,610,5,236,0,0,610,611,1,0,0,0,611,612,5,125,0,0,612, - 613,3,114,57,0,613,661,1,0,0,0,614,620,3,114,57,0,615,617,5,220, - 0,0,616,618,3,72,36,0,617,616,1,0,0,0,617,618,1,0,0,0,618,619,1, - 0,0,0,619,621,5,236,0,0,620,615,1,0,0,0,620,621,1,0,0,0,621,622, - 1,0,0,0,622,624,5,220,0,0,623,625,5,49,0,0,624,623,1,0,0,0,624,625, - 1,0,0,0,625,627,1,0,0,0,626,628,3,76,38,0,627,626,1,0,0,0,627,628, - 1,0,0,0,628,629,1,0,0,0,629,630,5,236,0,0,630,661,1,0,0,0,631,661, - 3,104,52,0,632,633,5,208,0,0,633,661,3,74,37,18,634,635,5,115,0, - 0,635,661,3,74,37,12,636,637,3,94,47,0,637,638,5,210,0,0,638,640, - 1,0,0,0,639,636,1,0,0,0,639,640,1,0,0,0,640,641,1,0,0,0,641,661, - 5,202,0,0,642,643,5,220,0,0,643,644,3,2,1,0,644,645,5,236,0,0,645, - 661,1,0,0,0,646,647,5,220,0,0,647,648,3,74,37,0,648,649,5,236,0, - 0,649,661,1,0,0,0,650,651,5,220,0,0,651,652,3,72,36,0,652,653,5, - 236,0,0,653,661,1,0,0,0,654,656,5,219,0,0,655,657,3,72,36,0,656, - 655,1,0,0,0,656,657,1,0,0,0,657,658,1,0,0,0,658,661,5,235,0,0,659, - 661,3,86,43,0,660,531,1,0,0,0,660,551,1,0,0,0,660,558,1,0,0,0,660, - 560,1,0,0,0,660,567,1,0,0,0,660,571,1,0,0,0,660,582,1,0,0,0,660, - 584,1,0,0,0,660,592,1,0,0,0,660,604,1,0,0,0,660,614,1,0,0,0,660, - 631,1,0,0,0,660,632,1,0,0,0,660,634,1,0,0,0,660,639,1,0,0,0,660, - 642,1,0,0,0,660,646,1,0,0,0,660,650,1,0,0,0,660,654,1,0,0,0,660, - 659,1,0,0,0,661,755,1,0,0,0,662,666,10,17,0,0,663,667,5,202,0,0, - 664,667,5,238,0,0,665,667,5,227,0,0,666,663,1,0,0,0,666,664,1,0, - 0,0,666,665,1,0,0,0,667,668,1,0,0,0,668,754,3,74,37,18,669,673,10, - 16,0,0,670,674,5,228,0,0,671,674,5,208,0,0,672,674,5,207,0,0,673, - 670,1,0,0,0,673,671,1,0,0,0,673,672,1,0,0,0,674,675,1,0,0,0,675, - 754,3,74,37,17,676,701,10,15,0,0,677,702,5,211,0,0,678,702,5,212, - 0,0,679,702,5,223,0,0,680,702,5,221,0,0,681,702,5,222,0,0,682,702, - 5,213,0,0,683,702,5,214,0,0,684,686,5,115,0,0,685,684,1,0,0,0,685, - 686,1,0,0,0,686,687,1,0,0,0,687,689,5,80,0,0,688,690,5,25,0,0,689, - 688,1,0,0,0,689,690,1,0,0,0,690,702,1,0,0,0,691,693,5,115,0,0,692, - 691,1,0,0,0,692,693,1,0,0,0,693,694,1,0,0,0,694,702,7,10,0,0,695, - 702,5,232,0,0,696,702,5,233,0,0,697,702,5,225,0,0,698,702,5,216, - 0,0,699,702,5,217,0,0,700,702,5,224,0,0,701,677,1,0,0,0,701,678, - 1,0,0,0,701,679,1,0,0,0,701,680,1,0,0,0,701,681,1,0,0,0,701,682, - 1,0,0,0,701,683,1,0,0,0,701,685,1,0,0,0,701,692,1,0,0,0,701,695, - 1,0,0,0,701,696,1,0,0,0,701,697,1,0,0,0,701,698,1,0,0,0,701,699, - 1,0,0,0,701,700,1,0,0,0,702,703,1,0,0,0,703,754,3,74,37,16,704,705, - 10,13,0,0,705,706,5,226,0,0,706,754,3,74,37,14,707,708,10,11,0,0, - 708,709,5,6,0,0,709,754,3,74,37,12,710,711,10,10,0,0,711,712,5,121, - 0,0,712,754,3,74,37,11,713,715,10,9,0,0,714,716,5,115,0,0,715,714, - 1,0,0,0,715,716,1,0,0,0,716,717,1,0,0,0,717,718,5,16,0,0,718,719, - 3,74,37,0,719,720,5,6,0,0,720,721,3,74,37,10,721,754,1,0,0,0,722, - 723,10,8,0,0,723,724,5,229,0,0,724,725,3,74,37,0,725,726,5,205,0, - 0,726,727,3,74,37,8,727,754,1,0,0,0,728,729,10,21,0,0,729,730,5, - 219,0,0,730,731,3,74,37,0,731,732,5,235,0,0,732,754,1,0,0,0,733, - 734,10,20,0,0,734,735,5,210,0,0,735,754,5,197,0,0,736,737,10,19, - 0,0,737,738,5,210,0,0,738,754,3,114,57,0,739,740,10,14,0,0,740,742, - 5,88,0,0,741,743,5,115,0,0,742,741,1,0,0,0,742,743,1,0,0,0,743,744, - 1,0,0,0,744,754,5,116,0,0,745,751,10,7,0,0,746,752,3,112,56,0,747, - 748,5,10,0,0,748,752,3,114,57,0,749,750,5,10,0,0,750,752,5,199,0, - 0,751,746,1,0,0,0,751,747,1,0,0,0,751,749,1,0,0,0,752,754,1,0,0, - 0,753,662,1,0,0,0,753,669,1,0,0,0,753,676,1,0,0,0,753,704,1,0,0, - 0,753,707,1,0,0,0,753,710,1,0,0,0,753,713,1,0,0,0,753,722,1,0,0, - 0,753,728,1,0,0,0,753,733,1,0,0,0,753,736,1,0,0,0,753,739,1,0,0, - 0,753,745,1,0,0,0,754,757,1,0,0,0,755,753,1,0,0,0,755,756,1,0,0, - 0,756,75,1,0,0,0,757,755,1,0,0,0,758,763,3,78,39,0,759,760,5,206, - 0,0,760,762,3,78,39,0,761,759,1,0,0,0,762,765,1,0,0,0,763,761,1, - 0,0,0,763,764,1,0,0,0,764,77,1,0,0,0,765,763,1,0,0,0,766,769,3,80, - 40,0,767,769,3,74,37,0,768,766,1,0,0,0,768,767,1,0,0,0,769,79,1, - 0,0,0,770,771,5,220,0,0,771,776,3,114,57,0,772,773,5,206,0,0,773, - 775,3,114,57,0,774,772,1,0,0,0,775,778,1,0,0,0,776,774,1,0,0,0,776, - 777,1,0,0,0,777,779,1,0,0,0,778,776,1,0,0,0,779,780,5,236,0,0,780, - 790,1,0,0,0,781,786,3,114,57,0,782,783,5,206,0,0,783,785,3,114,57, - 0,784,782,1,0,0,0,785,788,1,0,0,0,786,784,1,0,0,0,786,787,1,0,0, - 0,787,790,1,0,0,0,788,786,1,0,0,0,789,770,1,0,0,0,789,781,1,0,0, - 0,790,791,1,0,0,0,791,792,5,201,0,0,792,793,3,74,37,0,793,81,1,0, - 0,0,794,799,3,84,42,0,795,796,5,206,0,0,796,798,3,84,42,0,797,795, - 1,0,0,0,798,801,1,0,0,0,799,797,1,0,0,0,799,800,1,0,0,0,800,83,1, - 0,0,0,801,799,1,0,0,0,802,803,3,114,57,0,803,804,5,10,0,0,804,805, - 5,220,0,0,805,806,3,2,1,0,806,807,5,236,0,0,807,813,1,0,0,0,808, - 809,3,74,37,0,809,810,5,10,0,0,810,811,3,114,57,0,811,813,1,0,0, - 0,812,802,1,0,0,0,812,808,1,0,0,0,813,85,1,0,0,0,814,822,5,200,0, - 0,815,816,3,94,47,0,816,817,5,210,0,0,817,819,1,0,0,0,818,815,1, - 0,0,0,818,819,1,0,0,0,819,820,1,0,0,0,820,822,3,88,44,0,821,814, - 1,0,0,0,821,818,1,0,0,0,822,87,1,0,0,0,823,828,3,114,57,0,824,825, - 5,210,0,0,825,827,3,114,57,0,826,824,1,0,0,0,827,830,1,0,0,0,828, - 826,1,0,0,0,828,829,1,0,0,0,829,89,1,0,0,0,830,828,1,0,0,0,831,832, - 6,45,-1,0,832,840,3,94,47,0,833,840,3,92,46,0,834,835,5,220,0,0, - 835,836,3,2,1,0,836,837,5,236,0,0,837,840,1,0,0,0,838,840,5,200, - 0,0,839,831,1,0,0,0,839,833,1,0,0,0,839,834,1,0,0,0,839,838,1,0, - 0,0,840,849,1,0,0,0,841,845,10,2,0,0,842,846,3,112,56,0,843,844, - 5,10,0,0,844,846,3,114,57,0,845,842,1,0,0,0,845,843,1,0,0,0,846, - 848,1,0,0,0,847,841,1,0,0,0,848,851,1,0,0,0,849,847,1,0,0,0,849, - 850,1,0,0,0,850,91,1,0,0,0,851,849,1,0,0,0,852,853,3,114,57,0,853, - 855,5,220,0,0,854,856,3,96,48,0,855,854,1,0,0,0,855,856,1,0,0,0, - 856,857,1,0,0,0,857,858,5,236,0,0,858,93,1,0,0,0,859,860,3,98,49, - 0,860,861,5,210,0,0,861,863,1,0,0,0,862,859,1,0,0,0,862,863,1,0, - 0,0,863,864,1,0,0,0,864,865,3,114,57,0,865,95,1,0,0,0,866,871,3, - 74,37,0,867,868,5,206,0,0,868,870,3,74,37,0,869,867,1,0,0,0,870, - 873,1,0,0,0,871,869,1,0,0,0,871,872,1,0,0,0,872,97,1,0,0,0,873,871, - 1,0,0,0,874,875,3,114,57,0,875,99,1,0,0,0,876,885,5,195,0,0,877, - 878,5,210,0,0,878,885,7,11,0,0,879,880,5,197,0,0,880,882,5,210,0, - 0,881,883,7,11,0,0,882,881,1,0,0,0,882,883,1,0,0,0,883,885,1,0,0, - 0,884,876,1,0,0,0,884,877,1,0,0,0,884,879,1,0,0,0,885,101,1,0,0, - 0,886,888,7,12,0,0,887,886,1,0,0,0,887,888,1,0,0,0,888,895,1,0,0, - 0,889,896,3,100,50,0,890,896,5,196,0,0,891,896,5,197,0,0,892,896, - 5,198,0,0,893,896,5,82,0,0,894,896,5,113,0,0,895,889,1,0,0,0,895, - 890,1,0,0,0,895,891,1,0,0,0,895,892,1,0,0,0,895,893,1,0,0,0,895, - 894,1,0,0,0,896,103,1,0,0,0,897,901,3,102,51,0,898,901,5,199,0,0, - 899,901,5,116,0,0,900,897,1,0,0,0,900,898,1,0,0,0,900,899,1,0,0, - 0,901,105,1,0,0,0,902,903,7,13,0,0,903,107,1,0,0,0,904,905,7,14, - 0,0,905,109,1,0,0,0,906,907,7,15,0,0,907,111,1,0,0,0,908,911,5,194, - 0,0,909,911,3,110,55,0,910,908,1,0,0,0,910,909,1,0,0,0,911,113,1, - 0,0,0,912,916,5,194,0,0,913,916,3,106,53,0,914,916,3,108,54,0,915, - 912,1,0,0,0,915,913,1,0,0,0,915,914,1,0,0,0,916,115,1,0,0,0,917, - 918,5,199,0,0,918,919,5,212,0,0,919,920,3,102,51,0,920,117,1,0,0, - 0,115,120,130,138,141,145,148,152,155,158,161,164,168,172,175,178, - 181,185,188,197,203,224,241,258,264,270,281,283,294,297,303,311, - 317,319,323,328,331,334,338,342,345,347,350,354,358,361,363,365, - 370,381,387,394,399,403,407,413,415,422,430,433,436,455,469,485, - 497,509,517,521,528,534,543,547,578,595,607,617,620,624,627,639, - 656,660,666,673,685,689,692,701,715,742,751,753,755,763,768,776, - 786,789,799,812,818,821,828,839,845,849,855,862,871,882,884,887, - 895,900,910,915 + 4, + 1, + 242, + 922, + 2, + 0, + 7, + 0, + 2, + 1, + 7, + 1, + 2, + 2, + 7, + 2, + 2, + 3, + 7, + 3, + 2, + 4, + 7, + 4, + 2, + 5, + 7, + 5, + 2, + 6, + 7, + 6, + 2, + 7, + 7, + 7, + 2, + 8, + 7, + 8, + 2, + 9, + 7, + 9, + 2, + 10, + 7, + 10, + 2, + 11, + 7, + 11, + 2, + 12, + 7, + 12, + 2, + 13, + 7, + 13, + 2, + 14, + 7, + 14, + 2, + 15, + 7, + 15, + 2, + 16, + 7, + 16, + 2, + 17, + 7, + 17, + 2, + 18, + 7, + 18, + 2, + 19, + 7, + 19, + 2, + 20, + 7, + 20, + 2, + 21, + 7, + 21, + 2, + 22, + 7, + 22, + 2, + 23, + 7, + 23, + 2, + 24, + 7, + 24, + 2, + 25, + 7, + 25, + 2, + 26, + 7, + 26, + 2, + 27, + 7, + 27, + 2, + 28, + 7, + 28, + 2, + 29, + 7, + 29, + 2, + 30, + 7, + 30, + 2, + 31, + 7, + 31, + 2, + 32, + 7, + 32, + 2, + 33, + 7, + 33, + 2, + 34, + 7, + 34, + 2, + 35, + 7, + 35, + 2, + 36, + 7, + 36, + 2, + 37, + 7, + 37, + 2, + 38, + 7, + 38, + 2, + 39, + 7, + 39, + 2, + 40, + 7, + 40, + 2, + 41, + 7, + 41, + 2, + 42, + 7, + 42, + 2, + 43, + 7, + 43, + 2, + 44, + 7, + 44, + 2, + 45, + 7, + 45, + 2, + 46, + 7, + 46, + 2, + 47, + 7, + 47, + 2, + 48, + 7, + 48, + 2, + 49, + 7, + 49, + 2, + 50, + 7, + 50, + 2, + 51, + 7, + 51, + 2, + 52, + 7, + 52, + 2, + 53, + 7, + 53, + 2, + 54, + 7, + 54, + 2, + 55, + 7, + 55, + 2, + 56, + 7, + 56, + 2, + 57, + 7, + 57, + 2, + 58, + 7, + 58, + 1, + 0, + 1, + 0, + 3, + 0, + 121, + 8, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 5, + 1, + 129, + 8, + 1, + 10, + 1, + 12, + 1, + 132, + 9, + 1, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 3, + 2, + 139, + 8, + 2, + 1, + 3, + 3, + 3, + 142, + 8, + 3, + 1, + 3, + 1, + 3, + 3, + 3, + 146, + 8, + 3, + 1, + 3, + 3, + 3, + 149, + 8, + 3, + 1, + 3, + 1, + 3, + 3, + 3, + 153, + 8, + 3, + 1, + 3, + 3, + 3, + 156, + 8, + 3, + 1, + 3, + 3, + 3, + 159, + 8, + 3, + 1, + 3, + 3, + 3, + 162, + 8, + 3, + 1, + 3, + 3, + 3, + 165, + 8, + 3, + 1, + 3, + 1, + 3, + 3, + 3, + 169, + 8, + 3, + 1, + 3, + 1, + 3, + 3, + 3, + 173, + 8, + 3, + 1, + 3, + 3, + 3, + 176, + 8, + 3, + 1, + 3, + 3, + 3, + 179, + 8, + 3, + 1, + 3, + 3, + 3, + 182, + 8, + 3, + 1, + 3, + 1, + 3, + 3, + 3, + 186, + 8, + 3, + 1, + 3, + 3, + 3, + 189, + 8, + 3, + 1, + 4, + 1, + 4, + 1, + 4, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 3, + 5, + 198, + 8, + 5, + 1, + 6, + 1, + 6, + 1, + 6, + 1, + 7, + 3, + 7, + 204, + 8, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 7, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 1, + 8, + 5, + 8, + 223, + 8, + 8, + 10, + 8, + 12, + 8, + 226, + 9, + 8, + 1, + 9, + 1, + 9, + 1, + 9, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 11, + 1, + 11, + 1, + 11, + 1, + 11, + 1, + 11, + 1, + 11, + 1, + 11, + 1, + 11, + 3, + 11, + 242, + 8, + 11, + 1, + 12, + 1, + 12, + 1, + 12, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 3, + 15, + 259, + 8, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 3, + 15, + 265, + 8, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 3, + 15, + 271, + 8, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 3, + 15, + 282, + 8, + 15, + 3, + 15, + 284, + 8, + 15, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 18, + 1, + 18, + 1, + 18, + 3, + 18, + 295, + 8, + 18, + 1, + 18, + 3, + 18, + 298, + 8, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 3, + 18, + 304, + 8, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 3, + 18, + 312, + 8, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 5, + 18, + 318, + 8, + 18, + 10, + 18, + 12, + 18, + 321, + 9, + 18, + 1, + 19, + 3, + 19, + 324, + 8, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 3, + 19, + 329, + 8, + 19, + 1, + 19, + 3, + 19, + 332, + 8, + 19, + 1, + 19, + 3, + 19, + 335, + 8, + 19, + 1, + 19, + 1, + 19, + 3, + 19, + 339, + 8, + 19, + 1, + 19, + 1, + 19, + 3, + 19, + 343, + 8, + 19, + 1, + 19, + 3, + 19, + 346, + 8, + 19, + 3, + 19, + 348, + 8, + 19, + 1, + 19, + 3, + 19, + 351, + 8, + 19, + 1, + 19, + 1, + 19, + 3, + 19, + 355, + 8, + 19, + 1, + 19, + 1, + 19, + 3, + 19, + 359, + 8, + 19, + 1, + 19, + 3, + 19, + 362, + 8, + 19, + 3, + 19, + 364, + 8, + 19, + 3, + 19, + 366, + 8, + 19, + 1, + 20, + 1, + 20, + 1, + 20, + 3, + 20, + 371, + 8, + 20, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 3, + 21, + 382, + 8, + 21, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 3, + 22, + 388, + 8, + 22, + 1, + 23, + 1, + 23, + 1, + 23, + 5, + 23, + 393, + 8, + 23, + 10, + 23, + 12, + 23, + 396, + 9, + 23, + 1, + 24, + 1, + 24, + 3, + 24, + 400, + 8, + 24, + 1, + 24, + 1, + 24, + 3, + 24, + 404, + 8, + 24, + 1, + 24, + 1, + 24, + 3, + 24, + 408, + 8, + 24, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 3, + 25, + 414, + 8, + 25, + 3, + 25, + 416, + 8, + 25, + 1, + 26, + 1, + 26, + 1, + 26, + 5, + 26, + 421, + 8, + 26, + 10, + 26, + 12, + 26, + 424, + 9, + 26, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 28, + 3, + 28, + 431, + 8, + 28, + 1, + 28, + 3, + 28, + 434, + 8, + 28, + 1, + 28, + 3, + 28, + 437, + 8, + 28, + 1, + 29, + 1, + 29, + 1, + 29, + 1, + 29, + 1, + 30, + 1, + 30, + 1, + 30, + 1, + 30, + 1, + 31, + 1, + 31, + 1, + 31, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 3, + 32, + 456, + 8, + 32, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 3, + 33, + 470, + 8, + 33, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 5, + 35, + 484, + 8, + 35, + 10, + 35, + 12, + 35, + 487, + 9, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 5, + 35, + 496, + 8, + 35, + 10, + 35, + 12, + 35, + 499, + 9, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 5, + 35, + 508, + 8, + 35, + 10, + 35, + 12, + 35, + 511, + 9, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 3, + 35, + 518, + 8, + 35, + 1, + 35, + 1, + 35, + 3, + 35, + 522, + 8, + 35, + 1, + 36, + 1, + 36, + 1, + 36, + 5, + 36, + 527, + 8, + 36, + 10, + 36, + 12, + 36, + 530, + 9, + 36, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 535, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 4, + 37, + 542, + 8, + 37, + 11, + 37, + 12, + 37, + 543, + 1, + 37, + 1, + 37, + 3, + 37, + 548, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 579, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 596, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 608, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 618, + 8, + 37, + 1, + 37, + 3, + 37, + 621, + 8, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 625, + 8, + 37, + 1, + 37, + 3, + 37, + 628, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 640, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 657, + 8, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 661, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 667, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 674, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 686, + 8, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 690, + 8, + 37, + 1, + 37, + 3, + 37, + 693, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 702, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 716, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 743, + 8, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 3, + 37, + 752, + 8, + 37, + 5, + 37, + 754, + 8, + 37, + 10, + 37, + 12, + 37, + 757, + 9, + 37, + 1, + 38, + 1, + 38, + 1, + 38, + 5, + 38, + 762, + 8, + 38, + 10, + 38, + 12, + 38, + 765, + 9, + 38, + 1, + 39, + 1, + 39, + 3, + 39, + 769, + 8, + 39, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 5, + 40, + 775, + 8, + 40, + 10, + 40, + 12, + 40, + 778, + 9, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 5, + 40, + 785, + 8, + 40, + 10, + 40, + 12, + 40, + 788, + 9, + 40, + 3, + 40, + 790, + 8, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 41, + 1, + 41, + 1, + 41, + 5, + 41, + 798, + 8, + 41, + 10, + 41, + 12, + 41, + 801, + 9, + 41, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 42, + 3, + 42, + 813, + 8, + 42, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 3, + 43, + 819, + 8, + 43, + 1, + 43, + 3, + 43, + 822, + 8, + 43, + 1, + 44, + 1, + 44, + 1, + 44, + 5, + 44, + 827, + 8, + 44, + 10, + 44, + 12, + 44, + 830, + 9, + 44, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 3, + 45, + 840, + 8, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 3, + 45, + 846, + 8, + 45, + 5, + 45, + 848, + 8, + 45, + 10, + 45, + 12, + 45, + 851, + 9, + 45, + 1, + 46, + 1, + 46, + 1, + 46, + 3, + 46, + 856, + 8, + 46, + 1, + 46, + 1, + 46, + 1, + 47, + 1, + 47, + 1, + 47, + 3, + 47, + 863, + 8, + 47, + 1, + 47, + 1, + 47, + 1, + 48, + 1, + 48, + 1, + 48, + 5, + 48, + 870, + 8, + 48, + 10, + 48, + 12, + 48, + 873, + 9, + 48, + 1, + 49, + 1, + 49, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 50, + 3, + 50, + 883, + 8, + 50, + 3, + 50, + 885, + 8, + 50, + 1, + 51, + 3, + 51, + 888, + 8, + 51, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 51, + 3, + 51, + 896, + 8, + 51, + 1, + 52, + 1, + 52, + 1, + 52, + 3, + 52, + 901, + 8, + 52, + 1, + 53, + 1, + 53, + 1, + 54, + 1, + 54, + 1, + 55, + 1, + 55, + 1, + 56, + 1, + 56, + 3, + 56, + 911, + 8, + 56, + 1, + 57, + 1, + 57, + 1, + 57, + 3, + 57, + 916, + 8, + 57, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 0, + 3, + 36, + 74, + 90, + 59, + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 18, + 20, + 22, + 24, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, + 80, + 82, + 84, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, + 104, + 106, + 108, + 110, + 112, + 114, + 116, + 0, + 16, + 2, + 0, + 32, + 32, + 141, + 141, + 2, + 0, + 84, + 84, + 96, + 96, + 3, + 0, + 4, + 4, + 8, + 8, + 12, + 12, + 4, + 0, + 4, + 4, + 7, + 8, + 12, + 12, + 147, + 147, + 2, + 0, + 96, + 96, + 140, + 140, + 2, + 0, + 4, + 4, + 8, + 8, + 2, + 0, + 11, + 11, + 42, + 43, + 2, + 0, + 62, + 62, + 93, + 93, + 2, + 0, + 133, + 133, + 143, + 143, + 3, + 0, + 17, + 17, + 95, + 95, + 170, + 170, + 2, + 0, + 79, + 79, + 98, + 98, + 1, + 0, + 196, + 197, + 2, + 0, + 208, + 208, + 228, + 228, + 8, + 0, + 37, + 37, + 76, + 76, + 108, + 108, + 110, + 110, + 132, + 132, + 145, + 145, + 185, + 185, + 190, + 190, + 13, + 0, + 2, + 24, + 26, + 36, + 38, + 75, + 77, + 81, + 83, + 107, + 109, + 109, + 111, + 112, + 114, + 115, + 117, + 130, + 133, + 144, + 146, + 184, + 186, + 189, + 191, + 192, + 4, + 0, + 36, + 36, + 62, + 62, + 77, + 77, + 91, + 91, + 1043, + 0, + 120, + 1, + 0, + 0, + 0, + 2, + 124, + 1, + 0, + 0, + 0, + 4, + 138, + 1, + 0, + 0, + 0, + 6, + 141, + 1, + 0, + 0, + 0, + 8, + 190, + 1, + 0, + 0, + 0, + 10, + 193, + 1, + 0, + 0, + 0, + 12, + 199, + 1, + 0, + 0, + 0, + 14, + 203, + 1, + 0, + 0, + 0, + 16, + 209, + 1, + 0, + 0, + 0, + 18, + 227, + 1, + 0, + 0, + 0, + 20, + 230, + 1, + 0, + 0, + 0, + 22, + 233, + 1, + 0, + 0, + 0, + 24, + 243, + 1, + 0, + 0, + 0, + 26, + 246, + 1, + 0, + 0, + 0, + 28, + 250, + 1, + 0, + 0, + 0, + 30, + 283, + 1, + 0, + 0, + 0, + 32, + 285, + 1, + 0, + 0, + 0, + 34, + 288, + 1, + 0, + 0, + 0, + 36, + 303, + 1, + 0, + 0, + 0, + 38, + 365, + 1, + 0, + 0, + 0, + 40, + 370, + 1, + 0, + 0, + 0, + 42, + 381, + 1, + 0, + 0, + 0, + 44, + 383, + 1, + 0, + 0, + 0, + 46, + 389, + 1, + 0, + 0, + 0, + 48, + 397, + 1, + 0, + 0, + 0, + 50, + 415, + 1, + 0, + 0, + 0, + 52, + 417, + 1, + 0, + 0, + 0, + 54, + 425, + 1, + 0, + 0, + 0, + 56, + 430, + 1, + 0, + 0, + 0, + 58, + 438, + 1, + 0, + 0, + 0, + 60, + 442, + 1, + 0, + 0, + 0, + 62, + 446, + 1, + 0, + 0, + 0, + 64, + 455, + 1, + 0, + 0, + 0, + 66, + 469, + 1, + 0, + 0, + 0, + 68, + 471, + 1, + 0, + 0, + 0, + 70, + 521, + 1, + 0, + 0, + 0, + 72, + 523, + 1, + 0, + 0, + 0, + 74, + 660, + 1, + 0, + 0, + 0, + 76, + 758, + 1, + 0, + 0, + 0, + 78, + 768, + 1, + 0, + 0, + 0, + 80, + 789, + 1, + 0, + 0, + 0, + 82, + 794, + 1, + 0, + 0, + 0, + 84, + 812, + 1, + 0, + 0, + 0, + 86, + 821, + 1, + 0, + 0, + 0, + 88, + 823, + 1, + 0, + 0, + 0, + 90, + 839, + 1, + 0, + 0, + 0, + 92, + 852, + 1, + 0, + 0, + 0, + 94, + 862, + 1, + 0, + 0, + 0, + 96, + 866, + 1, + 0, + 0, + 0, + 98, + 874, + 1, + 0, + 0, + 0, + 100, + 884, + 1, + 0, + 0, + 0, + 102, + 887, + 1, + 0, + 0, + 0, + 104, + 900, + 1, + 0, + 0, + 0, + 106, + 902, + 1, + 0, + 0, + 0, + 108, + 904, + 1, + 0, + 0, + 0, + 110, + 906, + 1, + 0, + 0, + 0, + 112, + 910, + 1, + 0, + 0, + 0, + 114, + 915, + 1, + 0, + 0, + 0, + 116, + 917, + 1, + 0, + 0, + 0, + 118, + 121, + 3, + 2, + 1, + 0, + 119, + 121, + 3, + 6, + 3, + 0, + 120, + 118, + 1, + 0, + 0, + 0, + 120, + 119, + 1, + 0, + 0, + 0, + 121, + 122, + 1, + 0, + 0, + 0, + 122, + 123, + 5, + 0, + 0, + 1, + 123, + 1, + 1, + 0, + 0, + 0, + 124, + 130, + 3, + 4, + 2, + 0, + 125, + 126, + 5, + 176, + 0, + 0, + 126, + 127, + 5, + 4, + 0, + 0, + 127, + 129, + 3, + 4, + 2, + 0, + 128, + 125, + 1, + 0, + 0, + 0, + 129, + 132, + 1, + 0, + 0, + 0, + 130, + 128, + 1, + 0, + 0, + 0, + 130, + 131, + 1, + 0, + 0, + 0, + 131, + 3, + 1, + 0, + 0, + 0, + 132, + 130, + 1, + 0, + 0, + 0, + 133, + 139, + 3, + 6, + 3, + 0, + 134, + 135, + 5, + 220, + 0, + 0, + 135, + 136, + 3, + 2, + 1, + 0, + 136, + 137, + 5, + 236, + 0, + 0, + 137, + 139, + 1, + 0, + 0, + 0, + 138, + 133, + 1, + 0, + 0, + 0, + 138, + 134, + 1, + 0, + 0, + 0, + 139, + 5, + 1, + 0, + 0, + 0, + 140, + 142, + 3, + 8, + 4, + 0, + 141, + 140, + 1, + 0, + 0, + 0, + 141, + 142, + 1, + 0, + 0, + 0, + 142, + 143, + 1, + 0, + 0, + 0, + 143, + 145, + 5, + 146, + 0, + 0, + 144, + 146, + 5, + 49, + 0, + 0, + 145, + 144, + 1, + 0, + 0, + 0, + 145, + 146, + 1, + 0, + 0, + 0, + 146, + 148, + 1, + 0, + 0, + 0, + 147, + 149, + 3, + 10, + 5, + 0, + 148, + 147, + 1, + 0, + 0, + 0, + 148, + 149, + 1, + 0, + 0, + 0, + 149, + 150, + 1, + 0, + 0, + 0, + 150, + 152, + 3, + 72, + 36, + 0, + 151, + 153, + 3, + 12, + 6, + 0, + 152, + 151, + 1, + 0, + 0, + 0, + 152, + 153, + 1, + 0, + 0, + 0, + 153, + 155, + 1, + 0, + 0, + 0, + 154, + 156, + 3, + 14, + 7, + 0, + 155, + 154, + 1, + 0, + 0, + 0, + 155, + 156, + 1, + 0, + 0, + 0, + 156, + 158, + 1, + 0, + 0, + 0, + 157, + 159, + 3, + 18, + 9, + 0, + 158, + 157, + 1, + 0, + 0, + 0, + 158, + 159, + 1, + 0, + 0, + 0, + 159, + 161, + 1, + 0, + 0, + 0, + 160, + 162, + 3, + 20, + 10, + 0, + 161, + 160, + 1, + 0, + 0, + 0, + 161, + 162, + 1, + 0, + 0, + 0, + 162, + 164, + 1, + 0, + 0, + 0, + 163, + 165, + 3, + 22, + 11, + 0, + 164, + 163, + 1, + 0, + 0, + 0, + 164, + 165, + 1, + 0, + 0, + 0, + 165, + 168, + 1, + 0, + 0, + 0, + 166, + 167, + 5, + 189, + 0, + 0, + 167, + 169, + 7, + 0, + 0, + 0, + 168, + 166, + 1, + 0, + 0, + 0, + 168, + 169, + 1, + 0, + 0, + 0, + 169, + 172, + 1, + 0, + 0, + 0, + 170, + 171, + 5, + 189, + 0, + 0, + 171, + 173, + 5, + 169, + 0, + 0, + 172, + 170, + 1, + 0, + 0, + 0, + 172, + 173, + 1, + 0, + 0, + 0, + 173, + 175, + 1, + 0, + 0, + 0, + 174, + 176, + 3, + 24, + 12, + 0, + 175, + 174, + 1, + 0, + 0, + 0, + 175, + 176, + 1, + 0, + 0, + 0, + 176, + 178, + 1, + 0, + 0, + 0, + 177, + 179, + 3, + 16, + 8, + 0, + 178, + 177, + 1, + 0, + 0, + 0, + 178, + 179, + 1, + 0, + 0, + 0, + 179, + 181, + 1, + 0, + 0, + 0, + 180, + 182, + 3, + 26, + 13, + 0, + 181, + 180, + 1, + 0, + 0, + 0, + 181, + 182, + 1, + 0, + 0, + 0, + 182, + 185, + 1, + 0, + 0, + 0, + 183, + 186, + 3, + 30, + 15, + 0, + 184, + 186, + 3, + 32, + 16, + 0, + 185, + 183, + 1, + 0, + 0, + 0, + 185, + 184, + 1, + 0, + 0, + 0, + 185, + 186, + 1, + 0, + 0, + 0, + 186, + 188, + 1, + 0, + 0, + 0, + 187, + 189, + 3, + 34, + 17, + 0, + 188, + 187, + 1, + 0, + 0, + 0, + 188, + 189, + 1, + 0, + 0, + 0, + 189, + 7, + 1, + 0, + 0, + 0, + 190, + 191, + 5, + 189, + 0, + 0, + 191, + 192, + 3, + 82, + 41, + 0, + 192, + 9, + 1, + 0, + 0, + 0, + 193, + 194, + 5, + 168, + 0, + 0, + 194, + 197, + 5, + 197, + 0, + 0, + 195, + 196, + 5, + 189, + 0, + 0, + 196, + 198, + 5, + 164, + 0, + 0, + 197, + 195, + 1, + 0, + 0, + 0, + 197, + 198, + 1, + 0, + 0, + 0, + 198, + 11, + 1, + 0, + 0, + 0, + 199, + 200, + 5, + 68, + 0, + 0, + 200, + 201, + 3, + 36, + 18, + 0, + 201, + 13, + 1, + 0, + 0, + 0, + 202, + 204, + 7, + 1, + 0, + 0, + 203, + 202, + 1, + 0, + 0, + 0, + 203, + 204, + 1, + 0, + 0, + 0, + 204, + 205, + 1, + 0, + 0, + 0, + 205, + 206, + 5, + 9, + 0, + 0, + 206, + 207, + 5, + 90, + 0, + 0, + 207, + 208, + 3, + 72, + 36, + 0, + 208, + 15, + 1, + 0, + 0, + 0, + 209, + 210, + 5, + 188, + 0, + 0, + 210, + 211, + 3, + 114, + 57, + 0, + 211, + 212, + 5, + 10, + 0, + 0, + 212, + 213, + 5, + 220, + 0, + 0, + 213, + 214, + 3, + 56, + 28, + 0, + 214, + 224, + 5, + 236, + 0, + 0, + 215, + 216, + 5, + 206, + 0, + 0, + 216, + 217, + 3, + 114, + 57, + 0, + 217, + 218, + 5, + 10, + 0, + 0, + 218, + 219, + 5, + 220, + 0, + 0, + 219, + 220, + 3, + 56, + 28, + 0, + 220, + 221, + 5, + 236, + 0, + 0, + 221, + 223, + 1, + 0, + 0, + 0, + 222, + 215, + 1, + 0, + 0, + 0, + 223, + 226, + 1, + 0, + 0, + 0, + 224, + 222, + 1, + 0, + 0, + 0, + 224, + 225, + 1, + 0, + 0, + 0, + 225, + 17, + 1, + 0, + 0, + 0, + 226, + 224, + 1, + 0, + 0, + 0, + 227, + 228, + 5, + 129, + 0, + 0, + 228, + 229, + 3, + 74, + 37, + 0, + 229, + 19, + 1, + 0, + 0, + 0, + 230, + 231, + 5, + 187, + 0, + 0, + 231, + 232, + 3, + 74, + 37, + 0, + 232, + 21, + 1, + 0, + 0, + 0, + 233, + 234, + 5, + 73, + 0, + 0, + 234, + 241, + 5, + 18, + 0, + 0, + 235, + 236, + 7, + 0, + 0, + 0, + 236, + 237, + 5, + 220, + 0, + 0, + 237, + 238, + 3, + 72, + 36, + 0, + 238, + 239, + 5, + 236, + 0, + 0, + 239, + 242, + 1, + 0, + 0, + 0, + 240, + 242, + 3, + 72, + 36, + 0, + 241, + 235, + 1, + 0, + 0, + 0, + 241, + 240, + 1, + 0, + 0, + 0, + 242, + 23, + 1, + 0, + 0, + 0, + 243, + 244, + 5, + 74, + 0, + 0, + 244, + 245, + 3, + 74, + 37, + 0, + 245, + 25, + 1, + 0, + 0, + 0, + 246, + 247, + 5, + 122, + 0, + 0, + 247, + 248, + 5, + 18, + 0, + 0, + 248, + 249, + 3, + 46, + 23, + 0, + 249, + 27, + 1, + 0, + 0, + 0, + 250, + 251, + 5, + 122, + 0, + 0, + 251, + 252, + 5, + 18, + 0, + 0, + 252, + 253, + 3, + 72, + 36, + 0, + 253, + 29, + 1, + 0, + 0, + 0, + 254, + 255, + 5, + 99, + 0, + 0, + 255, + 258, + 3, + 74, + 37, + 0, + 256, + 257, + 5, + 206, + 0, + 0, + 257, + 259, + 3, + 74, + 37, + 0, + 258, + 256, + 1, + 0, + 0, + 0, + 258, + 259, + 1, + 0, + 0, + 0, + 259, + 264, + 1, + 0, + 0, + 0, + 260, + 261, + 5, + 189, + 0, + 0, + 261, + 265, + 5, + 164, + 0, + 0, + 262, + 263, + 5, + 18, + 0, + 0, + 263, + 265, + 3, + 72, + 36, + 0, + 264, + 260, + 1, + 0, + 0, + 0, + 264, + 262, + 1, + 0, + 0, + 0, + 264, + 265, + 1, + 0, + 0, + 0, + 265, + 284, + 1, + 0, + 0, + 0, + 266, + 267, + 5, + 99, + 0, + 0, + 267, + 270, + 3, + 74, + 37, + 0, + 268, + 269, + 5, + 189, + 0, + 0, + 269, + 271, + 5, + 164, + 0, + 0, + 270, + 268, + 1, + 0, + 0, + 0, + 270, + 271, + 1, + 0, + 0, + 0, + 271, + 272, + 1, + 0, + 0, + 0, + 272, + 273, + 5, + 118, + 0, + 0, + 273, + 274, + 3, + 74, + 37, + 0, + 274, + 284, + 1, + 0, + 0, + 0, + 275, + 276, + 5, + 99, + 0, + 0, + 276, + 277, + 3, + 74, + 37, + 0, + 277, + 278, + 5, + 118, + 0, + 0, + 278, + 281, + 3, + 74, + 37, + 0, + 279, + 280, + 5, + 18, + 0, + 0, + 280, + 282, + 3, + 72, + 36, + 0, + 281, + 279, + 1, + 0, + 0, + 0, + 281, + 282, + 1, + 0, + 0, + 0, + 282, + 284, + 1, + 0, + 0, + 0, + 283, + 254, + 1, + 0, + 0, + 0, + 283, + 266, + 1, + 0, + 0, + 0, + 283, + 275, + 1, + 0, + 0, + 0, + 284, + 31, + 1, + 0, + 0, + 0, + 285, + 286, + 5, + 118, + 0, + 0, + 286, + 287, + 3, + 74, + 37, + 0, + 287, + 33, + 1, + 0, + 0, + 0, + 288, + 289, + 5, + 150, + 0, + 0, + 289, + 290, + 3, + 52, + 26, + 0, + 290, + 35, + 1, + 0, + 0, + 0, + 291, + 292, + 6, + 18, + -1, + 0, + 292, + 294, + 3, + 90, + 45, + 0, + 293, + 295, + 5, + 61, + 0, + 0, + 294, + 293, + 1, + 0, + 0, + 0, + 294, + 295, + 1, + 0, + 0, + 0, + 295, + 297, + 1, + 0, + 0, + 0, + 296, + 298, + 3, + 44, + 22, + 0, + 297, + 296, + 1, + 0, + 0, + 0, + 297, + 298, + 1, + 0, + 0, + 0, + 298, + 304, + 1, + 0, + 0, + 0, + 299, + 300, + 5, + 220, + 0, + 0, + 300, + 301, + 3, + 36, + 18, + 0, + 301, + 302, + 5, + 236, + 0, + 0, + 302, + 304, + 1, + 0, + 0, + 0, + 303, + 291, + 1, + 0, + 0, + 0, + 303, + 299, + 1, + 0, + 0, + 0, + 304, + 319, + 1, + 0, + 0, + 0, + 305, + 306, + 10, + 3, + 0, + 0, + 306, + 307, + 3, + 40, + 20, + 0, + 307, + 308, + 3, + 36, + 18, + 4, + 308, + 318, + 1, + 0, + 0, + 0, + 309, + 311, + 10, + 4, + 0, + 0, + 310, + 312, + 3, + 38, + 19, + 0, + 311, + 310, + 1, + 0, + 0, + 0, + 311, + 312, + 1, + 0, + 0, + 0, + 312, + 313, + 1, + 0, + 0, + 0, + 313, + 314, + 5, + 90, + 0, + 0, + 314, + 315, + 3, + 36, + 18, + 0, + 315, + 316, + 3, + 42, + 21, + 0, + 316, + 318, + 1, + 0, + 0, + 0, + 317, + 305, + 1, + 0, + 0, + 0, + 317, + 309, + 1, + 0, + 0, + 0, + 318, + 321, + 1, + 0, + 0, + 0, + 319, + 317, + 1, + 0, + 0, + 0, + 319, + 320, + 1, + 0, + 0, + 0, + 320, + 37, + 1, + 0, + 0, + 0, + 321, + 319, + 1, + 0, + 0, + 0, + 322, + 324, + 7, + 2, + 0, + 0, + 323, + 322, + 1, + 0, + 0, + 0, + 323, + 324, + 1, + 0, + 0, + 0, + 324, + 325, + 1, + 0, + 0, + 0, + 325, + 332, + 5, + 84, + 0, + 0, + 326, + 328, + 5, + 84, + 0, + 0, + 327, + 329, + 7, + 2, + 0, + 0, + 328, + 327, + 1, + 0, + 0, + 0, + 328, + 329, + 1, + 0, + 0, + 0, + 329, + 332, + 1, + 0, + 0, + 0, + 330, + 332, + 7, + 2, + 0, + 0, + 331, + 323, + 1, + 0, + 0, + 0, + 331, + 326, + 1, + 0, + 0, + 0, + 331, + 330, + 1, + 0, + 0, + 0, + 332, + 366, + 1, + 0, + 0, + 0, + 333, + 335, + 7, + 3, + 0, + 0, + 334, + 333, + 1, + 0, + 0, + 0, + 334, + 335, + 1, + 0, + 0, + 0, + 335, + 336, + 1, + 0, + 0, + 0, + 336, + 338, + 7, + 4, + 0, + 0, + 337, + 339, + 5, + 123, + 0, + 0, + 338, + 337, + 1, + 0, + 0, + 0, + 338, + 339, + 1, + 0, + 0, + 0, + 339, + 348, + 1, + 0, + 0, + 0, + 340, + 342, + 7, + 4, + 0, + 0, + 341, + 343, + 5, + 123, + 0, + 0, + 342, + 341, + 1, + 0, + 0, + 0, + 342, + 343, + 1, + 0, + 0, + 0, + 343, + 345, + 1, + 0, + 0, + 0, + 344, + 346, + 7, + 3, + 0, + 0, + 345, + 344, + 1, + 0, + 0, + 0, + 345, + 346, + 1, + 0, + 0, + 0, + 346, + 348, + 1, + 0, + 0, + 0, + 347, + 334, + 1, + 0, + 0, + 0, + 347, + 340, + 1, + 0, + 0, + 0, + 348, + 366, + 1, + 0, + 0, + 0, + 349, + 351, + 7, + 5, + 0, + 0, + 350, + 349, + 1, + 0, + 0, + 0, + 350, + 351, + 1, + 0, + 0, + 0, + 351, + 352, + 1, + 0, + 0, + 0, + 352, + 354, + 5, + 69, + 0, + 0, + 353, + 355, + 5, + 123, + 0, + 0, + 354, + 353, + 1, + 0, + 0, + 0, + 354, + 355, + 1, + 0, + 0, + 0, + 355, + 364, + 1, + 0, + 0, + 0, + 356, + 358, + 5, + 69, + 0, + 0, + 357, + 359, + 5, + 123, + 0, + 0, + 358, + 357, + 1, + 0, + 0, + 0, + 358, + 359, + 1, + 0, + 0, + 0, + 359, + 361, + 1, + 0, + 0, + 0, + 360, + 362, + 7, + 5, + 0, + 0, + 361, + 360, + 1, + 0, + 0, + 0, + 361, + 362, + 1, + 0, + 0, + 0, + 362, + 364, + 1, + 0, + 0, + 0, + 363, + 350, + 1, + 0, + 0, + 0, + 363, + 356, + 1, + 0, + 0, + 0, + 364, + 366, + 1, + 0, + 0, + 0, + 365, + 331, + 1, + 0, + 0, + 0, + 365, + 347, + 1, + 0, + 0, + 0, + 365, + 363, + 1, + 0, + 0, + 0, + 366, + 39, + 1, + 0, + 0, + 0, + 367, + 368, + 5, + 31, + 0, + 0, + 368, + 371, + 5, + 90, + 0, + 0, + 369, + 371, + 5, + 206, + 0, + 0, + 370, + 367, + 1, + 0, + 0, + 0, + 370, + 369, + 1, + 0, + 0, + 0, + 371, + 41, + 1, + 0, + 0, + 0, + 372, + 373, + 5, + 119, + 0, + 0, + 373, + 382, + 3, + 72, + 36, + 0, + 374, + 375, + 5, + 179, + 0, + 0, + 375, + 376, + 5, + 220, + 0, + 0, + 376, + 377, + 3, + 72, + 36, + 0, + 377, + 378, + 5, + 236, + 0, + 0, + 378, + 382, + 1, + 0, + 0, + 0, + 379, + 380, + 5, + 179, + 0, + 0, + 380, + 382, + 3, + 72, + 36, + 0, + 381, + 372, + 1, + 0, + 0, + 0, + 381, + 374, + 1, + 0, + 0, + 0, + 381, + 379, + 1, + 0, + 0, + 0, + 382, + 43, + 1, + 0, + 0, + 0, + 383, + 384, + 5, + 144, + 0, + 0, + 384, + 387, + 3, + 50, + 25, + 0, + 385, + 386, + 5, + 118, + 0, + 0, + 386, + 388, + 3, + 50, + 25, + 0, + 387, + 385, + 1, + 0, + 0, + 0, + 387, + 388, + 1, + 0, + 0, + 0, + 388, + 45, + 1, + 0, + 0, + 0, + 389, + 394, + 3, + 48, + 24, + 0, + 390, + 391, + 5, + 206, + 0, + 0, + 391, + 393, + 3, + 48, + 24, + 0, + 392, + 390, + 1, + 0, + 0, + 0, + 393, + 396, + 1, + 0, + 0, + 0, + 394, + 392, + 1, + 0, + 0, + 0, + 394, + 395, + 1, + 0, + 0, + 0, + 395, + 47, + 1, + 0, + 0, + 0, + 396, + 394, + 1, + 0, + 0, + 0, + 397, + 399, + 3, + 74, + 37, + 0, + 398, + 400, + 7, + 6, + 0, + 0, + 399, + 398, + 1, + 0, + 0, + 0, + 399, + 400, + 1, + 0, + 0, + 0, + 400, + 403, + 1, + 0, + 0, + 0, + 401, + 402, + 5, + 117, + 0, + 0, + 402, + 404, + 7, + 7, + 0, + 0, + 403, + 401, + 1, + 0, + 0, + 0, + 403, + 404, + 1, + 0, + 0, + 0, + 404, + 407, + 1, + 0, + 0, + 0, + 405, + 406, + 5, + 26, + 0, + 0, + 406, + 408, + 5, + 199, + 0, + 0, + 407, + 405, + 1, + 0, + 0, + 0, + 407, + 408, + 1, + 0, + 0, + 0, + 408, + 49, + 1, + 0, + 0, + 0, + 409, + 416, + 5, + 200, + 0, + 0, + 410, + 413, + 3, + 102, + 51, + 0, + 411, + 412, + 5, + 238, + 0, + 0, + 412, + 414, + 3, + 102, + 51, + 0, + 413, + 411, + 1, + 0, + 0, + 0, + 413, + 414, + 1, + 0, + 0, + 0, + 414, + 416, + 1, + 0, + 0, + 0, + 415, + 409, + 1, + 0, + 0, + 0, + 415, + 410, + 1, + 0, + 0, + 0, + 416, + 51, + 1, + 0, + 0, + 0, + 417, + 422, + 3, + 54, + 27, + 0, + 418, + 419, + 5, + 206, + 0, + 0, + 419, + 421, + 3, + 54, + 27, + 0, + 420, + 418, + 1, + 0, + 0, + 0, + 421, + 424, + 1, + 0, + 0, + 0, + 422, + 420, + 1, + 0, + 0, + 0, + 422, + 423, + 1, + 0, + 0, + 0, + 423, + 53, + 1, + 0, + 0, + 0, + 424, + 422, + 1, + 0, + 0, + 0, + 425, + 426, + 3, + 114, + 57, + 0, + 426, + 427, + 5, + 212, + 0, + 0, + 427, + 428, + 3, + 104, + 52, + 0, + 428, + 55, + 1, + 0, + 0, + 0, + 429, + 431, + 3, + 58, + 29, + 0, + 430, + 429, + 1, + 0, + 0, + 0, + 430, + 431, + 1, + 0, + 0, + 0, + 431, + 433, + 1, + 0, + 0, + 0, + 432, + 434, + 3, + 60, + 30, + 0, + 433, + 432, + 1, + 0, + 0, + 0, + 433, + 434, + 1, + 0, + 0, + 0, + 434, + 436, + 1, + 0, + 0, + 0, + 435, + 437, + 3, + 62, + 31, + 0, + 436, + 435, + 1, + 0, + 0, + 0, + 436, + 437, + 1, + 0, + 0, + 0, + 437, + 57, + 1, + 0, + 0, + 0, + 438, + 439, + 5, + 126, + 0, + 0, + 439, + 440, + 5, + 18, + 0, + 0, + 440, + 441, + 3, + 72, + 36, + 0, + 441, + 59, + 1, + 0, + 0, + 0, + 442, + 443, + 5, + 122, + 0, + 0, + 443, + 444, + 5, + 18, + 0, + 0, + 444, + 445, + 3, + 46, + 23, + 0, + 445, + 61, + 1, + 0, + 0, + 0, + 446, + 447, + 7, + 8, + 0, + 0, + 447, + 448, + 3, + 64, + 32, + 0, + 448, + 63, + 1, + 0, + 0, + 0, + 449, + 456, + 3, + 66, + 33, + 0, + 450, + 451, + 5, + 16, + 0, + 0, + 451, + 452, + 3, + 66, + 33, + 0, + 452, + 453, + 5, + 6, + 0, + 0, + 453, + 454, + 3, + 66, + 33, + 0, + 454, + 456, + 1, + 0, + 0, + 0, + 455, + 449, + 1, + 0, + 0, + 0, + 455, + 450, + 1, + 0, + 0, + 0, + 456, + 65, + 1, + 0, + 0, + 0, + 457, + 458, + 5, + 33, + 0, + 0, + 458, + 470, + 5, + 142, + 0, + 0, + 459, + 460, + 5, + 175, + 0, + 0, + 460, + 470, + 5, + 128, + 0, + 0, + 461, + 462, + 5, + 175, + 0, + 0, + 462, + 470, + 5, + 64, + 0, + 0, + 463, + 464, + 3, + 102, + 51, + 0, + 464, + 465, + 5, + 128, + 0, + 0, + 465, + 470, + 1, + 0, + 0, + 0, + 466, + 467, + 3, + 102, + 51, + 0, + 467, + 468, + 5, + 64, + 0, + 0, + 468, + 470, + 1, + 0, + 0, + 0, + 469, + 457, + 1, + 0, + 0, + 0, + 469, + 459, + 1, + 0, + 0, + 0, + 469, + 461, + 1, + 0, + 0, + 0, + 469, + 463, + 1, + 0, + 0, + 0, + 469, + 466, + 1, + 0, + 0, + 0, + 470, + 67, + 1, + 0, + 0, + 0, + 471, + 472, + 3, + 74, + 37, + 0, + 472, + 473, + 5, + 0, + 0, + 1, + 473, + 69, + 1, + 0, + 0, + 0, + 474, + 522, + 3, + 114, + 57, + 0, + 475, + 476, + 3, + 114, + 57, + 0, + 476, + 477, + 5, + 220, + 0, + 0, + 477, + 478, + 3, + 114, + 57, + 0, + 478, + 485, + 3, + 70, + 35, + 0, + 479, + 480, + 5, + 206, + 0, + 0, + 480, + 481, + 3, + 114, + 57, + 0, + 481, + 482, + 3, + 70, + 35, + 0, + 482, + 484, + 1, + 0, + 0, + 0, + 483, + 479, + 1, + 0, + 0, + 0, + 484, + 487, + 1, + 0, + 0, + 0, + 485, + 483, + 1, + 0, + 0, + 0, + 485, + 486, + 1, + 0, + 0, + 0, + 486, + 488, + 1, + 0, + 0, + 0, + 487, + 485, + 1, + 0, + 0, + 0, + 488, + 489, + 5, + 236, + 0, + 0, + 489, + 522, + 1, + 0, + 0, + 0, + 490, + 491, + 3, + 114, + 57, + 0, + 491, + 492, + 5, + 220, + 0, + 0, + 492, + 497, + 3, + 116, + 58, + 0, + 493, + 494, + 5, + 206, + 0, + 0, + 494, + 496, + 3, + 116, + 58, + 0, + 495, + 493, + 1, + 0, + 0, + 0, + 496, + 499, + 1, + 0, + 0, + 0, + 497, + 495, + 1, + 0, + 0, + 0, + 497, + 498, + 1, + 0, + 0, + 0, + 498, + 500, + 1, + 0, + 0, + 0, + 499, + 497, + 1, + 0, + 0, + 0, + 500, + 501, + 5, + 236, + 0, + 0, + 501, + 522, + 1, + 0, + 0, + 0, + 502, + 503, + 3, + 114, + 57, + 0, + 503, + 504, + 5, + 220, + 0, + 0, + 504, + 509, + 3, + 70, + 35, + 0, + 505, + 506, + 5, + 206, + 0, + 0, + 506, + 508, + 3, + 70, + 35, + 0, + 507, + 505, + 1, + 0, + 0, + 0, + 508, + 511, + 1, + 0, + 0, + 0, + 509, + 507, + 1, + 0, + 0, + 0, + 509, + 510, + 1, + 0, + 0, + 0, + 510, + 512, + 1, + 0, + 0, + 0, + 511, + 509, + 1, + 0, + 0, + 0, + 512, + 513, + 5, + 236, + 0, + 0, + 513, + 522, + 1, + 0, + 0, + 0, + 514, + 515, + 3, + 114, + 57, + 0, + 515, + 517, + 5, + 220, + 0, + 0, + 516, + 518, + 3, + 72, + 36, + 0, + 517, + 516, + 1, + 0, + 0, + 0, + 517, + 518, + 1, + 0, + 0, + 0, + 518, + 519, + 1, + 0, + 0, + 0, + 519, + 520, + 5, + 236, + 0, + 0, + 520, + 522, + 1, + 0, + 0, + 0, + 521, + 474, + 1, + 0, + 0, + 0, + 521, + 475, + 1, + 0, + 0, + 0, + 521, + 490, + 1, + 0, + 0, + 0, + 521, + 502, + 1, + 0, + 0, + 0, + 521, + 514, + 1, + 0, + 0, + 0, + 522, + 71, + 1, + 0, + 0, + 0, + 523, + 528, + 3, + 74, + 37, + 0, + 524, + 525, + 5, + 206, + 0, + 0, + 525, + 527, + 3, + 74, + 37, + 0, + 526, + 524, + 1, + 0, + 0, + 0, + 527, + 530, + 1, + 0, + 0, + 0, + 528, + 526, + 1, + 0, + 0, + 0, + 528, + 529, + 1, + 0, + 0, + 0, + 529, + 73, + 1, + 0, + 0, + 0, + 530, + 528, + 1, + 0, + 0, + 0, + 531, + 532, + 6, + 37, + -1, + 0, + 532, + 534, + 5, + 19, + 0, + 0, + 533, + 535, + 3, + 74, + 37, + 0, + 534, + 533, + 1, + 0, + 0, + 0, + 534, + 535, + 1, + 0, + 0, + 0, + 535, + 541, + 1, + 0, + 0, + 0, + 536, + 537, + 5, + 186, + 0, + 0, + 537, + 538, + 3, + 74, + 37, + 0, + 538, + 539, + 5, + 163, + 0, + 0, + 539, + 540, + 3, + 74, + 37, + 0, + 540, + 542, + 1, + 0, + 0, + 0, + 541, + 536, + 1, + 0, + 0, + 0, + 542, + 543, + 1, + 0, + 0, + 0, + 543, + 541, + 1, + 0, + 0, + 0, + 543, + 544, + 1, + 0, + 0, + 0, + 544, + 547, + 1, + 0, + 0, + 0, + 545, + 546, + 5, + 52, + 0, + 0, + 546, + 548, + 3, + 74, + 37, + 0, + 547, + 545, + 1, + 0, + 0, + 0, + 547, + 548, + 1, + 0, + 0, + 0, + 548, + 549, + 1, + 0, + 0, + 0, + 549, + 550, + 5, + 53, + 0, + 0, + 550, + 661, + 1, + 0, + 0, + 0, + 551, + 552, + 5, + 20, + 0, + 0, + 552, + 553, + 5, + 220, + 0, + 0, + 553, + 554, + 3, + 74, + 37, + 0, + 554, + 555, + 5, + 10, + 0, + 0, + 555, + 556, + 3, + 70, + 35, + 0, + 556, + 557, + 5, + 236, + 0, + 0, + 557, + 661, + 1, + 0, + 0, + 0, + 558, + 559, + 5, + 36, + 0, + 0, + 559, + 661, + 5, + 199, + 0, + 0, + 560, + 561, + 5, + 59, + 0, + 0, + 561, + 562, + 5, + 220, + 0, + 0, + 562, + 563, + 3, + 106, + 53, + 0, + 563, + 564, + 5, + 68, + 0, + 0, + 564, + 565, + 3, + 74, + 37, + 0, + 565, + 566, + 5, + 236, + 0, + 0, + 566, + 661, + 1, + 0, + 0, + 0, + 567, + 568, + 5, + 86, + 0, + 0, + 568, + 569, + 3, + 74, + 37, + 0, + 569, + 570, + 3, + 106, + 53, + 0, + 570, + 661, + 1, + 0, + 0, + 0, + 571, + 572, + 5, + 155, + 0, + 0, + 572, + 573, + 5, + 220, + 0, + 0, + 573, + 574, + 3, + 74, + 37, + 0, + 574, + 575, + 5, + 68, + 0, + 0, + 575, + 578, + 3, + 74, + 37, + 0, + 576, + 577, + 5, + 65, + 0, + 0, + 577, + 579, + 3, + 74, + 37, + 0, + 578, + 576, + 1, + 0, + 0, + 0, + 578, + 579, + 1, + 0, + 0, + 0, + 579, + 580, + 1, + 0, + 0, + 0, + 580, + 581, + 5, + 236, + 0, + 0, + 581, + 661, + 1, + 0, + 0, + 0, + 582, + 583, + 5, + 166, + 0, + 0, + 583, + 661, + 5, + 199, + 0, + 0, + 584, + 585, + 5, + 171, + 0, + 0, + 585, + 586, + 5, + 220, + 0, + 0, + 586, + 587, + 7, + 9, + 0, + 0, + 587, + 588, + 5, + 199, + 0, + 0, + 588, + 589, + 5, + 68, + 0, + 0, + 589, + 590, + 3, + 74, + 37, + 0, + 590, + 591, + 5, + 236, + 0, + 0, + 591, + 661, + 1, + 0, + 0, + 0, + 592, + 593, + 3, + 114, + 57, + 0, + 593, + 595, + 5, + 220, + 0, + 0, + 594, + 596, + 3, + 72, + 36, + 0, + 595, + 594, + 1, + 0, + 0, + 0, + 595, + 596, + 1, + 0, + 0, + 0, + 596, + 597, + 1, + 0, + 0, + 0, + 597, + 598, + 5, + 236, + 0, + 0, + 598, + 599, + 1, + 0, + 0, + 0, + 599, + 600, + 5, + 125, + 0, + 0, + 600, + 601, + 5, + 220, + 0, + 0, + 601, + 602, + 3, + 56, + 28, + 0, + 602, + 603, + 5, + 236, + 0, + 0, + 603, + 661, + 1, + 0, + 0, + 0, + 604, + 605, + 3, + 114, + 57, + 0, + 605, + 607, + 5, + 220, + 0, + 0, + 606, + 608, + 3, + 72, + 36, + 0, + 607, + 606, + 1, + 0, + 0, + 0, + 607, + 608, + 1, + 0, + 0, + 0, + 608, + 609, + 1, + 0, + 0, + 0, + 609, + 610, + 5, + 236, + 0, + 0, + 610, + 611, + 1, + 0, + 0, + 0, + 611, + 612, + 5, + 125, + 0, + 0, + 612, + 613, + 3, + 114, + 57, + 0, + 613, + 661, + 1, + 0, + 0, + 0, + 614, + 620, + 3, + 114, + 57, + 0, + 615, + 617, + 5, + 220, + 0, + 0, + 616, + 618, + 3, + 72, + 36, + 0, + 617, + 616, + 1, + 0, + 0, + 0, + 617, + 618, + 1, + 0, + 0, + 0, + 618, + 619, + 1, + 0, + 0, + 0, + 619, + 621, + 5, + 236, + 0, + 0, + 620, + 615, + 1, + 0, + 0, + 0, + 620, + 621, + 1, + 0, + 0, + 0, + 621, + 622, + 1, + 0, + 0, + 0, + 622, + 624, + 5, + 220, + 0, + 0, + 623, + 625, + 5, + 49, + 0, + 0, + 624, + 623, + 1, + 0, + 0, + 0, + 624, + 625, + 1, + 0, + 0, + 0, + 625, + 627, + 1, + 0, + 0, + 0, + 626, + 628, + 3, + 76, + 38, + 0, + 627, + 626, + 1, + 0, + 0, + 0, + 627, + 628, + 1, + 0, + 0, + 0, + 628, + 629, + 1, + 0, + 0, + 0, + 629, + 630, + 5, + 236, + 0, + 0, + 630, + 661, + 1, + 0, + 0, + 0, + 631, + 661, + 3, + 104, + 52, + 0, + 632, + 633, + 5, + 208, + 0, + 0, + 633, + 661, + 3, + 74, + 37, + 18, + 634, + 635, + 5, + 115, + 0, + 0, + 635, + 661, + 3, + 74, + 37, + 12, + 636, + 637, + 3, + 94, + 47, + 0, + 637, + 638, + 5, + 210, + 0, + 0, + 638, + 640, + 1, + 0, + 0, + 0, + 639, + 636, + 1, + 0, + 0, + 0, + 639, + 640, + 1, + 0, + 0, + 0, + 640, + 641, + 1, + 0, + 0, + 0, + 641, + 661, + 5, + 202, + 0, + 0, + 642, + 643, + 5, + 220, + 0, + 0, + 643, + 644, + 3, + 2, + 1, + 0, + 644, + 645, + 5, + 236, + 0, + 0, + 645, + 661, + 1, + 0, + 0, + 0, + 646, + 647, + 5, + 220, + 0, + 0, + 647, + 648, + 3, + 74, + 37, + 0, + 648, + 649, + 5, + 236, + 0, + 0, + 649, + 661, + 1, + 0, + 0, + 0, + 650, + 651, + 5, + 220, + 0, + 0, + 651, + 652, + 3, + 72, + 36, + 0, + 652, + 653, + 5, + 236, + 0, + 0, + 653, + 661, + 1, + 0, + 0, + 0, + 654, + 656, + 5, + 219, + 0, + 0, + 655, + 657, + 3, + 72, + 36, + 0, + 656, + 655, + 1, + 0, + 0, + 0, + 656, + 657, + 1, + 0, + 0, + 0, + 657, + 658, + 1, + 0, + 0, + 0, + 658, + 661, + 5, + 235, + 0, + 0, + 659, + 661, + 3, + 86, + 43, + 0, + 660, + 531, + 1, + 0, + 0, + 0, + 660, + 551, + 1, + 0, + 0, + 0, + 660, + 558, + 1, + 0, + 0, + 0, + 660, + 560, + 1, + 0, + 0, + 0, + 660, + 567, + 1, + 0, + 0, + 0, + 660, + 571, + 1, + 0, + 0, + 0, + 660, + 582, + 1, + 0, + 0, + 0, + 660, + 584, + 1, + 0, + 0, + 0, + 660, + 592, + 1, + 0, + 0, + 0, + 660, + 604, + 1, + 0, + 0, + 0, + 660, + 614, + 1, + 0, + 0, + 0, + 660, + 631, + 1, + 0, + 0, + 0, + 660, + 632, + 1, + 0, + 0, + 0, + 660, + 634, + 1, + 0, + 0, + 0, + 660, + 639, + 1, + 0, + 0, + 0, + 660, + 642, + 1, + 0, + 0, + 0, + 660, + 646, + 1, + 0, + 0, + 0, + 660, + 650, + 1, + 0, + 0, + 0, + 660, + 654, + 1, + 0, + 0, + 0, + 660, + 659, + 1, + 0, + 0, + 0, + 661, + 755, + 1, + 0, + 0, + 0, + 662, + 666, + 10, + 17, + 0, + 0, + 663, + 667, + 5, + 202, + 0, + 0, + 664, + 667, + 5, + 238, + 0, + 0, + 665, + 667, + 5, + 227, + 0, + 0, + 666, + 663, + 1, + 0, + 0, + 0, + 666, + 664, + 1, + 0, + 0, + 0, + 666, + 665, + 1, + 0, + 0, + 0, + 667, + 668, + 1, + 0, + 0, + 0, + 668, + 754, + 3, + 74, + 37, + 18, + 669, + 673, + 10, + 16, + 0, + 0, + 670, + 674, + 5, + 228, + 0, + 0, + 671, + 674, + 5, + 208, + 0, + 0, + 672, + 674, + 5, + 207, + 0, + 0, + 673, + 670, + 1, + 0, + 0, + 0, + 673, + 671, + 1, + 0, + 0, + 0, + 673, + 672, + 1, + 0, + 0, + 0, + 674, + 675, + 1, + 0, + 0, + 0, + 675, + 754, + 3, + 74, + 37, + 17, + 676, + 701, + 10, + 15, + 0, + 0, + 677, + 702, + 5, + 211, + 0, + 0, + 678, + 702, + 5, + 212, + 0, + 0, + 679, + 702, + 5, + 223, + 0, + 0, + 680, + 702, + 5, + 221, + 0, + 0, + 681, + 702, + 5, + 222, + 0, + 0, + 682, + 702, + 5, + 213, + 0, + 0, + 683, + 702, + 5, + 214, + 0, + 0, + 684, + 686, + 5, + 115, + 0, + 0, + 685, + 684, + 1, + 0, + 0, + 0, + 685, + 686, + 1, + 0, + 0, + 0, + 686, + 687, + 1, + 0, + 0, + 0, + 687, + 689, + 5, + 80, + 0, + 0, + 688, + 690, + 5, + 25, + 0, + 0, + 689, + 688, + 1, + 0, + 0, + 0, + 689, + 690, + 1, + 0, + 0, + 0, + 690, + 702, + 1, + 0, + 0, + 0, + 691, + 693, + 5, + 115, + 0, + 0, + 692, + 691, + 1, + 0, + 0, + 0, + 692, + 693, + 1, + 0, + 0, + 0, + 693, + 694, + 1, + 0, + 0, + 0, + 694, + 702, + 7, + 10, + 0, + 0, + 695, + 702, + 5, + 232, + 0, + 0, + 696, + 702, + 5, + 233, + 0, + 0, + 697, + 702, + 5, + 225, + 0, + 0, + 698, + 702, + 5, + 216, + 0, + 0, + 699, + 702, + 5, + 217, + 0, + 0, + 700, + 702, + 5, + 224, + 0, + 0, + 701, + 677, + 1, + 0, + 0, + 0, + 701, + 678, + 1, + 0, + 0, + 0, + 701, + 679, + 1, + 0, + 0, + 0, + 701, + 680, + 1, + 0, + 0, + 0, + 701, + 681, + 1, + 0, + 0, + 0, + 701, + 682, + 1, + 0, + 0, + 0, + 701, + 683, + 1, + 0, + 0, + 0, + 701, + 685, + 1, + 0, + 0, + 0, + 701, + 692, + 1, + 0, + 0, + 0, + 701, + 695, + 1, + 0, + 0, + 0, + 701, + 696, + 1, + 0, + 0, + 0, + 701, + 697, + 1, + 0, + 0, + 0, + 701, + 698, + 1, + 0, + 0, + 0, + 701, + 699, + 1, + 0, + 0, + 0, + 701, + 700, + 1, + 0, + 0, + 0, + 702, + 703, + 1, + 0, + 0, + 0, + 703, + 754, + 3, + 74, + 37, + 16, + 704, + 705, + 10, + 13, + 0, + 0, + 705, + 706, + 5, + 226, + 0, + 0, + 706, + 754, + 3, + 74, + 37, + 14, + 707, + 708, + 10, + 11, + 0, + 0, + 708, + 709, + 5, + 6, + 0, + 0, + 709, + 754, + 3, + 74, + 37, + 12, + 710, + 711, + 10, + 10, + 0, + 0, + 711, + 712, + 5, + 121, + 0, + 0, + 712, + 754, + 3, + 74, + 37, + 11, + 713, + 715, + 10, + 9, + 0, + 0, + 714, + 716, + 5, + 115, + 0, + 0, + 715, + 714, + 1, + 0, + 0, + 0, + 715, + 716, + 1, + 0, + 0, + 0, + 716, + 717, + 1, + 0, + 0, + 0, + 717, + 718, + 5, + 16, + 0, + 0, + 718, + 719, + 3, + 74, + 37, + 0, + 719, + 720, + 5, + 6, + 0, + 0, + 720, + 721, + 3, + 74, + 37, + 10, + 721, + 754, + 1, + 0, + 0, + 0, + 722, + 723, + 10, + 8, + 0, + 0, + 723, + 724, + 5, + 229, + 0, + 0, + 724, + 725, + 3, + 74, + 37, + 0, + 725, + 726, + 5, + 205, + 0, + 0, + 726, + 727, + 3, + 74, + 37, + 8, + 727, + 754, + 1, + 0, + 0, + 0, + 728, + 729, + 10, + 21, + 0, + 0, + 729, + 730, + 5, + 219, + 0, + 0, + 730, + 731, + 3, + 74, + 37, + 0, + 731, + 732, + 5, + 235, + 0, + 0, + 732, + 754, + 1, + 0, + 0, + 0, + 733, + 734, + 10, + 20, + 0, + 0, + 734, + 735, + 5, + 210, + 0, + 0, + 735, + 754, + 5, + 197, + 0, + 0, + 736, + 737, + 10, + 19, + 0, + 0, + 737, + 738, + 5, + 210, + 0, + 0, + 738, + 754, + 3, + 114, + 57, + 0, + 739, + 740, + 10, + 14, + 0, + 0, + 740, + 742, + 5, + 88, + 0, + 0, + 741, + 743, + 5, + 115, + 0, + 0, + 742, + 741, + 1, + 0, + 0, + 0, + 742, + 743, + 1, + 0, + 0, + 0, + 743, + 744, + 1, + 0, + 0, + 0, + 744, + 754, + 5, + 116, + 0, + 0, + 745, + 751, + 10, + 7, + 0, + 0, + 746, + 752, + 3, + 112, + 56, + 0, + 747, + 748, + 5, + 10, + 0, + 0, + 748, + 752, + 3, + 114, + 57, + 0, + 749, + 750, + 5, + 10, + 0, + 0, + 750, + 752, + 5, + 199, + 0, + 0, + 751, + 746, + 1, + 0, + 0, + 0, + 751, + 747, + 1, + 0, + 0, + 0, + 751, + 749, + 1, + 0, + 0, + 0, + 752, + 754, + 1, + 0, + 0, + 0, + 753, + 662, + 1, + 0, + 0, + 0, + 753, + 669, + 1, + 0, + 0, + 0, + 753, + 676, + 1, + 0, + 0, + 0, + 753, + 704, + 1, + 0, + 0, + 0, + 753, + 707, + 1, + 0, + 0, + 0, + 753, + 710, + 1, + 0, + 0, + 0, + 753, + 713, + 1, + 0, + 0, + 0, + 753, + 722, + 1, + 0, + 0, + 0, + 753, + 728, + 1, + 0, + 0, + 0, + 753, + 733, + 1, + 0, + 0, + 0, + 753, + 736, + 1, + 0, + 0, + 0, + 753, + 739, + 1, + 0, + 0, + 0, + 753, + 745, + 1, + 0, + 0, + 0, + 754, + 757, + 1, + 0, + 0, + 0, + 755, + 753, + 1, + 0, + 0, + 0, + 755, + 756, + 1, + 0, + 0, + 0, + 756, + 75, + 1, + 0, + 0, + 0, + 757, + 755, + 1, + 0, + 0, + 0, + 758, + 763, + 3, + 78, + 39, + 0, + 759, + 760, + 5, + 206, + 0, + 0, + 760, + 762, + 3, + 78, + 39, + 0, + 761, + 759, + 1, + 0, + 0, + 0, + 762, + 765, + 1, + 0, + 0, + 0, + 763, + 761, + 1, + 0, + 0, + 0, + 763, + 764, + 1, + 0, + 0, + 0, + 764, + 77, + 1, + 0, + 0, + 0, + 765, + 763, + 1, + 0, + 0, + 0, + 766, + 769, + 3, + 80, + 40, + 0, + 767, + 769, + 3, + 74, + 37, + 0, + 768, + 766, + 1, + 0, + 0, + 0, + 768, + 767, + 1, + 0, + 0, + 0, + 769, + 79, + 1, + 0, + 0, + 0, + 770, + 771, + 5, + 220, + 0, + 0, + 771, + 776, + 3, + 114, + 57, + 0, + 772, + 773, + 5, + 206, + 0, + 0, + 773, + 775, + 3, + 114, + 57, + 0, + 774, + 772, + 1, + 0, + 0, + 0, + 775, + 778, + 1, + 0, + 0, + 0, + 776, + 774, + 1, + 0, + 0, + 0, + 776, + 777, + 1, + 0, + 0, + 0, + 777, + 779, + 1, + 0, + 0, + 0, + 778, + 776, + 1, + 0, + 0, + 0, + 779, + 780, + 5, + 236, + 0, + 0, + 780, + 790, + 1, + 0, + 0, + 0, + 781, + 786, + 3, + 114, + 57, + 0, + 782, + 783, + 5, + 206, + 0, + 0, + 783, + 785, + 3, + 114, + 57, + 0, + 784, + 782, + 1, + 0, + 0, + 0, + 785, + 788, + 1, + 0, + 0, + 0, + 786, + 784, + 1, + 0, + 0, + 0, + 786, + 787, + 1, + 0, + 0, + 0, + 787, + 790, + 1, + 0, + 0, + 0, + 788, + 786, + 1, + 0, + 0, + 0, + 789, + 770, + 1, + 0, + 0, + 0, + 789, + 781, + 1, + 0, + 0, + 0, + 790, + 791, + 1, + 0, + 0, + 0, + 791, + 792, + 5, + 201, + 0, + 0, + 792, + 793, + 3, + 74, + 37, + 0, + 793, + 81, + 1, + 0, + 0, + 0, + 794, + 799, + 3, + 84, + 42, + 0, + 795, + 796, + 5, + 206, + 0, + 0, + 796, + 798, + 3, + 84, + 42, + 0, + 797, + 795, + 1, + 0, + 0, + 0, + 798, + 801, + 1, + 0, + 0, + 0, + 799, + 797, + 1, + 0, + 0, + 0, + 799, + 800, + 1, + 0, + 0, + 0, + 800, + 83, + 1, + 0, + 0, + 0, + 801, + 799, + 1, + 0, + 0, + 0, + 802, + 803, + 3, + 114, + 57, + 0, + 803, + 804, + 5, + 10, + 0, + 0, + 804, + 805, + 5, + 220, + 0, + 0, + 805, + 806, + 3, + 2, + 1, + 0, + 806, + 807, + 5, + 236, + 0, + 0, + 807, + 813, + 1, + 0, + 0, + 0, + 808, + 809, + 3, + 74, + 37, + 0, + 809, + 810, + 5, + 10, + 0, + 0, + 810, + 811, + 3, + 114, + 57, + 0, + 811, + 813, + 1, + 0, + 0, + 0, + 812, + 802, + 1, + 0, + 0, + 0, + 812, + 808, + 1, + 0, + 0, + 0, + 813, + 85, + 1, + 0, + 0, + 0, + 814, + 822, + 5, + 200, + 0, + 0, + 815, + 816, + 3, + 94, + 47, + 0, + 816, + 817, + 5, + 210, + 0, + 0, + 817, + 819, + 1, + 0, + 0, + 0, + 818, + 815, + 1, + 0, + 0, + 0, + 818, + 819, + 1, + 0, + 0, + 0, + 819, + 820, + 1, + 0, + 0, + 0, + 820, + 822, + 3, + 88, + 44, + 0, + 821, + 814, + 1, + 0, + 0, + 0, + 821, + 818, + 1, + 0, + 0, + 0, + 822, + 87, + 1, + 0, + 0, + 0, + 823, + 828, + 3, + 114, + 57, + 0, + 824, + 825, + 5, + 210, + 0, + 0, + 825, + 827, + 3, + 114, + 57, + 0, + 826, + 824, + 1, + 0, + 0, + 0, + 827, + 830, + 1, + 0, + 0, + 0, + 828, + 826, + 1, + 0, + 0, + 0, + 828, + 829, + 1, + 0, + 0, + 0, + 829, + 89, + 1, + 0, + 0, + 0, + 830, + 828, + 1, + 0, + 0, + 0, + 831, + 832, + 6, + 45, + -1, + 0, + 832, + 840, + 3, + 94, + 47, + 0, + 833, + 840, + 3, + 92, + 46, + 0, + 834, + 835, + 5, + 220, + 0, + 0, + 835, + 836, + 3, + 2, + 1, + 0, + 836, + 837, + 5, + 236, + 0, + 0, + 837, + 840, + 1, + 0, + 0, + 0, + 838, + 840, + 5, + 200, + 0, + 0, + 839, + 831, + 1, + 0, + 0, + 0, + 839, + 833, + 1, + 0, + 0, + 0, + 839, + 834, + 1, + 0, + 0, + 0, + 839, + 838, + 1, + 0, + 0, + 0, + 840, + 849, + 1, + 0, + 0, + 0, + 841, + 845, + 10, + 2, + 0, + 0, + 842, + 846, + 3, + 112, + 56, + 0, + 843, + 844, + 5, + 10, + 0, + 0, + 844, + 846, + 3, + 114, + 57, + 0, + 845, + 842, + 1, + 0, + 0, + 0, + 845, + 843, + 1, + 0, + 0, + 0, + 846, + 848, + 1, + 0, + 0, + 0, + 847, + 841, + 1, + 0, + 0, + 0, + 848, + 851, + 1, + 0, + 0, + 0, + 849, + 847, + 1, + 0, + 0, + 0, + 849, + 850, + 1, + 0, + 0, + 0, + 850, + 91, + 1, + 0, + 0, + 0, + 851, + 849, + 1, + 0, + 0, + 0, + 852, + 853, + 3, + 114, + 57, + 0, + 853, + 855, + 5, + 220, + 0, + 0, + 854, + 856, + 3, + 96, + 48, + 0, + 855, + 854, + 1, + 0, + 0, + 0, + 855, + 856, + 1, + 0, + 0, + 0, + 856, + 857, + 1, + 0, + 0, + 0, + 857, + 858, + 5, + 236, + 0, + 0, + 858, + 93, + 1, + 0, + 0, + 0, + 859, + 860, + 3, + 98, + 49, + 0, + 860, + 861, + 5, + 210, + 0, + 0, + 861, + 863, + 1, + 0, + 0, + 0, + 862, + 859, + 1, + 0, + 0, + 0, + 862, + 863, + 1, + 0, + 0, + 0, + 863, + 864, + 1, + 0, + 0, + 0, + 864, + 865, + 3, + 114, + 57, + 0, + 865, + 95, + 1, + 0, + 0, + 0, + 866, + 871, + 3, + 74, + 37, + 0, + 867, + 868, + 5, + 206, + 0, + 0, + 868, + 870, + 3, + 74, + 37, + 0, + 869, + 867, + 1, + 0, + 0, + 0, + 870, + 873, + 1, + 0, + 0, + 0, + 871, + 869, + 1, + 0, + 0, + 0, + 871, + 872, + 1, + 0, + 0, + 0, + 872, + 97, + 1, + 0, + 0, + 0, + 873, + 871, + 1, + 0, + 0, + 0, + 874, + 875, + 3, + 114, + 57, + 0, + 875, + 99, + 1, + 0, + 0, + 0, + 876, + 885, + 5, + 195, + 0, + 0, + 877, + 878, + 5, + 210, + 0, + 0, + 878, + 885, + 7, + 11, + 0, + 0, + 879, + 880, + 5, + 197, + 0, + 0, + 880, + 882, + 5, + 210, + 0, + 0, + 881, + 883, + 7, + 11, + 0, + 0, + 882, + 881, + 1, + 0, + 0, + 0, + 882, + 883, + 1, + 0, + 0, + 0, + 883, + 885, + 1, + 0, + 0, + 0, + 884, + 876, + 1, + 0, + 0, + 0, + 884, + 877, + 1, + 0, + 0, + 0, + 884, + 879, + 1, + 0, + 0, + 0, + 885, + 101, + 1, + 0, + 0, + 0, + 886, + 888, + 7, + 12, + 0, + 0, + 887, + 886, + 1, + 0, + 0, + 0, + 887, + 888, + 1, + 0, + 0, + 0, + 888, + 895, + 1, + 0, + 0, + 0, + 889, + 896, + 3, + 100, + 50, + 0, + 890, + 896, + 5, + 196, + 0, + 0, + 891, + 896, + 5, + 197, + 0, + 0, + 892, + 896, + 5, + 198, + 0, + 0, + 893, + 896, + 5, + 82, + 0, + 0, + 894, + 896, + 5, + 113, + 0, + 0, + 895, + 889, + 1, + 0, + 0, + 0, + 895, + 890, + 1, + 0, + 0, + 0, + 895, + 891, + 1, + 0, + 0, + 0, + 895, + 892, + 1, + 0, + 0, + 0, + 895, + 893, + 1, + 0, + 0, + 0, + 895, + 894, + 1, + 0, + 0, + 0, + 896, + 103, + 1, + 0, + 0, + 0, + 897, + 901, + 3, + 102, + 51, + 0, + 898, + 901, + 5, + 199, + 0, + 0, + 899, + 901, + 5, + 116, + 0, + 0, + 900, + 897, + 1, + 0, + 0, + 0, + 900, + 898, + 1, + 0, + 0, + 0, + 900, + 899, + 1, + 0, + 0, + 0, + 901, + 105, + 1, + 0, + 0, + 0, + 902, + 903, + 7, + 13, + 0, + 0, + 903, + 107, + 1, + 0, + 0, + 0, + 904, + 905, + 7, + 14, + 0, + 0, + 905, + 109, + 1, + 0, + 0, + 0, + 906, + 907, + 7, + 15, + 0, + 0, + 907, + 111, + 1, + 0, + 0, + 0, + 908, + 911, + 5, + 194, + 0, + 0, + 909, + 911, + 3, + 110, + 55, + 0, + 910, + 908, + 1, + 0, + 0, + 0, + 910, + 909, + 1, + 0, + 0, + 0, + 911, + 113, + 1, + 0, + 0, + 0, + 912, + 916, + 5, + 194, + 0, + 0, + 913, + 916, + 3, + 106, + 53, + 0, + 914, + 916, + 3, + 108, + 54, + 0, + 915, + 912, + 1, + 0, + 0, + 0, + 915, + 913, + 1, + 0, + 0, + 0, + 915, + 914, + 1, + 0, + 0, + 0, + 916, + 115, + 1, + 0, + 0, + 0, + 917, + 918, + 5, + 199, + 0, + 0, + 918, + 919, + 5, + 212, + 0, + 0, + 919, + 920, + 3, + 102, + 51, + 0, + 920, + 117, + 1, + 0, + 0, + 0, + 115, + 120, + 130, + 138, + 141, + 145, + 148, + 152, + 155, + 158, + 161, + 164, + 168, + 172, + 175, + 178, + 181, + 185, + 188, + 197, + 203, + 224, + 241, + 258, + 264, + 270, + 281, + 283, + 294, + 297, + 303, + 311, + 317, + 319, + 323, + 328, + 331, + 334, + 338, + 342, + 345, + 347, + 350, + 354, + 358, + 361, + 363, + 365, + 370, + 381, + 387, + 394, + 399, + 403, + 407, + 413, + 415, + 422, + 430, + 433, + 436, + 455, + 469, + 485, + 497, + 509, + 517, + 521, + 528, + 534, + 543, + 547, + 578, + 595, + 607, + 617, + 620, + 624, + 627, + 639, + 656, + 660, + 666, + 673, + 685, + 689, + 692, + 701, + 715, + 742, + 751, + 753, + 755, + 763, + 768, + 776, + 786, + 789, + 799, + 812, + 818, + 821, + 828, + 839, + 845, + 849, + 855, + 862, + 871, + 882, + 884, + 887, + 895, + 900, + 910, + 915, ] -class HogQLParser ( Parser ): + +class HogQLParser(Parser): grammarFileName = "HogQLParser.g4" atn = ATNDeserializer().deserialize(serializedATN()) - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] sharedContextCache = PredictionContextCache() - literalNames = [ "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "'false'", "'true'", - "", "", "", "", - "", "", "", "", - "'->'", "'*'", "'`'", "'\\'", "':'", "','", "'||'", - "'-'", "'$'", "'.'", "'=='", "'='", "'>='", "'>'", - "'#'", "'~*'", "'=~*'", "'{'", "'['", "'('", "'<='", - "'<'", "", "'!~*'", "'!~'", "'??'", "'%'", - "'+'", "'?'", "'\"'", "'''", "'~'", "'=~'", "'}'", - "']'", "')'", "';'", "'/'", "'_'" ] - - symbolicNames = [ "", "ADD", "AFTER", "ALIAS", "ALL", "ALTER", - "AND", "ANTI", "ANY", "ARRAY", "AS", "ASCENDING", - "ASOF", "AST", "ASYNC", "ATTACH", "BETWEEN", "BOTH", - "BY", "CASE", "CAST", "CHECK", "CLEAR", "CLUSTER", - "CODEC", "COHORT", "COLLATE", "COLUMN", "COMMENT", - "CONSTRAINT", "CREATE", "CROSS", "CUBE", "CURRENT", - "DATABASE", "DATABASES", "DATE", "DAY", "DEDUPLICATE", - "DEFAULT", "DELAY", "DELETE", "DESC", "DESCENDING", - "DESCRIBE", "DETACH", "DICTIONARIES", "DICTIONARY", - "DISK", "DISTINCT", "DISTRIBUTED", "DROP", "ELSE", - "END", "ENGINE", "EVENTS", "EXISTS", "EXPLAIN", "EXPRESSION", - "EXTRACT", "FETCHES", "FINAL", "FIRST", "FLUSH", "FOLLOWING", - "FOR", "FORMAT", "FREEZE", "FROM", "FULL", "FUNCTION", - "GLOBAL", "GRANULARITY", "GROUP", "HAVING", "HIERARCHICAL", - "HOUR", "ID", "IF", "ILIKE", "IN", "INDEX", "INF", - "INJECTIVE", "INNER", "INSERT", "INTERVAL", "INTO", - "IS", "IS_OBJECT_ID", "JOIN", "KEY", "KILL", "LAST", - "LAYOUT", "LEADING", "LEFT", "LIFETIME", "LIKE", "LIMIT", - "LIVE", "LOCAL", "LOGS", "MATERIALIZE", "MATERIALIZED", - "MAX", "MERGES", "MIN", "MINUTE", "MODIFY", "MONTH", - "MOVE", "MUTATION", "NAN_SQL", "NO", "NOT", "NULL_SQL", - "NULLS", "OFFSET", "ON", "OPTIMIZE", "OR", "ORDER", - "OUTER", "OUTFILE", "OVER", "PARTITION", "POPULATE", - "PRECEDING", "PREWHERE", "PRIMARY", "PROJECTION", - "QUARTER", "RANGE", "RELOAD", "REMOVE", "RENAME", - "REPLACE", "REPLICA", "REPLICATED", "RIGHT", "ROLLUP", - "ROW", "ROWS", "SAMPLE", "SECOND", "SELECT", "SEMI", - "SENDS", "SET", "SETTINGS", "SHOW", "SOURCE", "START", - "STOP", "SUBSTRING", "SYNC", "SYNTAX", "SYSTEM", "TABLE", - "TABLES", "TEMPORARY", "TEST", "THEN", "TIES", "TIMEOUT", - "TIMESTAMP", "TO", "TOP", "TOTALS", "TRAILING", "TRIM", - "TRUNCATE", "TTL", "TYPE", "UNBOUNDED", "UNION", "UPDATE", - "USE", "USING", "UUID", "VALUES", "VIEW", "VOLUME", - "WATCH", "WEEK", "WHEN", "WHERE", "WINDOW", "WITH", - "YEAR", "JSON_FALSE", "JSON_TRUE", "ESCAPE_CHAR", - "IDENTIFIER", "FLOATING_LITERAL", "OCTAL_LITERAL", - "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "STRING_LITERAL", - "PLACEHOLDER", "ARROW", "ASTERISK", "BACKQUOTE", "BACKSLASH", - "COLON", "COMMA", "CONCAT", "DASH", "DOLLAR", "DOT", - "EQ_DOUBLE", "EQ_SINGLE", "GT_EQ", "GT", "HASH", "IREGEX_SINGLE", - "IREGEX_DOUBLE", "LBRACE", "LBRACKET", "LPAREN", "LT_EQ", - "LT", "NOT_EQ", "NOT_IREGEX", "NOT_REGEX", "NULLISH", - "PERCENT", "PLUS", "QUERY", "QUOTE_DOUBLE", "QUOTE_SINGLE", - "REGEX_SINGLE", "REGEX_DOUBLE", "RBRACE", "RBRACKET", - "RPAREN", "SEMICOLON", "SLASH", "UNDERSCORE", "MULTI_LINE_COMMENT", - "SINGLE_LINE_COMMENT", "WHITESPACE" ] + literalNames = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "'false'", + "'true'", + "", + "", + "", + "", + "", + "", + "", + "", + "'->'", + "'*'", + "'`'", + "'\\'", + "':'", + "','", + "'||'", + "'-'", + "'$'", + "'.'", + "'=='", + "'='", + "'>='", + "'>'", + "'#'", + "'~*'", + "'=~*'", + "'{'", + "'['", + "'('", + "'<='", + "'<'", + "", + "'!~*'", + "'!~'", + "'??'", + "'%'", + "'+'", + "'?'", + "'\"'", + "'''", + "'~'", + "'=~'", + "'}'", + "']'", + "')'", + "';'", + "'/'", + "'_'", + ] + + symbolicNames = [ + "", + "ADD", + "AFTER", + "ALIAS", + "ALL", + "ALTER", + "AND", + "ANTI", + "ANY", + "ARRAY", + "AS", + "ASCENDING", + "ASOF", + "AST", + "ASYNC", + "ATTACH", + "BETWEEN", + "BOTH", + "BY", + "CASE", + "CAST", + "CHECK", + "CLEAR", + "CLUSTER", + "CODEC", + "COHORT", + "COLLATE", + "COLUMN", + "COMMENT", + "CONSTRAINT", + "CREATE", + "CROSS", + "CUBE", + "CURRENT", + "DATABASE", + "DATABASES", + "DATE", + "DAY", + "DEDUPLICATE", + "DEFAULT", + "DELAY", + "DELETE", + "DESC", + "DESCENDING", + "DESCRIBE", + "DETACH", + "DICTIONARIES", + "DICTIONARY", + "DISK", + "DISTINCT", + "DISTRIBUTED", + "DROP", + "ELSE", + "END", + "ENGINE", + "EVENTS", + "EXISTS", + "EXPLAIN", + "EXPRESSION", + "EXTRACT", + "FETCHES", + "FINAL", + "FIRST", + "FLUSH", + "FOLLOWING", + "FOR", + "FORMAT", + "FREEZE", + "FROM", + "FULL", + "FUNCTION", + "GLOBAL", + "GRANULARITY", + "GROUP", + "HAVING", + "HIERARCHICAL", + "HOUR", + "ID", + "IF", + "ILIKE", + "IN", + "INDEX", + "INF", + "INJECTIVE", + "INNER", + "INSERT", + "INTERVAL", + "INTO", + "IS", + "IS_OBJECT_ID", + "JOIN", + "KEY", + "KILL", + "LAST", + "LAYOUT", + "LEADING", + "LEFT", + "LIFETIME", + "LIKE", + "LIMIT", + "LIVE", + "LOCAL", + "LOGS", + "MATERIALIZE", + "MATERIALIZED", + "MAX", + "MERGES", + "MIN", + "MINUTE", + "MODIFY", + "MONTH", + "MOVE", + "MUTATION", + "NAN_SQL", + "NO", + "NOT", + "NULL_SQL", + "NULLS", + "OFFSET", + "ON", + "OPTIMIZE", + "OR", + "ORDER", + "OUTER", + "OUTFILE", + "OVER", + "PARTITION", + "POPULATE", + "PRECEDING", + "PREWHERE", + "PRIMARY", + "PROJECTION", + "QUARTER", + "RANGE", + "RELOAD", + "REMOVE", + "RENAME", + "REPLACE", + "REPLICA", + "REPLICATED", + "RIGHT", + "ROLLUP", + "ROW", + "ROWS", + "SAMPLE", + "SECOND", + "SELECT", + "SEMI", + "SENDS", + "SET", + "SETTINGS", + "SHOW", + "SOURCE", + "START", + "STOP", + "SUBSTRING", + "SYNC", + "SYNTAX", + "SYSTEM", + "TABLE", + "TABLES", + "TEMPORARY", + "TEST", + "THEN", + "TIES", + "TIMEOUT", + "TIMESTAMP", + "TO", + "TOP", + "TOTALS", + "TRAILING", + "TRIM", + "TRUNCATE", + "TTL", + "TYPE", + "UNBOUNDED", + "UNION", + "UPDATE", + "USE", + "USING", + "UUID", + "VALUES", + "VIEW", + "VOLUME", + "WATCH", + "WEEK", + "WHEN", + "WHERE", + "WINDOW", + "WITH", + "YEAR", + "JSON_FALSE", + "JSON_TRUE", + "ESCAPE_CHAR", + "IDENTIFIER", + "FLOATING_LITERAL", + "OCTAL_LITERAL", + "DECIMAL_LITERAL", + "HEXADECIMAL_LITERAL", + "STRING_LITERAL", + "PLACEHOLDER", + "ARROW", + "ASTERISK", + "BACKQUOTE", + "BACKSLASH", + "COLON", + "COMMA", + "CONCAT", + "DASH", + "DOLLAR", + "DOT", + "EQ_DOUBLE", + "EQ_SINGLE", + "GT_EQ", + "GT", + "HASH", + "IREGEX_SINGLE", + "IREGEX_DOUBLE", + "LBRACE", + "LBRACKET", + "LPAREN", + "LT_EQ", + "LT", + "NOT_EQ", + "NOT_IREGEX", + "NOT_REGEX", + "NULLISH", + "PERCENT", + "PLUS", + "QUERY", + "QUOTE_DOUBLE", + "QUOTE_SINGLE", + "REGEX_SINGLE", + "REGEX_DOUBLE", + "RBRACE", + "RBRACKET", + "RPAREN", + "SEMICOLON", + "SLASH", + "UNDERSCORE", + "MULTI_LINE_COMMENT", + "SINGLE_LINE_COMMENT", + "WHITESPACE", + ] RULE_select = 0 RULE_selectUnionStmt = 1 @@ -550,281 +9135,322 @@ class HogQLParser ( Parser ): RULE_identifier = 57 RULE_enumValue = 58 - ruleNames = [ "select", "selectUnionStmt", "selectStmtWithParens", - "selectStmt", "withClause", "topClause", "fromClause", - "arrayJoinClause", "windowClause", "prewhereClause", - "whereClause", "groupByClause", "havingClause", "orderByClause", - "projectionOrderByClause", "limitAndOffsetClause", "offsetOnlyClause", - "settingsClause", "joinExpr", "joinOp", "joinOpCross", - "joinConstraintClause", "sampleClause", "orderExprList", - "orderExpr", "ratioExpr", "settingExprList", "settingExpr", - "windowExpr", "winPartitionByClause", "winOrderByClause", - "winFrameClause", "winFrameExtend", "winFrameBound", - "expr", "columnTypeExpr", "columnExprList", "columnExpr", - "columnArgList", "columnArgExpr", "columnLambdaExpr", - "withExprList", "withExpr", "columnIdentifier", "nestedIdentifier", - "tableExpr", "tableFunctionExpr", "tableIdentifier", - "tableArgList", "databaseIdentifier", "floatingLiteral", - "numberLiteral", "literal", "interval", "keyword", "keywordForAlias", - "alias", "identifier", "enumValue" ] + ruleNames = [ + "select", + "selectUnionStmt", + "selectStmtWithParens", + "selectStmt", + "withClause", + "topClause", + "fromClause", + "arrayJoinClause", + "windowClause", + "prewhereClause", + "whereClause", + "groupByClause", + "havingClause", + "orderByClause", + "projectionOrderByClause", + "limitAndOffsetClause", + "offsetOnlyClause", + "settingsClause", + "joinExpr", + "joinOp", + "joinOpCross", + "joinConstraintClause", + "sampleClause", + "orderExprList", + "orderExpr", + "ratioExpr", + "settingExprList", + "settingExpr", + "windowExpr", + "winPartitionByClause", + "winOrderByClause", + "winFrameClause", + "winFrameExtend", + "winFrameBound", + "expr", + "columnTypeExpr", + "columnExprList", + "columnExpr", + "columnArgList", + "columnArgExpr", + "columnLambdaExpr", + "withExprList", + "withExpr", + "columnIdentifier", + "nestedIdentifier", + "tableExpr", + "tableFunctionExpr", + "tableIdentifier", + "tableArgList", + "databaseIdentifier", + "floatingLiteral", + "numberLiteral", + "literal", + "interval", + "keyword", + "keywordForAlias", + "alias", + "identifier", + "enumValue", + ] EOF = Token.EOF - ADD=1 - AFTER=2 - ALIAS=3 - ALL=4 - ALTER=5 - AND=6 - ANTI=7 - ANY=8 - ARRAY=9 - AS=10 - ASCENDING=11 - ASOF=12 - AST=13 - ASYNC=14 - ATTACH=15 - BETWEEN=16 - BOTH=17 - BY=18 - CASE=19 - CAST=20 - CHECK=21 - CLEAR=22 - CLUSTER=23 - CODEC=24 - COHORT=25 - COLLATE=26 - COLUMN=27 - COMMENT=28 - CONSTRAINT=29 - CREATE=30 - CROSS=31 - CUBE=32 - CURRENT=33 - DATABASE=34 - DATABASES=35 - DATE=36 - DAY=37 - DEDUPLICATE=38 - DEFAULT=39 - DELAY=40 - DELETE=41 - DESC=42 - DESCENDING=43 - DESCRIBE=44 - DETACH=45 - DICTIONARIES=46 - DICTIONARY=47 - DISK=48 - DISTINCT=49 - DISTRIBUTED=50 - DROP=51 - ELSE=52 - END=53 - ENGINE=54 - EVENTS=55 - EXISTS=56 - EXPLAIN=57 - EXPRESSION=58 - EXTRACT=59 - FETCHES=60 - FINAL=61 - FIRST=62 - FLUSH=63 - FOLLOWING=64 - FOR=65 - FORMAT=66 - FREEZE=67 - FROM=68 - FULL=69 - FUNCTION=70 - GLOBAL=71 - GRANULARITY=72 - GROUP=73 - HAVING=74 - HIERARCHICAL=75 - HOUR=76 - ID=77 - IF=78 - ILIKE=79 - IN=80 - INDEX=81 - INF=82 - INJECTIVE=83 - INNER=84 - INSERT=85 - INTERVAL=86 - INTO=87 - IS=88 - IS_OBJECT_ID=89 - JOIN=90 - KEY=91 - KILL=92 - LAST=93 - LAYOUT=94 - LEADING=95 - LEFT=96 - LIFETIME=97 - LIKE=98 - LIMIT=99 - LIVE=100 - LOCAL=101 - LOGS=102 - MATERIALIZE=103 - MATERIALIZED=104 - MAX=105 - MERGES=106 - MIN=107 - MINUTE=108 - MODIFY=109 - MONTH=110 - MOVE=111 - MUTATION=112 - NAN_SQL=113 - NO=114 - NOT=115 - NULL_SQL=116 - NULLS=117 - OFFSET=118 - ON=119 - OPTIMIZE=120 - OR=121 - ORDER=122 - OUTER=123 - OUTFILE=124 - OVER=125 - PARTITION=126 - POPULATE=127 - PRECEDING=128 - PREWHERE=129 - PRIMARY=130 - PROJECTION=131 - QUARTER=132 - RANGE=133 - RELOAD=134 - REMOVE=135 - RENAME=136 - REPLACE=137 - REPLICA=138 - REPLICATED=139 - RIGHT=140 - ROLLUP=141 - ROW=142 - ROWS=143 - SAMPLE=144 - SECOND=145 - SELECT=146 - SEMI=147 - SENDS=148 - SET=149 - SETTINGS=150 - SHOW=151 - SOURCE=152 - START=153 - STOP=154 - SUBSTRING=155 - SYNC=156 - SYNTAX=157 - SYSTEM=158 - TABLE=159 - TABLES=160 - TEMPORARY=161 - TEST=162 - THEN=163 - TIES=164 - TIMEOUT=165 - TIMESTAMP=166 - TO=167 - TOP=168 - TOTALS=169 - TRAILING=170 - TRIM=171 - TRUNCATE=172 - TTL=173 - TYPE=174 - UNBOUNDED=175 - UNION=176 - UPDATE=177 - USE=178 - USING=179 - UUID=180 - VALUES=181 - VIEW=182 - VOLUME=183 - WATCH=184 - WEEK=185 - WHEN=186 - WHERE=187 - WINDOW=188 - WITH=189 - YEAR=190 - JSON_FALSE=191 - JSON_TRUE=192 - ESCAPE_CHAR=193 - IDENTIFIER=194 - FLOATING_LITERAL=195 - OCTAL_LITERAL=196 - DECIMAL_LITERAL=197 - HEXADECIMAL_LITERAL=198 - STRING_LITERAL=199 - PLACEHOLDER=200 - ARROW=201 - ASTERISK=202 - BACKQUOTE=203 - BACKSLASH=204 - COLON=205 - COMMA=206 - CONCAT=207 - DASH=208 - DOLLAR=209 - DOT=210 - EQ_DOUBLE=211 - EQ_SINGLE=212 - GT_EQ=213 - GT=214 - HASH=215 - IREGEX_SINGLE=216 - IREGEX_DOUBLE=217 - LBRACE=218 - LBRACKET=219 - LPAREN=220 - LT_EQ=221 - LT=222 - NOT_EQ=223 - NOT_IREGEX=224 - NOT_REGEX=225 - NULLISH=226 - PERCENT=227 - PLUS=228 - QUERY=229 - QUOTE_DOUBLE=230 - QUOTE_SINGLE=231 - REGEX_SINGLE=232 - REGEX_DOUBLE=233 - RBRACE=234 - RBRACKET=235 - RPAREN=236 - SEMICOLON=237 - SLASH=238 - UNDERSCORE=239 - MULTI_LINE_COMMENT=240 - SINGLE_LINE_COMMENT=241 - WHITESPACE=242 - - def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + ADD = 1 + AFTER = 2 + ALIAS = 3 + ALL = 4 + ALTER = 5 + AND = 6 + ANTI = 7 + ANY = 8 + ARRAY = 9 + AS = 10 + ASCENDING = 11 + ASOF = 12 + AST = 13 + ASYNC = 14 + ATTACH = 15 + BETWEEN = 16 + BOTH = 17 + BY = 18 + CASE = 19 + CAST = 20 + CHECK = 21 + CLEAR = 22 + CLUSTER = 23 + CODEC = 24 + COHORT = 25 + COLLATE = 26 + COLUMN = 27 + COMMENT = 28 + CONSTRAINT = 29 + CREATE = 30 + CROSS = 31 + CUBE = 32 + CURRENT = 33 + DATABASE = 34 + DATABASES = 35 + DATE = 36 + DAY = 37 + DEDUPLICATE = 38 + DEFAULT = 39 + DELAY = 40 + DELETE = 41 + DESC = 42 + DESCENDING = 43 + DESCRIBE = 44 + DETACH = 45 + DICTIONARIES = 46 + DICTIONARY = 47 + DISK = 48 + DISTINCT = 49 + DISTRIBUTED = 50 + DROP = 51 + ELSE = 52 + END = 53 + ENGINE = 54 + EVENTS = 55 + EXISTS = 56 + EXPLAIN = 57 + EXPRESSION = 58 + EXTRACT = 59 + FETCHES = 60 + FINAL = 61 + FIRST = 62 + FLUSH = 63 + FOLLOWING = 64 + FOR = 65 + FORMAT = 66 + FREEZE = 67 + FROM = 68 + FULL = 69 + FUNCTION = 70 + GLOBAL = 71 + GRANULARITY = 72 + GROUP = 73 + HAVING = 74 + HIERARCHICAL = 75 + HOUR = 76 + ID = 77 + IF = 78 + ILIKE = 79 + IN = 80 + INDEX = 81 + INF = 82 + INJECTIVE = 83 + INNER = 84 + INSERT = 85 + INTERVAL = 86 + INTO = 87 + IS = 88 + IS_OBJECT_ID = 89 + JOIN = 90 + KEY = 91 + KILL = 92 + LAST = 93 + LAYOUT = 94 + LEADING = 95 + LEFT = 96 + LIFETIME = 97 + LIKE = 98 + LIMIT = 99 + LIVE = 100 + LOCAL = 101 + LOGS = 102 + MATERIALIZE = 103 + MATERIALIZED = 104 + MAX = 105 + MERGES = 106 + MIN = 107 + MINUTE = 108 + MODIFY = 109 + MONTH = 110 + MOVE = 111 + MUTATION = 112 + NAN_SQL = 113 + NO = 114 + NOT = 115 + NULL_SQL = 116 + NULLS = 117 + OFFSET = 118 + ON = 119 + OPTIMIZE = 120 + OR = 121 + ORDER = 122 + OUTER = 123 + OUTFILE = 124 + OVER = 125 + PARTITION = 126 + POPULATE = 127 + PRECEDING = 128 + PREWHERE = 129 + PRIMARY = 130 + PROJECTION = 131 + QUARTER = 132 + RANGE = 133 + RELOAD = 134 + REMOVE = 135 + RENAME = 136 + REPLACE = 137 + REPLICA = 138 + REPLICATED = 139 + RIGHT = 140 + ROLLUP = 141 + ROW = 142 + ROWS = 143 + SAMPLE = 144 + SECOND = 145 + SELECT = 146 + SEMI = 147 + SENDS = 148 + SET = 149 + SETTINGS = 150 + SHOW = 151 + SOURCE = 152 + START = 153 + STOP = 154 + SUBSTRING = 155 + SYNC = 156 + SYNTAX = 157 + SYSTEM = 158 + TABLE = 159 + TABLES = 160 + TEMPORARY = 161 + TEST = 162 + THEN = 163 + TIES = 164 + TIMEOUT = 165 + TIMESTAMP = 166 + TO = 167 + TOP = 168 + TOTALS = 169 + TRAILING = 170 + TRIM = 171 + TRUNCATE = 172 + TTL = 173 + TYPE = 174 + UNBOUNDED = 175 + UNION = 176 + UPDATE = 177 + USE = 178 + USING = 179 + UUID = 180 + VALUES = 181 + VIEW = 182 + VOLUME = 183 + WATCH = 184 + WEEK = 185 + WHEN = 186 + WHERE = 187 + WINDOW = 188 + WITH = 189 + YEAR = 190 + JSON_FALSE = 191 + JSON_TRUE = 192 + ESCAPE_CHAR = 193 + IDENTIFIER = 194 + FLOATING_LITERAL = 195 + OCTAL_LITERAL = 196 + DECIMAL_LITERAL = 197 + HEXADECIMAL_LITERAL = 198 + STRING_LITERAL = 199 + PLACEHOLDER = 200 + ARROW = 201 + ASTERISK = 202 + BACKQUOTE = 203 + BACKSLASH = 204 + COLON = 205 + COMMA = 206 + CONCAT = 207 + DASH = 208 + DOLLAR = 209 + DOT = 210 + EQ_DOUBLE = 211 + EQ_SINGLE = 212 + GT_EQ = 213 + GT = 214 + HASH = 215 + IREGEX_SINGLE = 216 + IREGEX_DOUBLE = 217 + LBRACE = 218 + LBRACKET = 219 + LPAREN = 220 + LT_EQ = 221 + LT = 222 + NOT_EQ = 223 + NOT_IREGEX = 224 + NOT_REGEX = 225 + NULLISH = 226 + PERCENT = 227 + PLUS = 228 + QUERY = 229 + QUOTE_DOUBLE = 230 + QUOTE_SINGLE = 231 + REGEX_SINGLE = 232 + REGEX_DOUBLE = 233 + RBRACE = 234 + RBRACKET = 235 + RPAREN = 236 + SEMICOLON = 237 + SLASH = 238 + UNDERSCORE = 239 + MULTI_LINE_COMMENT = 240 + SINGLE_LINE_COMMENT = 241 + WHITESPACE = 242 + + def __init__(self, input: TokenStream, output: TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.13.1") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None - - - class SelectContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -832,25 +9458,20 @@ def EOF(self): return self.getToken(HogQLParser.EOF, 0) def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) - + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) def selectStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectStmtContext,0) - + return self.getTypedRuleContext(HogQLParser.SelectStmtContext, 0) def getRuleIndex(self): return HogQLParser.RULE_select - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelect" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSelect"): return visitor.visitSelect(self) else: return visitor.visitChildren(self) - - - def select(self): localctx = HogQLParser.SelectContext(self, self._ctx, self.state) @@ -859,7 +9480,7 @@ def select(self): self.enterOuterAlt(localctx, 1) self.state = 120 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,0,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 0, self._ctx) if la_ == 1: self.state = 118 self.selectUnionStmt() @@ -870,7 +9491,6 @@ def select(self): self.selectStmt() pass - self.state = 122 self.match(HogQLParser.EOF) except RecognitionException as re: @@ -881,28 +9501,26 @@ def select(self): self.exitRule() return localctx - class SelectUnionStmtContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def selectStmtWithParens(self, i:int=None): + def selectStmtWithParens(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.SelectStmtWithParensContext) else: - return self.getTypedRuleContext(HogQLParser.SelectStmtWithParensContext,i) + return self.getTypedRuleContext(HogQLParser.SelectStmtWithParensContext, i) - - def UNION(self, i:int=None): + def UNION(self, i: int = None): if i is None: return self.getTokens(HogQLParser.UNION) else: return self.getToken(HogQLParser.UNION, i) - def ALL(self, i:int=None): + def ALL(self, i: int = None): if i is None: return self.getTokens(HogQLParser.ALL) else: @@ -911,20 +9529,17 @@ def ALL(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_selectUnionStmt - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelectUnionStmt" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSelectUnionStmt"): return visitor.visitSelectUnionStmt(self) else: return visitor.visitChildren(self) - - - def selectUnionStmt(self): localctx = HogQLParser.SelectUnionStmtContext(self, self._ctx, self.state) self.enterRule(localctx, 2, self.RULE_selectUnionStmt) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 124 @@ -932,7 +9547,7 @@ def selectUnionStmt(self): self.state = 130 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==176: + while _la == 176: self.state = 125 self.match(HogQLParser.UNION) self.state = 126 @@ -951,24 +9566,21 @@ def selectUnionStmt(self): self.exitRule() return localctx - class SelectStmtWithParensContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def selectStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectStmtContext,0) - + return self.getTypedRuleContext(HogQLParser.SelectStmtContext, 0) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) - + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) @@ -976,15 +9588,12 @@ def RPAREN(self): def getRuleIndex(self): return HogQLParser.RULE_selectStmtWithParens - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelectStmtWithParens" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSelectStmtWithParens"): return visitor.visitSelectStmtWithParens(self) else: return visitor.visitChildren(self) - - - def selectStmtWithParens(self): localctx = HogQLParser.SelectStmtWithParensContext(self, self._ctx, self.state) @@ -1018,45 +9627,39 @@ def selectStmtWithParens(self): self.exitRule() return localctx - class SelectStmtContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - self.with_ = None # WithClauseContext - self.columns = None # ColumnExprListContext - self.from_ = None # FromClauseContext - self.where = None # WhereClauseContext + self.with_ = None # WithClauseContext + self.columns = None # ColumnExprListContext + self.from_ = None # FromClauseContext + self.where = None # WhereClauseContext def SELECT(self): return self.getToken(HogQLParser.SELECT, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) def DISTINCT(self): return self.getToken(HogQLParser.DISTINCT, 0) def topClause(self): - return self.getTypedRuleContext(HogQLParser.TopClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.TopClauseContext, 0) def arrayJoinClause(self): - return self.getTypedRuleContext(HogQLParser.ArrayJoinClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.ArrayJoinClauseContext, 0) def prewhereClause(self): - return self.getTypedRuleContext(HogQLParser.PrewhereClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.PrewhereClauseContext, 0) def groupByClause(self): - return self.getTypedRuleContext(HogQLParser.GroupByClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.GroupByClauseContext, 0) - def WITH(self, i:int=None): + def WITH(self, i: int = None): if i is None: return self.getTokens(HogQLParser.WITH) else: @@ -1066,40 +9669,31 @@ def TOTALS(self): return self.getToken(HogQLParser.TOTALS, 0) def havingClause(self): - return self.getTypedRuleContext(HogQLParser.HavingClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.HavingClauseContext, 0) def windowClause(self): - return self.getTypedRuleContext(HogQLParser.WindowClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.WindowClauseContext, 0) def orderByClause(self): - return self.getTypedRuleContext(HogQLParser.OrderByClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.OrderByClauseContext, 0) def limitAndOffsetClause(self): - return self.getTypedRuleContext(HogQLParser.LimitAndOffsetClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.LimitAndOffsetClauseContext, 0) def offsetOnlyClause(self): - return self.getTypedRuleContext(HogQLParser.OffsetOnlyClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.OffsetOnlyClauseContext, 0) def settingsClause(self): - return self.getTypedRuleContext(HogQLParser.SettingsClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.SettingsClauseContext, 0) def withClause(self): - return self.getTypedRuleContext(HogQLParser.WithClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.WithClauseContext, 0) def fromClause(self): - return self.getTypedRuleContext(HogQLParser.FromClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.FromClauseContext, 0) def whereClause(self): - return self.getTypedRuleContext(HogQLParser.WhereClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.WhereClauseContext, 0) def CUBE(self): return self.getToken(HogQLParser.CUBE, 0) @@ -1110,139 +9704,123 @@ def ROLLUP(self): def getRuleIndex(self): return HogQLParser.RULE_selectStmt - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelectStmt" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSelectStmt"): return visitor.visitSelectStmt(self) else: return visitor.visitChildren(self) - - - def selectStmt(self): localctx = HogQLParser.SelectStmtContext(self, self._ctx, self.state) self.enterRule(localctx, 6, self.RULE_selectStmt) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 141 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==189: + if _la == 189: self.state = 140 localctx.with_ = self.withClause() - self.state = 143 self.match(HogQLParser.SELECT) self.state = 145 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,4,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 4, self._ctx) if la_ == 1: self.state = 144 self.match(HogQLParser.DISTINCT) - self.state = 148 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,5,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 5, self._ctx) if la_ == 1: self.state = 147 self.topClause() - self.state = 150 localctx.columns = self.columnExprList() self.state = 152 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==68: + if _la == 68: self.state = 151 localctx.from_ = self.fromClause() - self.state = 155 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==9 or _la==84 or _la==96: + if _la == 9 or _la == 84 or _la == 96: self.state = 154 self.arrayJoinClause() - self.state = 158 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==129: + if _la == 129: self.state = 157 self.prewhereClause() - self.state = 161 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==187: + if _la == 187: self.state = 160 localctx.where = self.whereClause() - self.state = 164 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==73: + if _la == 73: self.state = 163 self.groupByClause() - self.state = 168 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,11,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 11, self._ctx) if la_ == 1: self.state = 166 self.match(HogQLParser.WITH) self.state = 167 _la = self._input.LA(1) - if not(_la==32 or _la==141): + if not (_la == 32 or _la == 141): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 172 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==189: + if _la == 189: self.state = 170 self.match(HogQLParser.WITH) self.state = 171 self.match(HogQLParser.TOTALS) - self.state = 175 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==74: + if _la == 74: self.state = 174 self.havingClause() - self.state = 178 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==188: + if _la == 188: self.state = 177 self.windowClause() - self.state = 181 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==122: + if _la == 122: self.state = 180 self.orderByClause() - self.state = 185 self._errHandler.sync(self) token = self._input.LA(1) @@ -1261,11 +9839,10 @@ def selectStmt(self): self.state = 188 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==150: + if _la == 150: self.state = 187 self.settingsClause() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1274,11 +9851,10 @@ def selectStmt(self): self.exitRule() return localctx - class WithClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1286,21 +9862,17 @@ def WITH(self): return self.getToken(HogQLParser.WITH, 0) def withExprList(self): - return self.getTypedRuleContext(HogQLParser.WithExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.WithExprListContext, 0) def getRuleIndex(self): return HogQLParser.RULE_withClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWithClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWithClause"): return visitor.visitWithClause(self) else: return visitor.visitChildren(self) - - - def withClause(self): localctx = HogQLParser.WithClauseContext(self, self._ctx, self.state) @@ -1319,11 +9891,10 @@ def withClause(self): self.exitRule() return localctx - class TopClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1342,15 +9913,12 @@ def TIES(self): def getRuleIndex(self): return HogQLParser.RULE_topClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTopClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTopClause"): return visitor.visitTopClause(self) else: return visitor.visitChildren(self) - - - def topClause(self): localctx = HogQLParser.TopClauseContext(self, self._ctx, self.state) @@ -1363,14 +9931,13 @@ def topClause(self): self.match(HogQLParser.DECIMAL_LITERAL) self.state = 197 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,18,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 18, self._ctx) if la_ == 1: self.state = 195 self.match(HogQLParser.WITH) self.state = 196 self.match(HogQLParser.TIES) - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1379,11 +9946,10 @@ def topClause(self): self.exitRule() return localctx - class FromClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1391,21 +9957,17 @@ def FROM(self): return self.getToken(HogQLParser.FROM, 0) def joinExpr(self): - return self.getTypedRuleContext(HogQLParser.JoinExprContext,0) - + return self.getTypedRuleContext(HogQLParser.JoinExprContext, 0) def getRuleIndex(self): return HogQLParser.RULE_fromClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFromClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFromClause"): return visitor.visitFromClause(self) else: return visitor.visitChildren(self) - - - def fromClause(self): localctx = HogQLParser.FromClauseContext(self, self._ctx, self.state) @@ -1424,11 +9986,10 @@ def fromClause(self): self.exitRule() return localctx - class ArrayJoinClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1439,8 +10000,7 @@ def JOIN(self): return self.getToken(HogQLParser.JOIN, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) def LEFT(self): return self.getToken(HogQLParser.LEFT, 0) @@ -1451,35 +10011,31 @@ def INNER(self): def getRuleIndex(self): return HogQLParser.RULE_arrayJoinClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArrayJoinClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArrayJoinClause"): return visitor.visitArrayJoinClause(self) else: return visitor.visitChildren(self) - - - def arrayJoinClause(self): localctx = HogQLParser.ArrayJoinClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 14, self.RULE_arrayJoinClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 203 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==84 or _la==96: + if _la == 84 or _la == 96: self.state = 202 _la = self._input.LA(1) - if not(_la==84 or _la==96): + if not (_la == 84 or _la == 96): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 205 self.match(HogQLParser.ARRAY) self.state = 206 @@ -1494,50 +10050,47 @@ def arrayJoinClause(self): self.exitRule() return localctx - class WindowClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def WINDOW(self): return self.getToken(HogQLParser.WINDOW, 0) - def identifier(self, i:int=None): + def identifier(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) - + return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) - def AS(self, i:int=None): + def AS(self, i: int = None): if i is None: return self.getTokens(HogQLParser.AS) else: return self.getToken(HogQLParser.AS, i) - def LPAREN(self, i:int=None): + def LPAREN(self, i: int = None): if i is None: return self.getTokens(HogQLParser.LPAREN) else: return self.getToken(HogQLParser.LPAREN, i) - def windowExpr(self, i:int=None): + def windowExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.WindowExprContext) else: - return self.getTypedRuleContext(HogQLParser.WindowExprContext,i) - + return self.getTypedRuleContext(HogQLParser.WindowExprContext, i) - def RPAREN(self, i:int=None): + def RPAREN(self, i: int = None): if i is None: return self.getTokens(HogQLParser.RPAREN) else: return self.getToken(HogQLParser.RPAREN, i) - def COMMA(self, i:int=None): + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -1546,20 +10099,17 @@ def COMMA(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_windowClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWindowClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWindowClause"): return visitor.visitWindowClause(self) else: return visitor.visitChildren(self) - - - def windowClause(self): localctx = HogQLParser.WindowClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 16, self.RULE_windowClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 209 @@ -1577,7 +10127,7 @@ def windowClause(self): self.state = 224 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 215 self.match(HogQLParser.COMMA) self.state = 216 @@ -1602,11 +10152,10 @@ def windowClause(self): self.exitRule() return localctx - class PrewhereClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1614,21 +10163,17 @@ def PREWHERE(self): return self.getToken(HogQLParser.PREWHERE, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def getRuleIndex(self): return HogQLParser.RULE_prewhereClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrewhereClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPrewhereClause"): return visitor.visitPrewhereClause(self) else: return visitor.visitChildren(self) - - - def prewhereClause(self): localctx = HogQLParser.PrewhereClauseContext(self, self._ctx, self.state) @@ -1647,11 +10192,10 @@ def prewhereClause(self): self.exitRule() return localctx - class WhereClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1659,21 +10203,17 @@ def WHERE(self): return self.getToken(HogQLParser.WHERE, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def getRuleIndex(self): return HogQLParser.RULE_whereClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWhereClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWhereClause"): return visitor.visitWhereClause(self) else: return visitor.visitChildren(self) - - - def whereClause(self): localctx = HogQLParser.WhereClauseContext(self, self._ctx, self.state) @@ -1692,11 +10232,10 @@ def whereClause(self): self.exitRule() return localctx - class GroupByClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1710,8 +10249,7 @@ def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) @@ -1725,20 +10263,17 @@ def ROLLUP(self): def getRuleIndex(self): return HogQLParser.RULE_groupByClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGroupByClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitGroupByClause"): return visitor.visitGroupByClause(self) else: return visitor.visitChildren(self) - - - def groupByClause(self): localctx = HogQLParser.GroupByClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 22, self.RULE_groupByClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 233 @@ -1747,11 +10282,11 @@ def groupByClause(self): self.match(HogQLParser.BY) self.state = 241 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,21,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 21, self._ctx) if la_ == 1: self.state = 235 _la = self._input.LA(1) - if not(_la==32 or _la==141): + if not (_la == 32 or _la == 141): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -1769,7 +10304,6 @@ def groupByClause(self): self.columnExprList() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1778,11 +10312,10 @@ def groupByClause(self): self.exitRule() return localctx - class HavingClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1790,21 +10323,17 @@ def HAVING(self): return self.getToken(HogQLParser.HAVING, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def getRuleIndex(self): return HogQLParser.RULE_havingClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitHavingClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitHavingClause"): return visitor.visitHavingClause(self) else: return visitor.visitChildren(self) - - - def havingClause(self): localctx = HogQLParser.HavingClauseContext(self, self._ctx, self.state) @@ -1823,11 +10352,10 @@ def havingClause(self): self.exitRule() return localctx - class OrderByClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1838,21 +10366,17 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def orderExprList(self): - return self.getTypedRuleContext(HogQLParser.OrderExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.OrderExprListContext, 0) def getRuleIndex(self): return HogQLParser.RULE_orderByClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOrderByClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitOrderByClause"): return visitor.visitOrderByClause(self) else: return visitor.visitChildren(self) - - - def orderByClause(self): localctx = HogQLParser.OrderByClauseContext(self, self._ctx, self.state) @@ -1873,11 +10397,10 @@ def orderByClause(self): self.exitRule() return localctx - class ProjectionOrderByClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -1888,21 +10411,17 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) def getRuleIndex(self): return HogQLParser.RULE_projectionOrderByClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitProjectionOrderByClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitProjectionOrderByClause"): return visitor.visitProjectionOrderByClause(self) else: return visitor.visitChildren(self) - - - def projectionOrderByClause(self): localctx = HogQLParser.ProjectionOrderByClauseContext(self, self._ctx, self.state) @@ -1923,23 +10442,21 @@ def projectionOrderByClause(self): self.exitRule() return localctx - class LimitAndOffsetClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def LIMIT(self): return self.getToken(HogQLParser.LIMIT, 0) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def COMMA(self): return self.getToken(HogQLParser.COMMA, 0) @@ -1948,8 +10465,7 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) def WITH(self): return self.getToken(HogQLParser.WITH, 0) @@ -1963,24 +10479,21 @@ def OFFSET(self): def getRuleIndex(self): return HogQLParser.RULE_limitAndOffsetClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLimitAndOffsetClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLimitAndOffsetClause"): return visitor.visitLimitAndOffsetClause(self) else: return visitor.visitChildren(self) - - - def limitAndOffsetClause(self): localctx = HogQLParser.LimitAndOffsetClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_limitAndOffsetClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.state = 283 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,26,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 26, self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) self.state = 254 @@ -1990,13 +10503,12 @@ def limitAndOffsetClause(self): self.state = 258 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==206: + if _la == 206: self.state = 256 self.match(HogQLParser.COMMA) self.state = 257 self.columnExpr(0) - self.state = 264 self._errHandler.sync(self) token = self._input.LA(1) @@ -2027,13 +10539,12 @@ def limitAndOffsetClause(self): self.state = 270 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==189: + if _la == 189: self.state = 268 self.match(HogQLParser.WITH) self.state = 269 self.match(HogQLParser.TIES) - self.state = 272 self.match(HogQLParser.OFFSET) self.state = 273 @@ -2053,16 +10564,14 @@ def limitAndOffsetClause(self): self.state = 281 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==18: + if _la == 18: self.state = 279 self.match(HogQLParser.BY) self.state = 280 self.columnExprList() - pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2071,11 +10580,10 @@ def limitAndOffsetClause(self): self.exitRule() return localctx - class OffsetOnlyClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -2083,21 +10591,17 @@ def OFFSET(self): return self.getToken(HogQLParser.OFFSET, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def getRuleIndex(self): return HogQLParser.RULE_offsetOnlyClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOffsetOnlyClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitOffsetOnlyClause"): return visitor.visitOffsetOnlyClause(self) else: return visitor.visitChildren(self) - - - def offsetOnlyClause(self): localctx = HogQLParser.OffsetOnlyClauseContext(self, self._ctx, self.state) @@ -2116,11 +10620,10 @@ def offsetOnlyClause(self): self.exitRule() return localctx - class SettingsClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -2128,21 +10631,17 @@ def SETTINGS(self): return self.getToken(HogQLParser.SETTINGS, 0) def settingExprList(self): - return self.getTypedRuleContext(HogQLParser.SettingExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.SettingExprListContext, 0) def getRuleIndex(self): return HogQLParser.RULE_settingsClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSettingsClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSettingsClause"): return visitor.visitSettingsClause(self) else: return visitor.visitChildren(self) - - - def settingsClause(self): localctx = HogQLParser.SettingsClauseContext(self, self._ctx, self.state) @@ -2161,131 +10660,118 @@ def settingsClause(self): self.exitRule() return localctx - class JoinExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def getRuleIndex(self): return HogQLParser.RULE_joinExpr - - def copyFrom(self, ctx:ParserRuleContext): + def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) - class JoinExprOpContext(JoinExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinExprContext super().__init__(parser) self.copyFrom(ctx) - def joinExpr(self, i:int=None): + def joinExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.JoinExprContext) else: - return self.getTypedRuleContext(HogQLParser.JoinExprContext,i) + return self.getTypedRuleContext(HogQLParser.JoinExprContext, i) def JOIN(self): return self.getToken(HogQLParser.JOIN, 0) + def joinConstraintClause(self): - return self.getTypedRuleContext(HogQLParser.JoinConstraintClauseContext,0) + return self.getTypedRuleContext(HogQLParser.JoinConstraintClauseContext, 0) def joinOp(self): - return self.getTypedRuleContext(HogQLParser.JoinOpContext,0) + return self.getTypedRuleContext(HogQLParser.JoinOpContext, 0) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoinExprOp" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitJoinExprOp"): return visitor.visitJoinExprOp(self) else: return visitor.visitChildren(self) - class JoinExprTableContext(JoinExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinExprContext super().__init__(parser) self.copyFrom(ctx) def tableExpr(self): - return self.getTypedRuleContext(HogQLParser.TableExprContext,0) + return self.getTypedRuleContext(HogQLParser.TableExprContext, 0) def FINAL(self): return self.getToken(HogQLParser.FINAL, 0) - def sampleClause(self): - return self.getTypedRuleContext(HogQLParser.SampleClauseContext,0) + def sampleClause(self): + return self.getTypedRuleContext(HogQLParser.SampleClauseContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoinExprTable" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitJoinExprTable"): return visitor.visitJoinExprTable(self) else: return visitor.visitChildren(self) - class JoinExprParensContext(JoinExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def joinExpr(self): - return self.getTypedRuleContext(HogQLParser.JoinExprContext,0) + return self.getTypedRuleContext(HogQLParser.JoinExprContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoinExprParens" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitJoinExprParens"): return visitor.visitJoinExprParens(self) else: return visitor.visitChildren(self) - class JoinExprCrossOpContext(JoinExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinExprContext super().__init__(parser) self.copyFrom(ctx) - def joinExpr(self, i:int=None): + def joinExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.JoinExprContext) else: - return self.getTypedRuleContext(HogQLParser.JoinExprContext,i) + return self.getTypedRuleContext(HogQLParser.JoinExprContext, i) def joinOpCross(self): - return self.getTypedRuleContext(HogQLParser.JoinOpCrossContext,0) - + return self.getTypedRuleContext(HogQLParser.JoinOpCrossContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoinExprCrossOp" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitJoinExprCrossOp"): return visitor.visitJoinExprCrossOp(self) else: return visitor.visitChildren(self) - - - def joinExpr(self, _p:int=0): + def joinExpr(self, _p: int = 0): _parentctx = self._ctx _parentState = self.state localctx = HogQLParser.JoinExprContext(self, self._ctx, _parentState) _prevctx = localctx _startState = 36 self.enterRecursionRule(localctx, 36, self.RULE_joinExpr, _p) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 303 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,29,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 29, self._ctx) if la_ == 1: localctx = HogQLParser.JoinExprTableContext(self, localctx) self._ctx = localctx @@ -2295,20 +10781,18 @@ def joinExpr(self, _p:int=0): self.tableExpr(0) self.state = 294 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,27,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 27, self._ctx) if la_ == 1: self.state = 293 self.match(HogQLParser.FINAL) - self.state = 297 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,28,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 28, self._ctx) if la_ == 1: self.state = 296 self.sampleClause() - pass elif la_ == 2: @@ -2323,25 +10807,27 @@ def joinExpr(self, _p:int=0): self.match(HogQLParser.RPAREN) pass - self._ctx.stop = self._input.LT(-1) self.state = 319 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,32,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: + _alt = self._interp.adaptivePredict(self._input, 32, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 317 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,31,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 31, self._ctx) if la_ == 1: - localctx = HogQLParser.JoinExprCrossOpContext(self, HogQLParser.JoinExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.JoinExprCrossOpContext( + self, HogQLParser.JoinExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_joinExpr) self.state = 305 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") self.state = 306 self.joinOpCross() @@ -2350,20 +10836,27 @@ def joinExpr(self, _p:int=0): pass elif la_ == 2: - localctx = HogQLParser.JoinExprOpContext(self, HogQLParser.JoinExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.JoinExprOpContext( + self, HogQLParser.JoinExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_joinExpr) self.state = 309 if not self.precpred(self._ctx, 4): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") self.state = 311 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 134250497) != 0) or _la==140 or _la==147: + if ( + (((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) + or ((((_la - 69)) & ~0x3F) == 0 and ((1 << (_la - 69)) & 134250497) != 0) + or _la == 140 + or _la == 147 + ): self.state = 310 self.joinOp() - self.state = 313 self.match(HogQLParser.JOIN) self.state = 314 @@ -2372,10 +10865,9 @@ def joinExpr(self, _p:int=0): self.joinConstraintClause() pass - self.state = 321 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,32,self._ctx) + _alt = self._interp.adaptivePredict(self._input, 32, self._ctx) except RecognitionException as re: localctx.exception = re @@ -2385,128 +10877,128 @@ def joinExpr(self, _p:int=0): self.unrollRecursionContexts(_parentctx) return localctx - class JoinOpContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def getRuleIndex(self): return HogQLParser.RULE_joinOp - - def copyFrom(self, ctx:ParserRuleContext): + def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) - - class JoinOpFullContext(JoinOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinOpContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinOpContext super().__init__(parser) self.copyFrom(ctx) def FULL(self): return self.getToken(HogQLParser.FULL, 0) + def OUTER(self): return self.getToken(HogQLParser.OUTER, 0) + def ALL(self): return self.getToken(HogQLParser.ALL, 0) + def ANY(self): return self.getToken(HogQLParser.ANY, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoinOpFull" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitJoinOpFull"): return visitor.visitJoinOpFull(self) else: return visitor.visitChildren(self) - class JoinOpInnerContext(JoinOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinOpContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinOpContext super().__init__(parser) self.copyFrom(ctx) def INNER(self): return self.getToken(HogQLParser.INNER, 0) + def ALL(self): return self.getToken(HogQLParser.ALL, 0) + def ANY(self): return self.getToken(HogQLParser.ANY, 0) + def ASOF(self): return self.getToken(HogQLParser.ASOF, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoinOpInner" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitJoinOpInner"): return visitor.visitJoinOpInner(self) else: return visitor.visitChildren(self) - class JoinOpLeftRightContext(JoinOpContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinOpContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinOpContext super().__init__(parser) self.copyFrom(ctx) def LEFT(self): return self.getToken(HogQLParser.LEFT, 0) + def RIGHT(self): return self.getToken(HogQLParser.RIGHT, 0) + def OUTER(self): return self.getToken(HogQLParser.OUTER, 0) + def SEMI(self): return self.getToken(HogQLParser.SEMI, 0) + def ALL(self): return self.getToken(HogQLParser.ALL, 0) + def ANTI(self): return self.getToken(HogQLParser.ANTI, 0) + def ANY(self): return self.getToken(HogQLParser.ANY, 0) + def ASOF(self): return self.getToken(HogQLParser.ASOF, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoinOpLeftRight" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitJoinOpLeftRight"): return visitor.visitJoinOpLeftRight(self) else: return visitor.visitChildren(self) - - def joinOp(self): localctx = HogQLParser.JoinOpContext(self, self._ctx, self.state) self.enterRule(localctx, 38, self.RULE_joinOp) - self._la = 0 # Token type + self._la = 0 # Token type try: self.state = 365 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,46,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 46, self._ctx) if la_ == 1: localctx = HogQLParser.JoinOpInnerContext(self, localctx) self.enterOuterAlt(localctx, 1) self.state = 331 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,35,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 35, self._ctx) if la_ == 1: self.state = 323 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0): + if ((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0: self.state = 322 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0)): + if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 325 self.match(HogQLParser.INNER) pass @@ -2517,29 +11009,27 @@ def joinOp(self): self.state = 328 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0): + if ((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0: self.state = 327 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0)): + if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - pass elif la_ == 3: self.state = 330 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0)): + if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass - pass elif la_ == 2: @@ -2547,24 +11037,23 @@ def joinOp(self): self.enterOuterAlt(localctx, 2) self.state = 347 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,40,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 40, self._ctx) if la_ == 1: self.state = 334 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or _la==147: + if (((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) or _la == 147: self.state = 333 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or _la==147): + if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) or _la == 147): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 336 _la = self._input.LA(1) - if not(_la==96 or _la==140): + if not (_la == 96 or _la == 140): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2572,17 +11061,16 @@ def joinOp(self): self.state = 338 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==123: + if _la == 123: self.state = 337 self.match(HogQLParser.OUTER) - pass elif la_ == 2: self.state = 340 _la = self._input.LA(1) - if not(_la==96 or _la==140): + if not (_la == 96 or _la == 140): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2590,27 +11078,24 @@ def joinOp(self): self.state = 342 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==123: + if _la == 123: self.state = 341 self.match(HogQLParser.OUTER) - self.state = 345 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or _la==147: + if (((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) or _la == 147: self.state = 344 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or _la==147): + if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) or _la == 147): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - pass - pass elif la_ == 3: @@ -2618,31 +11103,29 @@ def joinOp(self): self.enterOuterAlt(localctx, 3) self.state = 363 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,45,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 45, self._ctx) if la_ == 1: self.state = 350 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==4 or _la==8: + if _la == 4 or _la == 8: self.state = 349 _la = self._input.LA(1) - if not(_la==4 or _la==8): + if not (_la == 4 or _la == 8): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 352 self.match(HogQLParser.FULL) self.state = 354 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==123: + if _la == 123: self.state = 353 self.match(HogQLParser.OUTER) - pass elif la_ == 2: @@ -2651,30 +11134,26 @@ def joinOp(self): self.state = 358 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==123: + if _la == 123: self.state = 357 self.match(HogQLParser.OUTER) - self.state = 361 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==4 or _la==8: + if _la == 4 or _la == 8: self.state = 360 _la = self._input.LA(1) - if not(_la==4 or _la==8): + if not (_la == 4 or _la == 8): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - pass - pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2683,11 +11162,10 @@ def joinOp(self): self.exitRule() return localctx - class JoinOpCrossContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -2703,15 +11181,12 @@ def COMMA(self): def getRuleIndex(self): return HogQLParser.RULE_joinOpCross - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoinOpCross" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitJoinOpCross"): return visitor.visitJoinOpCross(self) else: return visitor.visitChildren(self) - - - def joinOpCross(self): localctx = HogQLParser.JoinOpCrossContext(self, self._ctx, self.state) @@ -2743,11 +11218,10 @@ def joinOpCross(self): self.exitRule() return localctx - class JoinConstraintClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -2755,8 +11229,7 @@ def ON(self): return self.getToken(HogQLParser.ON, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) def USING(self): return self.getToken(HogQLParser.USING, 0) @@ -2770,15 +11243,12 @@ def RPAREN(self): def getRuleIndex(self): return HogQLParser.RULE_joinConstraintClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoinConstraintClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitJoinConstraintClause"): return visitor.visitJoinConstraintClause(self) else: return visitor.visitChildren(self) - - - def joinConstraintClause(self): localctx = HogQLParser.JoinConstraintClauseContext(self, self._ctx, self.state) @@ -2786,7 +11256,7 @@ def joinConstraintClause(self): try: self.state = 381 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,48,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 48, self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) self.state = 372 @@ -2815,7 +11285,6 @@ def joinConstraintClause(self): self.columnExprList() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2824,23 +11293,21 @@ def joinConstraintClause(self): self.exitRule() return localctx - class SampleClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def SAMPLE(self): return self.getToken(HogQLParser.SAMPLE, 0) - def ratioExpr(self, i:int=None): + def ratioExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.RatioExprContext) else: - return self.getTypedRuleContext(HogQLParser.RatioExprContext,i) - + return self.getTypedRuleContext(HogQLParser.RatioExprContext, i) def OFFSET(self): return self.getToken(HogQLParser.OFFSET, 0) @@ -2848,15 +11315,12 @@ def OFFSET(self): def getRuleIndex(self): return HogQLParser.RULE_sampleClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSampleClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSampleClause"): return visitor.visitSampleClause(self) else: return visitor.visitChildren(self) - - - def sampleClause(self): localctx = HogQLParser.SampleClauseContext(self, self._ctx, self.state) @@ -2869,14 +11333,13 @@ def sampleClause(self): self.ratioExpr() self.state = 387 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,49,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 49, self._ctx) if la_ == 1: self.state = 385 self.match(HogQLParser.OFFSET) self.state = 386 self.ratioExpr() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2885,22 +11348,20 @@ def sampleClause(self): self.exitRule() return localctx - class OrderExprListContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def orderExpr(self, i:int=None): + def orderExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.OrderExprContext) else: - return self.getTypedRuleContext(HogQLParser.OrderExprContext,i) - + return self.getTypedRuleContext(HogQLParser.OrderExprContext, i) - def COMMA(self, i:int=None): + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -2909,20 +11370,17 @@ def COMMA(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_orderExprList - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOrderExprList" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitOrderExprList"): return visitor.visitOrderExprList(self) else: return visitor.visitChildren(self) - - - def orderExprList(self): localctx = HogQLParser.OrderExprListContext(self, self._ctx, self.state) self.enterRule(localctx, 46, self.RULE_orderExprList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 389 @@ -2930,7 +11388,7 @@ def orderExprList(self): self.state = 394 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 390 self.match(HogQLParser.COMMA) self.state = 391 @@ -2947,17 +11405,15 @@ def orderExprList(self): self.exitRule() return localctx - class OrderExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def NULLS(self): return self.getToken(HogQLParser.NULLS, 0) @@ -2986,20 +11442,17 @@ def LAST(self): def getRuleIndex(self): return HogQLParser.RULE_orderExpr - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOrderExpr" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitOrderExpr"): return visitor.visitOrderExpr(self) else: return visitor.visitChildren(self) - - - def orderExpr(self): localctx = HogQLParser.OrderExprContext(self, self._ctx, self.state) self.enterRule(localctx, 48, self.RULE_orderExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 397 @@ -3007,41 +11460,38 @@ def orderExpr(self): self.state = 399 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 13194139535360) != 0): + if ((_la) & ~0x3F) == 0 and ((1 << _la) & 13194139535360) != 0: self.state = 398 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 13194139535360) != 0)): + if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 13194139535360) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 403 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==117: + if _la == 117: self.state = 401 self.match(HogQLParser.NULLS) self.state = 402 _la = self._input.LA(1) - if not(_la==62 or _la==93): + if not (_la == 62 or _la == 93): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 407 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==26: + if _la == 26: self.state = 405 self.match(HogQLParser.COLLATE) self.state = 406 self.match(HogQLParser.STRING_LITERAL) - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3050,23 +11500,21 @@ def orderExpr(self): self.exitRule() return localctx - class RatioExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def PLACEHOLDER(self): return self.getToken(HogQLParser.PLACEHOLDER, 0) - def numberLiteral(self, i:int=None): + def numberLiteral(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.NumberLiteralContext) else: - return self.getTypedRuleContext(HogQLParser.NumberLiteralContext,i) - + return self.getTypedRuleContext(HogQLParser.NumberLiteralContext, i) def SLASH(self): return self.getToken(HogQLParser.SLASH, 0) @@ -3074,15 +11522,12 @@ def SLASH(self): def getRuleIndex(self): return HogQLParser.RULE_ratioExpr - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRatioExpr" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRatioExpr"): return visitor.visitRatioExpr(self) else: return visitor.visitChildren(self) - - - def ratioExpr(self): localctx = HogQLParser.RatioExprContext(self, self._ctx, self.state) @@ -3102,14 +11547,13 @@ def ratioExpr(self): self.numberLiteral() self.state = 413 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,54,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 54, self._ctx) if la_ == 1: self.state = 411 self.match(HogQLParser.SLASH) self.state = 412 self.numberLiteral() - pass else: raise NoViableAltException(self) @@ -3122,22 +11566,20 @@ def ratioExpr(self): self.exitRule() return localctx - class SettingExprListContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def settingExpr(self, i:int=None): + def settingExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.SettingExprContext) else: - return self.getTypedRuleContext(HogQLParser.SettingExprContext,i) - + return self.getTypedRuleContext(HogQLParser.SettingExprContext, i) - def COMMA(self, i:int=None): + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -3146,20 +11588,17 @@ def COMMA(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_settingExprList - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSettingExprList" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSettingExprList"): return visitor.visitSettingExprList(self) else: return visitor.visitChildren(self) - - - def settingExprList(self): localctx = HogQLParser.SettingExprListContext(self, self._ctx, self.state) self.enterRule(localctx, 52, self.RULE_settingExprList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 417 @@ -3167,7 +11606,7 @@ def settingExprList(self): self.state = 422 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 418 self.match(HogQLParser.COMMA) self.state = 419 @@ -3184,37 +11623,31 @@ def settingExprList(self): self.exitRule() return localctx - class SettingExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def EQ_SINGLE(self): return self.getToken(HogQLParser.EQ_SINGLE, 0) def literal(self): - return self.getTypedRuleContext(HogQLParser.LiteralContext,0) - + return self.getTypedRuleContext(HogQLParser.LiteralContext, 0) def getRuleIndex(self): return HogQLParser.RULE_settingExpr - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSettingExpr" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSettingExpr"): return visitor.visitSettingExpr(self) else: return visitor.visitChildren(self) - - - def settingExpr(self): localctx = HogQLParser.SettingExprContext(self, self._ctx, self.state) @@ -3235,69 +11668,59 @@ def settingExpr(self): self.exitRule() return localctx - class WindowExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def winPartitionByClause(self): - return self.getTypedRuleContext(HogQLParser.WinPartitionByClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.WinPartitionByClauseContext, 0) def winOrderByClause(self): - return self.getTypedRuleContext(HogQLParser.WinOrderByClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.WinOrderByClauseContext, 0) def winFrameClause(self): - return self.getTypedRuleContext(HogQLParser.WinFrameClauseContext,0) - + return self.getTypedRuleContext(HogQLParser.WinFrameClauseContext, 0) def getRuleIndex(self): return HogQLParser.RULE_windowExpr - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWindowExpr" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWindowExpr"): return visitor.visitWindowExpr(self) else: return visitor.visitChildren(self) - - - def windowExpr(self): localctx = HogQLParser.WindowExprContext(self, self._ctx, self.state) self.enterRule(localctx, 56, self.RULE_windowExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 430 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==126: + if _la == 126: self.state = 429 self.winPartitionByClause() - self.state = 433 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==122: + if _la == 122: self.state = 432 self.winOrderByClause() - self.state = 436 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==133 or _la==143: + if _la == 133 or _la == 143: self.state = 435 self.winFrameClause() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3306,11 +11729,10 @@ def windowExpr(self): self.exitRule() return localctx - class WinPartitionByClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -3321,21 +11743,17 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) def getRuleIndex(self): return HogQLParser.RULE_winPartitionByClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWinPartitionByClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWinPartitionByClause"): return visitor.visitWinPartitionByClause(self) else: return visitor.visitChildren(self) - - - def winPartitionByClause(self): localctx = HogQLParser.WinPartitionByClauseContext(self, self._ctx, self.state) @@ -3356,11 +11774,10 @@ def winPartitionByClause(self): self.exitRule() return localctx - class WinOrderByClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -3371,21 +11788,17 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def orderExprList(self): - return self.getTypedRuleContext(HogQLParser.OrderExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.OrderExprListContext, 0) def getRuleIndex(self): return HogQLParser.RULE_winOrderByClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWinOrderByClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWinOrderByClause"): return visitor.visitWinOrderByClause(self) else: return visitor.visitChildren(self) - - - def winOrderByClause(self): localctx = HogQLParser.WinOrderByClauseContext(self, self._ctx, self.state) @@ -3406,17 +11819,15 @@ def winOrderByClause(self): self.exitRule() return localctx - class WinFrameClauseContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def winFrameExtend(self): - return self.getTypedRuleContext(HogQLParser.WinFrameExtendContext,0) - + return self.getTypedRuleContext(HogQLParser.WinFrameExtendContext, 0) def ROWS(self): return self.getToken(HogQLParser.ROWS, 0) @@ -3427,25 +11838,22 @@ def RANGE(self): def getRuleIndex(self): return HogQLParser.RULE_winFrameClause - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWinFrameClause" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWinFrameClause"): return visitor.visitWinFrameClause(self) else: return visitor.visitChildren(self) - - - def winFrameClause(self): localctx = HogQLParser.WinFrameClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 62, self.RULE_winFrameClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 446 _la = self._input.LA(1) - if not(_la==133 or _la==143): + if not (_la == 133 or _la == 143): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -3460,66 +11868,56 @@ def winFrameClause(self): self.exitRule() return localctx - class WinFrameExtendContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def getRuleIndex(self): return HogQLParser.RULE_winFrameExtend - - def copyFrom(self, ctx:ParserRuleContext): + def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) - - class FrameStartContext(WinFrameExtendContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.WinFrameExtendContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.WinFrameExtendContext super().__init__(parser) self.copyFrom(ctx) def winFrameBound(self): - return self.getTypedRuleContext(HogQLParser.WinFrameBoundContext,0) - + return self.getTypedRuleContext(HogQLParser.WinFrameBoundContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrameStart" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFrameStart"): return visitor.visitFrameStart(self) else: return visitor.visitChildren(self) - class FrameBetweenContext(WinFrameExtendContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.WinFrameExtendContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.WinFrameExtendContext super().__init__(parser) self.copyFrom(ctx) def BETWEEN(self): return self.getToken(HogQLParser.BETWEEN, 0) - def winFrameBound(self, i:int=None): + + def winFrameBound(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.WinFrameBoundContext) else: - return self.getTypedRuleContext(HogQLParser.WinFrameBoundContext,i) + return self.getTypedRuleContext(HogQLParser.WinFrameBoundContext, i) def AND(self): return self.getToken(HogQLParser.AND, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrameBetween" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFrameBetween"): return visitor.visitFrameBetween(self) else: return visitor.visitChildren(self) - - def winFrameExtend(self): localctx = HogQLParser.WinFrameExtendContext(self, self._ctx, self.state) @@ -3557,11 +11955,10 @@ def winFrameExtend(self): self.exitRule() return localctx - class WinFrameBoundContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -3581,21 +11978,17 @@ def FOLLOWING(self): return self.getToken(HogQLParser.FOLLOWING, 0) def numberLiteral(self): - return self.getTypedRuleContext(HogQLParser.NumberLiteralContext,0) - + return self.getTypedRuleContext(HogQLParser.NumberLiteralContext, 0) def getRuleIndex(self): return HogQLParser.RULE_winFrameBound - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWinFrameBound" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWinFrameBound"): return visitor.visitWinFrameBound(self) else: return visitor.visitChildren(self) - - - def winFrameBound(self): localctx = HogQLParser.WinFrameBoundContext(self, self._ctx, self.state) @@ -3604,7 +11997,7 @@ def winFrameBound(self): self.enterOuterAlt(localctx, 1) self.state = 469 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,61,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 61, self._ctx) if la_ == 1: self.state = 457 self.match(HogQLParser.CURRENT) @@ -3640,7 +12033,6 @@ def winFrameBound(self): self.match(HogQLParser.FOLLOWING) pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3649,17 +12041,15 @@ def winFrameBound(self): self.exitRule() return localctx - class ExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def EOF(self): return self.getToken(HogQLParser.EOF, 0) @@ -3667,15 +12057,12 @@ def EOF(self): def getRuleIndex(self): return HogQLParser.RULE_expr - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpr" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExpr"): return visitor.visitExpr(self) else: return visitor.visitChildren(self) - - - def expr(self): localctx = HogQLParser.ExprContext(self, self._ctx, self.state) @@ -3694,174 +12081,164 @@ def expr(self): self.exitRule() return localctx - class ColumnTypeExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def getRuleIndex(self): return HogQLParser.RULE_columnTypeExpr - - def copyFrom(self, ctx:ParserRuleContext): + def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) - - class ColumnTypeExprNestedContext(ColumnTypeExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) - def identifier(self, i:int=None): + def identifier(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def columnTypeExpr(self, i:int=None): + + def columnTypeExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnTypeExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext, i) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def COMMA(self, i:int=None): + + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: return self.getToken(HogQLParser.COMMA, i) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnTypeExprNested" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnTypeExprNested"): return visitor.visitColumnTypeExprNested(self) else: return visitor.visitChildren(self) - class ColumnTypeExprParamContext(ColumnTypeExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def columnExprList(self): + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnTypeExprParam" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnTypeExprParam"): return visitor.visitColumnTypeExprParam(self) else: return visitor.visitChildren(self) - class ColumnTypeExprSimpleContext(ColumnTypeExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnTypeExprSimple" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnTypeExprSimple"): return visitor.visitColumnTypeExprSimple(self) else: return visitor.visitChildren(self) - class ColumnTypeExprComplexContext(ColumnTypeExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def columnTypeExpr(self, i:int=None): + + def columnTypeExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnTypeExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext, i) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def COMMA(self, i:int=None): + + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: return self.getToken(HogQLParser.COMMA, i) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnTypeExprComplex" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnTypeExprComplex"): return visitor.visitColumnTypeExprComplex(self) else: return visitor.visitChildren(self) - class ColumnTypeExprEnumContext(ColumnTypeExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def enumValue(self, i:int=None): + + def enumValue(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.EnumValueContext) else: - return self.getTypedRuleContext(HogQLParser.EnumValueContext,i) + return self.getTypedRuleContext(HogQLParser.EnumValueContext, i) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def COMMA(self, i:int=None): + + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: return self.getToken(HogQLParser.COMMA, i) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnTypeExprEnum" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnTypeExprEnum"): return visitor.visitColumnTypeExprEnum(self) else: return visitor.visitChildren(self) - - def columnTypeExpr(self): localctx = HogQLParser.ColumnTypeExprContext(self, self._ctx, self.state) self.enterRule(localctx, 70, self.RULE_columnTypeExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.state = 521 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,66,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 66, self._ctx) if la_ == 1: localctx = HogQLParser.ColumnTypeExprSimpleContext(self, localctx) self.enterOuterAlt(localctx, 1) @@ -3883,7 +12260,7 @@ def columnTypeExpr(self): self.state = 485 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 479 self.match(HogQLParser.COMMA) self.state = 480 @@ -3910,7 +12287,7 @@ def columnTypeExpr(self): self.state = 497 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 493 self.match(HogQLParser.COMMA) self.state = 494 @@ -3935,7 +12312,7 @@ def columnTypeExpr(self): self.state = 509 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 505 self.match(HogQLParser.COMMA) self.state = 506 @@ -3958,16 +12335,19 @@ def columnTypeExpr(self): self.state = 517 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): + if ( + (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) + or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) + or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) + or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) + ): self.state = 516 self.columnExprList() - self.state = 519 self.match(HogQLParser.RPAREN) pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3976,22 +12356,20 @@ def columnTypeExpr(self): self.exitRule() return localctx - class ColumnExprListContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) - - def COMMA(self, i:int=None): + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -4000,15 +12378,12 @@ def COMMA(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_columnExprList - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprList" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprList"): return visitor.visitColumnExprList(self) else: return visitor.visitChildren(self) - - - def columnExprList(self): localctx = HogQLParser.ColumnExprListContext(self, self._ctx, self.state) @@ -4019,16 +12394,16 @@ def columnExprList(self): self.columnExpr(0) self.state = 528 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,67,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: + _alt = self._interp.adaptivePredict(self._input, 67, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: self.state = 524 self.match(HogQLParser.COMMA) self.state = 525 - self.columnExpr(0) + self.columnExpr(0) self.state = 530 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,67,self._ctx) + _alt = self._interp.adaptivePredict(self._input, 67, self._ctx) except RecognitionException as re: localctx.exception = re @@ -4038,880 +12413,870 @@ def columnExprList(self): self.exitRule() return localctx - class ColumnExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def getRuleIndex(self): return HogQLParser.RULE_columnExpr - - def copyFrom(self, ctx:ParserRuleContext): + def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) - class ColumnExprTernaryOpContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def QUERY(self): return self.getToken(HogQLParser.QUERY, 0) + def COLON(self): return self.getToken(HogQLParser.COLON, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprTernaryOp" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprTernaryOp"): return visitor.visitColumnExprTernaryOp(self) else: return visitor.visitChildren(self) - class ColumnExprAliasContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def alias(self): - return self.getTypedRuleContext(HogQLParser.AliasContext,0) + return self.getTypedRuleContext(HogQLParser.AliasContext, 0) def AS(self): return self.getToken(HogQLParser.AS, 0) + def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprAlias" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprAlias"): return visitor.visitColumnExprAlias(self) else: return visitor.visitChildren(self) - class ColumnExprExtractContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def EXTRACT(self): return self.getToken(HogQLParser.EXTRACT, 0) + def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def interval(self): - return self.getTypedRuleContext(HogQLParser.IntervalContext,0) + return self.getTypedRuleContext(HogQLParser.IntervalContext, 0) def FROM(self): return self.getToken(HogQLParser.FROM, 0) + def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprExtract" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprExtract"): return visitor.visitColumnExprExtract(self) else: return visitor.visitChildren(self) - class ColumnExprNegateContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def DASH(self): return self.getToken(HogQLParser.DASH, 0) - def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def columnExpr(self): + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprNegate" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprNegate"): return visitor.visitColumnExprNegate(self) else: return visitor.visitChildren(self) - class ColumnExprSubqueryContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprSubquery" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprSubquery"): return visitor.visitColumnExprSubquery(self) else: return visitor.visitChildren(self) - class ColumnExprLiteralContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def literal(self): - return self.getTypedRuleContext(HogQLParser.LiteralContext,0) - + return self.getTypedRuleContext(HogQLParser.LiteralContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprLiteral" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprLiteral"): return visitor.visitColumnExprLiteral(self) else: return visitor.visitChildren(self) - class ColumnExprArrayContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def LBRACKET(self): return self.getToken(HogQLParser.LBRACKET, 0) + def RBRACKET(self): return self.getToken(HogQLParser.RBRACKET, 0) - def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def columnExprList(self): + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprArray" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprArray"): return visitor.visitColumnExprArray(self) else: return visitor.visitChildren(self) - class ColumnExprSubstringContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def SUBSTRING(self): return self.getToken(HogQLParser.SUBSTRING, 0) + def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def columnExpr(self, i:int=None): + + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def FROM(self): return self.getToken(HogQLParser.FROM, 0) + def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) + def FOR(self): return self.getToken(HogQLParser.FOR, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprSubstring" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprSubstring"): return visitor.visitColumnExprSubstring(self) else: return visitor.visitChildren(self) - class ColumnExprCastContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def CAST(self): return self.getToken(HogQLParser.CAST, 0) + def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def AS(self): return self.getToken(HogQLParser.AS, 0) + def columnTypeExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprCast" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprCast"): return visitor.visitColumnExprCast(self) else: return visitor.visitChildren(self) - class ColumnExprOrContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def OR(self): return self.getToken(HogQLParser.OR, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprOr" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprOr"): return visitor.visitColumnExprOr(self) else: return visitor.visitChildren(self) - class ColumnExprPrecedence1Context(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) - self.left = None # ColumnExprContext - self.operator = None # Token - self.right = None # ColumnExprContext + self.left = None # ColumnExprContext + self.operator = None # Token + self.right = None # ColumnExprContext self.copyFrom(ctx) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def ASTERISK(self): return self.getToken(HogQLParser.ASTERISK, 0) + def SLASH(self): return self.getToken(HogQLParser.SLASH, 0) + def PERCENT(self): return self.getToken(HogQLParser.PERCENT, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprPrecedence1" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprPrecedence1"): return visitor.visitColumnExprPrecedence1(self) else: return visitor.visitChildren(self) - class ColumnExprPrecedence2Context(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) - self.left = None # ColumnExprContext - self.operator = None # Token - self.right = None # ColumnExprContext + self.left = None # ColumnExprContext + self.operator = None # Token + self.right = None # ColumnExprContext self.copyFrom(ctx) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def PLUS(self): return self.getToken(HogQLParser.PLUS, 0) + def DASH(self): return self.getToken(HogQLParser.DASH, 0) + def CONCAT(self): return self.getToken(HogQLParser.CONCAT, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprPrecedence2" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprPrecedence2"): return visitor.visitColumnExprPrecedence2(self) else: return visitor.visitChildren(self) - class ColumnExprPrecedence3Context(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) - self.left = None # ColumnExprContext - self.operator = None # Token - self.right = None # ColumnExprContext + self.left = None # ColumnExprContext + self.operator = None # Token + self.right = None # ColumnExprContext self.copyFrom(ctx) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def IN(self): return self.getToken(HogQLParser.IN, 0) + def EQ_DOUBLE(self): return self.getToken(HogQLParser.EQ_DOUBLE, 0) + def EQ_SINGLE(self): return self.getToken(HogQLParser.EQ_SINGLE, 0) + def NOT_EQ(self): return self.getToken(HogQLParser.NOT_EQ, 0) + def LT_EQ(self): return self.getToken(HogQLParser.LT_EQ, 0) + def LT(self): return self.getToken(HogQLParser.LT, 0) + def GT_EQ(self): return self.getToken(HogQLParser.GT_EQ, 0) + def GT(self): return self.getToken(HogQLParser.GT, 0) + def LIKE(self): return self.getToken(HogQLParser.LIKE, 0) + def ILIKE(self): return self.getToken(HogQLParser.ILIKE, 0) + def REGEX_SINGLE(self): return self.getToken(HogQLParser.REGEX_SINGLE, 0) + def REGEX_DOUBLE(self): return self.getToken(HogQLParser.REGEX_DOUBLE, 0) + def NOT_REGEX(self): return self.getToken(HogQLParser.NOT_REGEX, 0) + def IREGEX_SINGLE(self): return self.getToken(HogQLParser.IREGEX_SINGLE, 0) + def IREGEX_DOUBLE(self): return self.getToken(HogQLParser.IREGEX_DOUBLE, 0) + def NOT_IREGEX(self): return self.getToken(HogQLParser.NOT_IREGEX, 0) + def COHORT(self): return self.getToken(HogQLParser.COHORT, 0) + def NOT(self): return self.getToken(HogQLParser.NOT, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprPrecedence3" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprPrecedence3"): return visitor.visitColumnExprPrecedence3(self) else: return visitor.visitChildren(self) - class ColumnExprIntervalContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def INTERVAL(self): return self.getToken(HogQLParser.INTERVAL, 0) + def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def interval(self): - return self.getTypedRuleContext(HogQLParser.IntervalContext,0) - + return self.getTypedRuleContext(HogQLParser.IntervalContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprInterval" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprInterval"): return visitor.visitColumnExprInterval(self) else: return visitor.visitChildren(self) - class ColumnExprIsNullContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def IS(self): return self.getToken(HogQLParser.IS, 0) + def NULL_SQL(self): return self.getToken(HogQLParser.NULL_SQL, 0) + def NOT(self): return self.getToken(HogQLParser.NOT, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprIsNull" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprIsNull"): return visitor.visitColumnExprIsNull(self) else: return visitor.visitChildren(self) - class ColumnExprWinFunctionTargetContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def identifier(self, i:int=None): + def identifier(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) def OVER(self): return self.getToken(HogQLParser.OVER, 0) + def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def columnExprList(self): + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprWinFunctionTarget" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprWinFunctionTarget"): return visitor.visitColumnExprWinFunctionTarget(self) else: return visitor.visitChildren(self) - class ColumnExprTrimContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def TRIM(self): return self.getToken(HogQLParser.TRIM, 0) + def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) + def FROM(self): return self.getToken(HogQLParser.FROM, 0) + def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) + def BOTH(self): return self.getToken(HogQLParser.BOTH, 0) + def LEADING(self): return self.getToken(HogQLParser.LEADING, 0) + def TRAILING(self): return self.getToken(HogQLParser.TRAILING, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprTrim" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprTrim"): return visitor.visitColumnExprTrim(self) else: return visitor.visitChildren(self) - class ColumnExprTupleContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprTuple" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprTuple"): return visitor.visitColumnExprTuple(self) else: return visitor.visitChildren(self) - class ColumnExprArrayAccessContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def LBRACKET(self): return self.getToken(HogQLParser.LBRACKET, 0) + def RBRACKET(self): return self.getToken(HogQLParser.RBRACKET, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprArrayAccess" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprArrayAccess"): return visitor.visitColumnExprArrayAccess(self) else: return visitor.visitChildren(self) - class ColumnExprBetweenContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def BETWEEN(self): return self.getToken(HogQLParser.BETWEEN, 0) + def AND(self): return self.getToken(HogQLParser.AND, 0) + def NOT(self): return self.getToken(HogQLParser.NOT, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprBetween" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprBetween"): return visitor.visitColumnExprBetween(self) else: return visitor.visitChildren(self) - class ColumnExprPropertyAccessContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def DOT(self): return self.getToken(HogQLParser.DOT, 0) - def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + def identifier(self): + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprPropertyAccess" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprPropertyAccess"): return visitor.visitColumnExprPropertyAccess(self) else: return visitor.visitChildren(self) - class ColumnExprParensContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprParens" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprParens"): return visitor.visitColumnExprParens(self) else: return visitor.visitChildren(self) - class ColumnExprTimestampContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def TIMESTAMP(self): return self.getToken(HogQLParser.TIMESTAMP, 0) + def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprTimestamp" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprTimestamp"): return visitor.visitColumnExprTimestamp(self) else: return visitor.visitChildren(self) - class ColumnExprNullishContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def NULLISH(self): return self.getToken(HogQLParser.NULLISH, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprNullish" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprNullish"): return visitor.visitColumnExprNullish(self) else: return visitor.visitChildren(self) - class ColumnExprAndContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) def AND(self): return self.getToken(HogQLParser.AND, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprAnd" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprAnd"): return visitor.visitColumnExprAnd(self) else: return visitor.visitChildren(self) - class ColumnExprTupleAccessContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def DOT(self): return self.getToken(HogQLParser.DOT, 0) + def DECIMAL_LITERAL(self): return self.getToken(HogQLParser.DECIMAL_LITERAL, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprTupleAccess" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprTupleAccess"): return visitor.visitColumnExprTupleAccess(self) else: return visitor.visitChildren(self) - class ColumnExprCaseContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) - self.caseExpr = None # ColumnExprContext - self.whenExpr = None # ColumnExprContext - self.thenExpr = None # ColumnExprContext - self.elseExpr = None # ColumnExprContext + self.caseExpr = None # ColumnExprContext + self.whenExpr = None # ColumnExprContext + self.thenExpr = None # ColumnExprContext + self.elseExpr = None # ColumnExprContext self.copyFrom(ctx) def CASE(self): return self.getToken(HogQLParser.CASE, 0) + def END(self): return self.getToken(HogQLParser.END, 0) - def WHEN(self, i:int=None): + + def WHEN(self, i: int = None): if i is None: return self.getTokens(HogQLParser.WHEN) else: return self.getToken(HogQLParser.WHEN, i) - def THEN(self, i:int=None): + + def THEN(self, i: int = None): if i is None: return self.getTokens(HogQLParser.THEN) else: return self.getToken(HogQLParser.THEN, i) + def ELSE(self): return self.getToken(HogQLParser.ELSE, 0) - def columnExpr(self, i:int=None): + + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprCase" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprCase"): return visitor.visitColumnExprCase(self) else: return visitor.visitChildren(self) - class ColumnExprDateContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def DATE(self): return self.getToken(HogQLParser.DATE, 0) + def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprDate" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprDate"): return visitor.visitColumnExprDate(self) else: return visitor.visitChildren(self) - class ColumnExprNotContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def NOT(self): return self.getToken(HogQLParser.NOT, 0) - def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def columnExpr(self): + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprNot" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprNot"): return visitor.visitColumnExprNot(self) else: return visitor.visitChildren(self) - class ColumnExprWinFunctionContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def OVER(self): return self.getToken(HogQLParser.OVER, 0) - def LPAREN(self, i:int=None): + + def LPAREN(self, i: int = None): if i is None: return self.getTokens(HogQLParser.LPAREN) else: return self.getToken(HogQLParser.LPAREN, i) + def windowExpr(self): - return self.getTypedRuleContext(HogQLParser.WindowExprContext,0) + return self.getTypedRuleContext(HogQLParser.WindowExprContext, 0) - def RPAREN(self, i:int=None): + def RPAREN(self, i: int = None): if i is None: return self.getTokens(HogQLParser.RPAREN) else: return self.getToken(HogQLParser.RPAREN, i) - def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def columnExprList(self): + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprWinFunction" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprWinFunction"): return visitor.visitColumnExprWinFunction(self) else: return visitor.visitChildren(self) - class ColumnExprIdentifierContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnIdentifier(self): - return self.getTypedRuleContext(HogQLParser.ColumnIdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnIdentifierContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprIdentifier" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprIdentifier"): return visitor.visitColumnExprIdentifier(self) else: return visitor.visitChildren(self) - class ColumnExprFunctionContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) - def LPAREN(self, i:int=None): + def LPAREN(self, i: int = None): if i is None: return self.getTokens(HogQLParser.LPAREN) else: return self.getToken(HogQLParser.LPAREN, i) - def RPAREN(self, i:int=None): + + def RPAREN(self, i: int = None): if i is None: return self.getTokens(HogQLParser.RPAREN) else: return self.getToken(HogQLParser.RPAREN, i) + def DISTINCT(self): return self.getToken(HogQLParser.DISTINCT, 0) + def columnArgList(self): - return self.getTypedRuleContext(HogQLParser.ColumnArgListContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnArgListContext, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprFunction" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprFunction"): return visitor.visitColumnExprFunction(self) else: return visitor.visitChildren(self) - class ColumnExprAsteriskContext(ColumnExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def ASTERISK(self): return self.getToken(HogQLParser.ASTERISK, 0) + def tableIdentifier(self): - return self.getTypedRuleContext(HogQLParser.TableIdentifierContext,0) + return self.getTypedRuleContext(HogQLParser.TableIdentifierContext, 0) def DOT(self): return self.getToken(HogQLParser.DOT, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnExprAsterisk" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnExprAsterisk"): return visitor.visitColumnExprAsterisk(self) else: return visitor.visitChildren(self) - - - def columnExpr(self, _p:int=0): + def columnExpr(self, _p: int = 0): _parentctx = self._ctx _parentState = self.state localctx = HogQLParser.ColumnExprContext(self, self._ctx, _parentState) _prevctx = localctx _startState = 74 self.enterRecursionRule(localctx, 74, self.RULE_columnExpr, _p) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 660 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,80,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 80, self._ctx) if la_ == 1: localctx = HogQLParser.ColumnExprCaseContext(self, localctx) self._ctx = localctx @@ -4921,13 +13286,12 @@ def columnExpr(self, _p:int=0): self.match(HogQLParser.CASE) self.state = 534 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,68,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 68, self._ctx) if la_ == 1: self.state = 533 localctx.caseExpr = self.columnExpr(0) - - self.state = 541 + self.state = 541 self._errHandler.sync(self) _la = self._input.LA(1) while True: @@ -4939,22 +13303,21 @@ def columnExpr(self, _p:int=0): self.match(HogQLParser.THEN) self.state = 539 localctx.thenExpr = self.columnExpr(0) - self.state = 543 + self.state = 543 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==186): + if not (_la == 186): break self.state = 547 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==52: + if _la == 52: self.state = 545 self.match(HogQLParser.ELSE) self.state = 546 localctx.elseExpr = self.columnExpr(0) - self.state = 549 self.match(HogQLParser.END) pass @@ -5034,13 +13397,12 @@ def columnExpr(self, _p:int=0): self.state = 578 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==65: + if _la == 65: self.state = 576 self.match(HogQLParser.FOR) self.state = 577 self.columnExpr(0) - self.state = 580 self.match(HogQLParser.RPAREN) pass @@ -5065,7 +13427,7 @@ def columnExpr(self, _p:int=0): self.match(HogQLParser.LPAREN) self.state = 586 _la = self._input.LA(1) - if not(_la==17 or _la==95 or _la==170): + if not (_la == 17 or _la == 95 or _la == 170): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -5092,11 +13454,15 @@ def columnExpr(self, _p:int=0): self.state = 595 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): + if ( + (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) + or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) + or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) + or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) + ): self.state = 594 self.columnExprList() - self.state = 597 self.match(HogQLParser.RPAREN) self.state = 599 @@ -5121,11 +13487,15 @@ def columnExpr(self, _p:int=0): self.state = 607 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): + if ( + (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) + or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) + or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) + or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) + ): self.state = 606 self.columnExprList() - self.state = 609 self.match(HogQLParser.RPAREN) self.state = 611 @@ -5142,40 +13512,46 @@ def columnExpr(self, _p:int=0): self.identifier() self.state = 620 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,75,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 75, self._ctx) if la_ == 1: self.state = 615 self.match(HogQLParser.LPAREN) self.state = 617 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): + if ( + (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) + or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) + or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) + or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) + ): self.state = 616 self.columnExprList() - self.state = 619 self.match(HogQLParser.RPAREN) - self.state = 622 self.match(HogQLParser.LPAREN) self.state = 624 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,76,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 76, self._ctx) if la_ == 1: self.state = 623 self.match(HogQLParser.DISTINCT) - self.state = 627 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): + if ( + (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) + or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) + or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) + or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) + ): self.state = 626 self.columnArgList() - self.state = 629 self.match(HogQLParser.RPAREN) pass @@ -5215,13 +13591,18 @@ def columnExpr(self, _p:int=0): self.state = 639 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -5066549581053953) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or _la==192 or _la==194: + if ( + (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) + or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -5066549581053953) != 0) + or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) + or _la == 192 + or _la == 194 + ): self.state = 636 self.tableIdentifier() self.state = 637 self.match(HogQLParser.DOT) - self.state = 641 self.match(HogQLParser.ASTERISK) pass @@ -5271,11 +13652,15 @@ def columnExpr(self, _p:int=0): self.state = 656 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): + if ( + (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) + or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) + or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) + or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) + ): self.state = 655 self.columnExprList() - self.state = 658 self.match(HogQLParser.RBRACKET) pass @@ -5288,26 +13673,28 @@ def columnExpr(self, _p:int=0): self.columnIdentifier() pass - self._ctx.stop = self._input.LT(-1) self.state = 755 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,91,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: + _alt = self._interp.adaptivePredict(self._input, 91, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 753 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,90,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 90, self._ctx) if la_ == 1: - localctx = HogQLParser.ColumnExprPrecedence1Context(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprPrecedence1Context( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) localctx.left = _prevctx self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 662 if not self.precpred(self._ctx, 17): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 17)") self.state = 666 self._errHandler.sync(self) @@ -5332,12 +13719,15 @@ def columnExpr(self, _p:int=0): pass elif la_ == 2: - localctx = HogQLParser.ColumnExprPrecedence2Context(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprPrecedence2Context( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) localctx.left = _prevctx self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 669 if not self.precpred(self._ctx, 16): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 16)") self.state = 673 self._errHandler.sync(self) @@ -5362,16 +13752,19 @@ def columnExpr(self, _p:int=0): pass elif la_ == 3: - localctx = HogQLParser.ColumnExprPrecedence3Context(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprPrecedence3Context( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) localctx.left = _prevctx self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 676 if not self.precpred(self._ctx, 15): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 15)") self.state = 701 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,86,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 86, self._ctx) if la_ == 1: self.state = 677 localctx.operator = self.match(HogQLParser.EQ_DOUBLE) @@ -5411,35 +13804,32 @@ def columnExpr(self, _p:int=0): self.state = 685 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==115: + if _la == 115: self.state = 684 localctx.operator = self.match(HogQLParser.NOT) - self.state = 687 self.match(HogQLParser.IN) self.state = 689 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==25: + if _la == 25: self.state = 688 self.match(HogQLParser.COHORT) - pass elif la_ == 9: self.state = 692 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==115: + if _la == 115: self.state = 691 localctx.operator = self.match(HogQLParser.NOT) - self.state = 694 _la = self._input.LA(1) - if not(_la==79 or _la==98): + if not (_la == 79 or _la == 98): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -5476,17 +13866,19 @@ def columnExpr(self, _p:int=0): localctx.operator = self.match(HogQLParser.NOT_IREGEX) pass - self.state = 703 localctx.right = self.columnExpr(16) pass elif la_ == 4: - localctx = HogQLParser.ColumnExprNullishContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprNullishContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 704 if not self.precpred(self._ctx, 13): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 13)") self.state = 705 self.match(HogQLParser.NULLISH) @@ -5495,11 +13887,14 @@ def columnExpr(self, _p:int=0): pass elif la_ == 5: - localctx = HogQLParser.ColumnExprAndContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprAndContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 707 if not self.precpred(self._ctx, 11): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 11)") self.state = 708 self.match(HogQLParser.AND) @@ -5508,11 +13903,14 @@ def columnExpr(self, _p:int=0): pass elif la_ == 6: - localctx = HogQLParser.ColumnExprOrContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprOrContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 710 if not self.precpred(self._ctx, 10): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") self.state = 711 self.match(HogQLParser.OR) @@ -5521,20 +13919,22 @@ def columnExpr(self, _p:int=0): pass elif la_ == 7: - localctx = HogQLParser.ColumnExprBetweenContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprBetweenContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 713 if not self.precpred(self._ctx, 9): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") self.state = 715 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==115: + if _la == 115: self.state = 714 self.match(HogQLParser.NOT) - self.state = 717 self.match(HogQLParser.BETWEEN) self.state = 718 @@ -5546,11 +13946,14 @@ def columnExpr(self, _p:int=0): pass elif la_ == 8: - localctx = HogQLParser.ColumnExprTernaryOpContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprTernaryOpContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 722 if not self.precpred(self._ctx, 8): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") self.state = 723 self.match(HogQLParser.QUERY) @@ -5563,11 +13966,14 @@ def columnExpr(self, _p:int=0): pass elif la_ == 9: - localctx = HogQLParser.ColumnExprArrayAccessContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprArrayAccessContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 728 if not self.precpred(self._ctx, 21): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 21)") self.state = 729 self.match(HogQLParser.LBRACKET) @@ -5578,11 +13984,14 @@ def columnExpr(self, _p:int=0): pass elif la_ == 10: - localctx = HogQLParser.ColumnExprTupleAccessContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprTupleAccessContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 733 if not self.precpred(self._ctx, 20): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 20)") self.state = 734 self.match(HogQLParser.DOT) @@ -5591,11 +14000,14 @@ def columnExpr(self, _p:int=0): pass elif la_ == 11: - localctx = HogQLParser.ColumnExprPropertyAccessContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprPropertyAccessContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 736 if not self.precpred(self._ctx, 19): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 19)") self.state = 737 self.match(HogQLParser.DOT) @@ -5604,36 +14016,41 @@ def columnExpr(self, _p:int=0): pass elif la_ == 12: - localctx = HogQLParser.ColumnExprIsNullContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprIsNullContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 739 if not self.precpred(self._ctx, 14): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 14)") self.state = 740 self.match(HogQLParser.IS) self.state = 742 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==115: + if _la == 115: self.state = 741 self.match(HogQLParser.NOT) - self.state = 744 self.match(HogQLParser.NULL_SQL) pass elif la_ == 13: - localctx = HogQLParser.ColumnExprAliasContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.ColumnExprAliasContext( + self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 745 if not self.precpred(self._ctx, 7): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") self.state = 751 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,89,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 89, self._ctx) if la_ == 1: self.state = 746 self.alias() @@ -5653,13 +14070,11 @@ def columnExpr(self, _p:int=0): self.match(HogQLParser.STRING_LITERAL) pass - pass - self.state = 757 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,91,self._ctx) + _alt = self._interp.adaptivePredict(self._input, 91, self._ctx) except RecognitionException as re: localctx.exception = re @@ -5669,22 +14084,20 @@ def columnExpr(self, _p:int=0): self.unrollRecursionContexts(_parentctx) return localctx - class ColumnArgListContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def columnArgExpr(self, i:int=None): + def columnArgExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnArgExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnArgExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnArgExprContext, i) - - def COMMA(self, i:int=None): + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -5693,20 +14106,17 @@ def COMMA(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_columnArgList - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnArgList" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnArgList"): return visitor.visitColumnArgList(self) else: return visitor.visitChildren(self) - - - def columnArgList(self): localctx = HogQLParser.ColumnArgListContext(self, self._ctx, self.state) self.enterRule(localctx, 76, self.RULE_columnArgList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 758 @@ -5714,7 +14124,7 @@ def columnArgList(self): self.state = 763 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 759 self.match(HogQLParser.COMMA) self.state = 760 @@ -5731,34 +14141,28 @@ def columnArgList(self): self.exitRule() return localctx - class ColumnArgExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def columnLambdaExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnLambdaExprContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnLambdaExprContext, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def getRuleIndex(self): return HogQLParser.RULE_columnArgExpr - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnArgExpr" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnArgExpr"): return visitor.visitColumnArgExpr(self) else: return visitor.visitChildren(self) - - - def columnArgExpr(self): localctx = HogQLParser.ColumnArgExprContext(self, self._ctx, self.state) @@ -5766,7 +14170,7 @@ def columnArgExpr(self): try: self.state = 768 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,93,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 93, self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) self.state = 766 @@ -5779,7 +14183,6 @@ def columnArgExpr(self): self.columnExpr(0) pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5788,11 +14191,10 @@ def columnArgExpr(self): self.exitRule() return localctx - class ColumnLambdaExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -5800,23 +14202,21 @@ def ARROW(self): return self.getToken(HogQLParser.ARROW, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) - + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def identifier(self, i:int=None): + def identifier(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) - + return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def COMMA(self, i:int=None): + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -5825,20 +14225,17 @@ def COMMA(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_columnLambdaExpr - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnLambdaExpr" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnLambdaExpr"): return visitor.visitColumnLambdaExpr(self) else: return visitor.visitChildren(self) - - - def columnLambdaExpr(self): localctx = HogQLParser.ColumnLambdaExprContext(self, self._ctx, self.state) self.enterRule(localctx, 80, self.RULE_columnLambdaExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 789 @@ -5852,7 +14249,7 @@ def columnLambdaExpr(self): self.state = 776 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 772 self.match(HogQLParser.COMMA) self.state = 773 @@ -5864,13 +14261,201 @@ def columnLambdaExpr(self): self.state = 779 self.match(HogQLParser.RPAREN) pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194]: + elif token in [ + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 114, + 115, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 194, + ]: self.state = 781 self.identifier() self.state = 786 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 782 self.match(HogQLParser.COMMA) self.state = 783 @@ -5895,22 +14480,20 @@ def columnLambdaExpr(self): self.exitRule() return localctx - class WithExprListContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def withExpr(self, i:int=None): + def withExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.WithExprContext) else: - return self.getTypedRuleContext(HogQLParser.WithExprContext,i) + return self.getTypedRuleContext(HogQLParser.WithExprContext, i) - - def COMMA(self, i:int=None): + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -5919,20 +14502,17 @@ def COMMA(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_withExprList - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWithExprList" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWithExprList"): return visitor.visitWithExprList(self) else: return visitor.visitChildren(self) - - - def withExprList(self): localctx = HogQLParser.WithExprListContext(self, self._ctx, self.state) self.enterRule(localctx, 82, self.RULE_withExprList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 794 @@ -5940,7 +14520,7 @@ def withExprList(self): self.state = 799 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 795 self.match(HogQLParser.COMMA) self.state = 796 @@ -5957,73 +14537,65 @@ def withExprList(self): self.exitRule() return localctx - class WithExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def getRuleIndex(self): return HogQLParser.RULE_withExpr - - def copyFrom(self, ctx:ParserRuleContext): + def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) - - class WithExprColumnContext(WithExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.WithExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.WithExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) def AS(self): return self.getToken(HogQLParser.AS, 0) - def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + def identifier(self): + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWithExprColumn" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWithExprColumn"): return visitor.visitWithExprColumn(self) else: return visitor.visitChildren(self) - class WithExprSubqueryContext(WithExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.WithExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.WithExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def AS(self): return self.getToken(HogQLParser.AS, 0) + def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWithExprSubquery" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWithExprSubquery"): return visitor.visitWithExprSubquery(self) else: return visitor.visitChildren(self) - - def withExpr(self): localctx = HogQLParser.WithExprContext(self, self._ctx, self.state) @@ -6031,7 +14603,7 @@ def withExpr(self): try: self.state = 812 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,98,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 98, self._ctx) if la_ == 1: localctx = HogQLParser.WithExprSubqueryContext(self, localctx) self.enterOuterAlt(localctx, 1) @@ -6058,7 +14630,6 @@ def withExpr(self): self.identifier() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6067,11 +14638,10 @@ def withExpr(self): self.exitRule() return localctx - class ColumnIdentifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -6079,12 +14649,10 @@ def PLACEHOLDER(self): return self.getToken(HogQLParser.PLACEHOLDER, 0) def nestedIdentifier(self): - return self.getTypedRuleContext(HogQLParser.NestedIdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.NestedIdentifierContext, 0) def tableIdentifier(self): - return self.getTypedRuleContext(HogQLParser.TableIdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.TableIdentifierContext, 0) def DOT(self): return self.getToken(HogQLParser.DOT, 0) @@ -6092,15 +14660,12 @@ def DOT(self): def getRuleIndex(self): return HogQLParser.RULE_columnIdentifier - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnIdentifier" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitColumnIdentifier"): return visitor.visitColumnIdentifier(self) else: return visitor.visitChildren(self) - - - def columnIdentifier(self): localctx = HogQLParser.ColumnIdentifierContext(self, self._ctx, self.state) @@ -6114,18 +14679,205 @@ def columnIdentifier(self): self.state = 814 self.match(HogQLParser.PLACEHOLDER) pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194]: + elif token in [ + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 114, + 115, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 194, + ]: self.enterOuterAlt(localctx, 2) self.state = 818 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,99,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 99, self._ctx) if la_ == 1: self.state = 815 self.tableIdentifier() self.state = 816 self.match(HogQLParser.DOT) - self.state = 820 self.nestedIdentifier() pass @@ -6140,22 +14892,20 @@ def columnIdentifier(self): self.exitRule() return localctx - class NestedIdentifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def identifier(self, i:int=None): + def identifier(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) + return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) - - def DOT(self, i:int=None): + def DOT(self, i: int = None): if i is None: return self.getTokens(HogQLParser.DOT) else: @@ -6164,15 +14914,12 @@ def DOT(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_nestedIdentifier - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNestedIdentifier" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitNestedIdentifier"): return visitor.visitNestedIdentifier(self) else: return visitor.visitChildren(self) - - - def nestedIdentifier(self): localctx = HogQLParser.NestedIdentifierContext(self, self._ctx, self.state) @@ -6183,16 +14930,16 @@ def nestedIdentifier(self): self.identifier() self.state = 828 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,101,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: + _alt = self._interp.adaptivePredict(self._input, 101, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: self.state = 824 self.match(HogQLParser.DOT) self.state = 825 - self.identifier() + self.identifier() self.state = 830 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,101,self._ctx) + _alt = self._interp.adaptivePredict(self._input, 101, self._ctx) except RecognitionException as re: localctx.exception = re @@ -6202,121 +14949,105 @@ def nestedIdentifier(self): self.exitRule() return localctx - class TableExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def getRuleIndex(self): return HogQLParser.RULE_tableExpr - - def copyFrom(self, ctx:ParserRuleContext): + def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) - class TableExprIdentifierContext(TableExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def tableIdentifier(self): - return self.getTypedRuleContext(HogQLParser.TableIdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.TableIdentifierContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableExprIdentifier" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTableExprIdentifier"): return visitor.visitTableExprIdentifier(self) else: return visitor.visitChildren(self) - class TableExprPlaceholderContext(TableExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def PLACEHOLDER(self): return self.getToken(HogQLParser.PLACEHOLDER, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableExprPlaceholder" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTableExprPlaceholder"): return visitor.visitTableExprPlaceholder(self) else: return visitor.visitChildren(self) - class TableExprSubqueryContext(TableExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) + def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableExprSubquery" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTableExprSubquery"): return visitor.visitTableExprSubquery(self) else: return visitor.visitChildren(self) - class TableExprAliasContext(TableExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def tableExpr(self): - return self.getTypedRuleContext(HogQLParser.TableExprContext,0) + return self.getTypedRuleContext(HogQLParser.TableExprContext, 0) def alias(self): - return self.getTypedRuleContext(HogQLParser.AliasContext,0) + return self.getTypedRuleContext(HogQLParser.AliasContext, 0) def AS(self): return self.getToken(HogQLParser.AS, 0) - def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + def identifier(self): + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableExprAlias" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTableExprAlias"): return visitor.visitTableExprAlias(self) else: return visitor.visitChildren(self) - class TableExprFunctionContext(TableExprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext + def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def tableFunctionExpr(self): - return self.getTypedRuleContext(HogQLParser.TableFunctionExprContext,0) - + return self.getTypedRuleContext(HogQLParser.TableFunctionExprContext, 0) - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableExprFunction" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTableExprFunction"): return visitor.visitTableExprFunction(self) else: return visitor.visitChildren(self) - - - def tableExpr(self, _p:int=0): + def tableExpr(self, _p: int = 0): _parentctx = self._ctx _parentState = self.state localctx = HogQLParser.TableExprContext(self, self._ctx, _parentState) @@ -6327,7 +15058,7 @@ def tableExpr(self, _p:int=0): self.enterOuterAlt(localctx, 1) self.state = 839 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,102,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 102, self._ctx) if la_ == 1: localctx = HogQLParser.TableExprIdentifierContext(self, localctx) self._ctx = localctx @@ -6365,21 +15096,23 @@ def tableExpr(self, _p:int=0): self.match(HogQLParser.PLACEHOLDER) pass - self._ctx.stop = self._input.LT(-1) self.state = 849 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,104,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: + _alt = self._interp.adaptivePredict(self._input, 104, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx - localctx = HogQLParser.TableExprAliasContext(self, HogQLParser.TableExprContext(self, _parentctx, _parentState)) + localctx = HogQLParser.TableExprAliasContext( + self, HogQLParser.TableExprContext(self, _parentctx, _parentState) + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_tableExpr) self.state = 841 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 845 self._errHandler.sync(self) @@ -6396,10 +15129,10 @@ def tableExpr(self, _p:int=0): pass else: raise NoViableAltException(self) - + self.state = 851 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,104,self._ctx) + _alt = self._interp.adaptivePredict(self._input, 104, self._ctx) except RecognitionException as re: localctx.exception = re @@ -6409,17 +15142,15 @@ def tableExpr(self, _p:int=0): self.unrollRecursionContexts(_parentctx) return localctx - class TableFunctionExprContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) @@ -6428,26 +15159,22 @@ def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) def tableArgList(self): - return self.getTypedRuleContext(HogQLParser.TableArgListContext,0) - + return self.getTypedRuleContext(HogQLParser.TableArgListContext, 0) def getRuleIndex(self): return HogQLParser.RULE_tableFunctionExpr - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableFunctionExpr" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTableFunctionExpr"): return visitor.visitTableFunctionExpr(self) else: return visitor.visitChildren(self) - - - def tableFunctionExpr(self): localctx = HogQLParser.TableFunctionExprContext(self, self._ctx, self.state) self.enterRule(localctx, 92, self.RULE_tableFunctionExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 852 @@ -6457,11 +15184,15 @@ def tableFunctionExpr(self): self.state = 855 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): + if ( + (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) + or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) + or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) + or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) + ): self.state = 854 self.tableArgList() - self.state = 857 self.match(HogQLParser.RPAREN) except RecognitionException as re: @@ -6472,21 +15203,18 @@ def tableFunctionExpr(self): self.exitRule() return localctx - class TableIdentifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def databaseIdentifier(self): - return self.getTypedRuleContext(HogQLParser.DatabaseIdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.DatabaseIdentifierContext, 0) def DOT(self): return self.getToken(HogQLParser.DOT, 0) @@ -6494,15 +15222,12 @@ def DOT(self): def getRuleIndex(self): return HogQLParser.RULE_tableIdentifier - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableIdentifier" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTableIdentifier"): return visitor.visitTableIdentifier(self) else: return visitor.visitChildren(self) - - - def tableIdentifier(self): localctx = HogQLParser.TableIdentifierContext(self, self._ctx, self.state) @@ -6511,14 +15236,13 @@ def tableIdentifier(self): self.enterOuterAlt(localctx, 1) self.state = 862 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,106,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 106, self._ctx) if la_ == 1: self.state = 859 self.databaseIdentifier() self.state = 860 self.match(HogQLParser.DOT) - self.state = 864 self.identifier() except RecognitionException as re: @@ -6529,22 +15253,20 @@ def tableIdentifier(self): self.exitRule() return localctx - class TableArgListContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser - def columnExpr(self, i:int=None): + def columnExpr(self, i: int = None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) - - def COMMA(self, i:int=None): + def COMMA(self, i: int = None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -6553,20 +15275,17 @@ def COMMA(self, i:int=None): def getRuleIndex(self): return HogQLParser.RULE_tableArgList - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableArgList" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTableArgList"): return visitor.visitTableArgList(self) else: return visitor.visitChildren(self) - - - def tableArgList(self): localctx = HogQLParser.TableArgListContext(self, self._ctx, self.state) self.enterRule(localctx, 96, self.RULE_tableArgList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 866 @@ -6574,7 +15293,7 @@ def tableArgList(self): self.state = 871 self._errHandler.sync(self) _la = self._input.LA(1) - while _la==206: + while _la == 206: self.state = 867 self.match(HogQLParser.COMMA) self.state = 868 @@ -6591,30 +15310,25 @@ def tableArgList(self): self.exitRule() return localctx - class DatabaseIdentifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) - + return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) def getRuleIndex(self): return HogQLParser.RULE_databaseIdentifier - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDatabaseIdentifier" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDatabaseIdentifier"): return visitor.visitDatabaseIdentifier(self) else: return visitor.visitChildren(self) - - - def databaseIdentifier(self): localctx = HogQLParser.DatabaseIdentifierContext(self, self._ctx, self.state) @@ -6631,11 +15345,10 @@ def databaseIdentifier(self): self.exitRule() return localctx - class FloatingLiteralContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -6645,7 +15358,7 @@ def FLOATING_LITERAL(self): def DOT(self): return self.getToken(HogQLParser.DOT, 0) - def DECIMAL_LITERAL(self, i:int=None): + def DECIMAL_LITERAL(self, i: int = None): if i is None: return self.getTokens(HogQLParser.DECIMAL_LITERAL) else: @@ -6657,20 +15370,17 @@ def OCTAL_LITERAL(self): def getRuleIndex(self): return HogQLParser.RULE_floatingLiteral - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFloatingLiteral" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFloatingLiteral"): return visitor.visitFloatingLiteral(self) else: return visitor.visitChildren(self) - - - def floatingLiteral(self): localctx = HogQLParser.FloatingLiteralContext(self, self._ctx, self.state) self.enterRule(localctx, 100, self.RULE_floatingLiteral) - self._la = 0 # Token type + self._la = 0 # Token type try: self.state = 884 self._errHandler.sync(self) @@ -6686,7 +15396,7 @@ def floatingLiteral(self): self.match(HogQLParser.DOT) self.state = 878 _la = self._input.LA(1) - if not(_la==196 or _la==197): + if not (_la == 196 or _la == 197): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -6700,17 +15410,16 @@ def floatingLiteral(self): self.match(HogQLParser.DOT) self.state = 882 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,108,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 108, self._ctx) if la_ == 1: self.state = 881 _la = self._input.LA(1) - if not(_la==196 or _la==197): + if not (_la == 196 or _la == 197): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - pass else: raise NoViableAltException(self) @@ -6723,17 +15432,15 @@ def floatingLiteral(self): self.exitRule() return localctx - class NumberLiteralContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def floatingLiteral(self): - return self.getTypedRuleContext(HogQLParser.FloatingLiteralContext,0) - + return self.getTypedRuleContext(HogQLParser.FloatingLiteralContext, 0) def OCTAL_LITERAL(self): return self.getToken(HogQLParser.OCTAL_LITERAL, 0) @@ -6759,38 +15466,34 @@ def DASH(self): def getRuleIndex(self): return HogQLParser.RULE_numberLiteral - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNumberLiteral" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitNumberLiteral"): return visitor.visitNumberLiteral(self) else: return visitor.visitChildren(self) - - - def numberLiteral(self): localctx = HogQLParser.NumberLiteralContext(self, self._ctx, self.state) self.enterRule(localctx, 102, self.RULE_numberLiteral) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 887 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==208 or _la==228: + if _la == 208 or _la == 228: self.state = 886 _la = self._input.LA(1) - if not(_la==208 or _la==228): + if not (_la == 208 or _la == 228): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 895 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,111,self._ctx) + la_ = self._interp.adaptivePredict(self._input, 111, self._ctx) if la_ == 1: self.state = 889 self.floatingLiteral() @@ -6821,7 +15524,6 @@ def numberLiteral(self): self.match(HogQLParser.NAN_SQL) pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6830,17 +15532,15 @@ def numberLiteral(self): self.exitRule() return localctx - class LiteralContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser def numberLiteral(self): - return self.getTypedRuleContext(HogQLParser.NumberLiteralContext,0) - + return self.getTypedRuleContext(HogQLParser.NumberLiteralContext, 0) def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) @@ -6851,15 +15551,12 @@ def NULL_SQL(self): def getRuleIndex(self): return HogQLParser.RULE_literal - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLiteral" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLiteral"): return visitor.visitLiteral(self) else: return visitor.visitChildren(self) - - - def literal(self): localctx = HogQLParser.LiteralContext(self, self._ctx, self.state) @@ -6894,11 +15591,10 @@ def literal(self): self.exitRule() return localctx - class IntervalContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -6929,25 +15625,26 @@ def YEAR(self): def getRuleIndex(self): return HogQLParser.RULE_interval - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterval" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterval"): return visitor.visitInterval(self) else: return visitor.visitChildren(self) - - - def interval(self): localctx = HogQLParser.IntervalContext(self, self._ctx, self.state) self.enterRule(localctx, 106, self.RULE_interval) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 902 _la = self._input.LA(1) - if not(_la==37 or ((((_la - 76)) & ~0x3f) == 0 and ((1 << (_la - 76)) & 72057615512764417) != 0) or ((((_la - 145)) & ~0x3f) == 0 and ((1 << (_la - 145)) & 36283883716609) != 0)): + if not ( + _la == 37 + or ((((_la - 76)) & ~0x3F) == 0 and ((1 << (_la - 76)) & 72057615512764417) != 0) + or ((((_la - 145)) & ~0x3F) == 0 and ((1 << (_la - 145)) & 36283883716609) != 0) + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -6960,11 +15657,10 @@ def interval(self): self.exitRule() return localctx - class KeywordContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -7505,25 +16201,26 @@ def WITH(self): def getRuleIndex(self): return HogQLParser.RULE_keyword - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitKeyword" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitKeyword"): return visitor.visitKeyword(self) else: return visitor.visitChildren(self) - - - def keyword(self): localctx = HogQLParser.KeywordContext(self, self._ctx, self.state) self.enterRule(localctx, 108, self.RULE_keyword) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 904 _la = self._input.LA(1) - if not(((((_la - 2)) & ~0x3f) == 0 and ((1 << (_la - 2)) & -34368126977) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -1288627627820033) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 8034421735228932089) != 0)): + if not ( + ((((_la - 2)) & ~0x3F) == 0 and ((1 << (_la - 2)) & -34368126977) != 0) + or ((((_la - 66)) & ~0x3F) == 0 and ((1 << (_la - 66)) & -1288627627820033) != 0) + or ((((_la - 130)) & ~0x3F) == 0 and ((1 << (_la - 130)) & 8034421735228932089) != 0) + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -7536,11 +16233,10 @@ def keyword(self): self.exitRule() return localctx - class KeywordForAliasContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -7559,25 +16255,22 @@ def KEY(self): def getRuleIndex(self): return HogQLParser.RULE_keywordForAlias - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitKeywordForAlias" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitKeywordForAlias"): return visitor.visitKeywordForAlias(self) else: return visitor.visitChildren(self) - - - def keywordForAlias(self): localctx = HogQLParser.KeywordForAliasContext(self, self._ctx, self.state) self.enterRule(localctx, 110, self.RULE_keywordForAlias) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 906 _la = self._input.LA(1) - if not(((((_la - 36)) & ~0x3f) == 0 and ((1 << (_la - 36)) & 36030996109328385) != 0)): + if not (((((_la - 36)) & ~0x3F) == 0 and ((1 << (_la - 36)) & 36030996109328385) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -7590,11 +16283,10 @@ def keywordForAlias(self): self.exitRule() return localctx - class AliasContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -7602,21 +16294,17 @@ def IDENTIFIER(self): return self.getToken(HogQLParser.IDENTIFIER, 0) def keywordForAlias(self): - return self.getTypedRuleContext(HogQLParser.KeywordForAliasContext,0) - + return self.getTypedRuleContext(HogQLParser.KeywordForAliasContext, 0) def getRuleIndex(self): return HogQLParser.RULE_alias - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlias" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAlias"): return visitor.visitAlias(self) else: return visitor.visitChildren(self) - - - def alias(self): localctx = HogQLParser.AliasContext(self, self._ctx, self.state) @@ -7646,11 +16334,10 @@ def alias(self): self.exitRule() return localctx - class IdentifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -7658,25 +16345,20 @@ def IDENTIFIER(self): return self.getToken(HogQLParser.IDENTIFIER, 0) def interval(self): - return self.getTypedRuleContext(HogQLParser.IntervalContext,0) - + return self.getTypedRuleContext(HogQLParser.IntervalContext, 0) def keyword(self): - return self.getTypedRuleContext(HogQLParser.KeywordContext,0) - + return self.getTypedRuleContext(HogQLParser.KeywordContext, 0) def getRuleIndex(self): return HogQLParser.RULE_identifier - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIdentifier" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitIdentifier"): return visitor.visitIdentifier(self) else: return visitor.visitChildren(self) - - - def identifier(self): localctx = HogQLParser.IdentifierContext(self, self._ctx, self.state) @@ -7695,7 +16377,186 @@ def identifier(self): self.state = 913 self.interval() pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 109, 111, 112, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 191, 192]: + elif token in [ + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 77, + 78, + 79, + 80, + 81, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 109, + 111, + 112, + 114, + 115, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 186, + 187, + 188, + 189, + 191, + 192, + ]: self.enterOuterAlt(localctx, 3) self.state = 914 self.keyword() @@ -7711,11 +16572,10 @@ def identifier(self): self.exitRule() return localctx - class EnumValueContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): super().__init__(parent, invokingState) self.parser = parser @@ -7726,21 +16586,17 @@ def EQ_SINGLE(self): return self.getToken(HogQLParser.EQ_SINGLE, 0) def numberLiteral(self): - return self.getTypedRuleContext(HogQLParser.NumberLiteralContext,0) - + return self.getTypedRuleContext(HogQLParser.NumberLiteralContext, 0) def getRuleIndex(self): return HogQLParser.RULE_enumValue - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumValue" ): + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEnumValue"): return visitor.visitEnumValue(self) else: return visitor.visitChildren(self) - - - def enumValue(self): localctx = HogQLParser.EnumValueContext(self, self._ctx, self.state) @@ -7761,9 +16617,7 @@ def enumValue(self): self.exitRule() return localctx - - - def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): + def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int): if self._predicates == None: self._predicates = dict() self._predicates[18] = self.joinExpr_sempred @@ -7775,73 +16629,53 @@ def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): else: return pred(localctx, predIndex) - def joinExpr_sempred(self, localctx:JoinExprContext, predIndex:int): - if predIndex == 0: - return self.precpred(self._ctx, 3) - - - if predIndex == 1: - return self.precpred(self._ctx, 4) - - - def columnExpr_sempred(self, localctx:ColumnExprContext, predIndex:int): - if predIndex == 2: - return self.precpred(self._ctx, 17) - - - if predIndex == 3: - return self.precpred(self._ctx, 16) - - - if predIndex == 4: - return self.precpred(self._ctx, 15) - + def joinExpr_sempred(self, localctx: JoinExprContext, predIndex: int): + if predIndex == 0: + return self.precpred(self._ctx, 3) - if predIndex == 5: - return self.precpred(self._ctx, 13) - + if predIndex == 1: + return self.precpred(self._ctx, 4) - if predIndex == 6: - return self.precpred(self._ctx, 11) - + def columnExpr_sempred(self, localctx: ColumnExprContext, predIndex: int): + if predIndex == 2: + return self.precpred(self._ctx, 17) - if predIndex == 7: - return self.precpred(self._ctx, 10) - + if predIndex == 3: + return self.precpred(self._ctx, 16) - if predIndex == 8: - return self.precpred(self._ctx, 9) - + if predIndex == 4: + return self.precpred(self._ctx, 15) - if predIndex == 9: - return self.precpred(self._ctx, 8) - + if predIndex == 5: + return self.precpred(self._ctx, 13) - if predIndex == 10: - return self.precpred(self._ctx, 21) - + if predIndex == 6: + return self.precpred(self._ctx, 11) - if predIndex == 11: - return self.precpred(self._ctx, 20) - + if predIndex == 7: + return self.precpred(self._ctx, 10) - if predIndex == 12: - return self.precpred(self._ctx, 19) - + if predIndex == 8: + return self.precpred(self._ctx, 9) - if predIndex == 13: - return self.precpred(self._ctx, 14) - + if predIndex == 9: + return self.precpred(self._ctx, 8) - if predIndex == 14: - return self.precpred(self._ctx, 7) - + if predIndex == 10: + return self.precpred(self._ctx, 21) - def tableExpr_sempred(self, localctx:TableExprContext, predIndex:int): - if predIndex == 15: - return self.precpred(self._ctx, 2) - + if predIndex == 11: + return self.precpred(self._ctx, 20) + if predIndex == 12: + return self.precpred(self._ctx, 19) + if predIndex == 13: + return self.precpred(self._ctx, 14) + if predIndex == 14: + return self.precpred(self._ctx, 7) + def tableExpr_sempred(self, localctx: TableExprContext, predIndex: int): + if predIndex == 15: + return self.precpred(self._ctx, 2) diff --git a/posthog/hogql/grammar/HogQLParserVisitor.py b/posthog/hogql/grammar/HogQLParserVisitor.py index 61c17aecae477..4884ee340fe43 100644 --- a/posthog/hogql/grammar/HogQLParserVisitor.py +++ b/posthog/hogql/grammar/HogQLParserVisitor.py @@ -1,5 +1,6 @@ # Generated from HogQLParser.g4 by ANTLR 4.13.1 from antlr4 import * + if "." in __name__: from .HogQLParser import HogQLParser else: @@ -7,537 +8,432 @@ # This class defines a complete generic visitor for a parse tree produced by HogQLParser. + class HogQLParserVisitor(ParseTreeVisitor): # Visit a parse tree produced by HogQLParser#select. - def visitSelect(self, ctx:HogQLParser.SelectContext): + def visitSelect(self, ctx: HogQLParser.SelectContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#selectUnionStmt. - def visitSelectUnionStmt(self, ctx:HogQLParser.SelectUnionStmtContext): + def visitSelectUnionStmt(self, ctx: HogQLParser.SelectUnionStmtContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#selectStmtWithParens. - def visitSelectStmtWithParens(self, ctx:HogQLParser.SelectStmtWithParensContext): + def visitSelectStmtWithParens(self, ctx: HogQLParser.SelectStmtWithParensContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#selectStmt. - def visitSelectStmt(self, ctx:HogQLParser.SelectStmtContext): + def visitSelectStmt(self, ctx: HogQLParser.SelectStmtContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#withClause. - def visitWithClause(self, ctx:HogQLParser.WithClauseContext): + def visitWithClause(self, ctx: HogQLParser.WithClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#topClause. - def visitTopClause(self, ctx:HogQLParser.TopClauseContext): + def visitTopClause(self, ctx: HogQLParser.TopClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#fromClause. - def visitFromClause(self, ctx:HogQLParser.FromClauseContext): + def visitFromClause(self, ctx: HogQLParser.FromClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#arrayJoinClause. - def visitArrayJoinClause(self, ctx:HogQLParser.ArrayJoinClauseContext): + def visitArrayJoinClause(self, ctx: HogQLParser.ArrayJoinClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#windowClause. - def visitWindowClause(self, ctx:HogQLParser.WindowClauseContext): + def visitWindowClause(self, ctx: HogQLParser.WindowClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#prewhereClause. - def visitPrewhereClause(self, ctx:HogQLParser.PrewhereClauseContext): + def visitPrewhereClause(self, ctx: HogQLParser.PrewhereClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#whereClause. - def visitWhereClause(self, ctx:HogQLParser.WhereClauseContext): + def visitWhereClause(self, ctx: HogQLParser.WhereClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#groupByClause. - def visitGroupByClause(self, ctx:HogQLParser.GroupByClauseContext): + def visitGroupByClause(self, ctx: HogQLParser.GroupByClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#havingClause. - def visitHavingClause(self, ctx:HogQLParser.HavingClauseContext): + def visitHavingClause(self, ctx: HogQLParser.HavingClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#orderByClause. - def visitOrderByClause(self, ctx:HogQLParser.OrderByClauseContext): + def visitOrderByClause(self, ctx: HogQLParser.OrderByClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#projectionOrderByClause. - def visitProjectionOrderByClause(self, ctx:HogQLParser.ProjectionOrderByClauseContext): + def visitProjectionOrderByClause(self, ctx: HogQLParser.ProjectionOrderByClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#limitAndOffsetClause. - def visitLimitAndOffsetClause(self, ctx:HogQLParser.LimitAndOffsetClauseContext): + def visitLimitAndOffsetClause(self, ctx: HogQLParser.LimitAndOffsetClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#offsetOnlyClause. - def visitOffsetOnlyClause(self, ctx:HogQLParser.OffsetOnlyClauseContext): + def visitOffsetOnlyClause(self, ctx: HogQLParser.OffsetOnlyClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#settingsClause. - def visitSettingsClause(self, ctx:HogQLParser.SettingsClauseContext): + def visitSettingsClause(self, ctx: HogQLParser.SettingsClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#JoinExprOp. - def visitJoinExprOp(self, ctx:HogQLParser.JoinExprOpContext): + def visitJoinExprOp(self, ctx: HogQLParser.JoinExprOpContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#JoinExprTable. - def visitJoinExprTable(self, ctx:HogQLParser.JoinExprTableContext): + def visitJoinExprTable(self, ctx: HogQLParser.JoinExprTableContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#JoinExprParens. - def visitJoinExprParens(self, ctx:HogQLParser.JoinExprParensContext): + def visitJoinExprParens(self, ctx: HogQLParser.JoinExprParensContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#JoinExprCrossOp. - def visitJoinExprCrossOp(self, ctx:HogQLParser.JoinExprCrossOpContext): + def visitJoinExprCrossOp(self, ctx: HogQLParser.JoinExprCrossOpContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#JoinOpInner. - def visitJoinOpInner(self, ctx:HogQLParser.JoinOpInnerContext): + def visitJoinOpInner(self, ctx: HogQLParser.JoinOpInnerContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#JoinOpLeftRight. - def visitJoinOpLeftRight(self, ctx:HogQLParser.JoinOpLeftRightContext): + def visitJoinOpLeftRight(self, ctx: HogQLParser.JoinOpLeftRightContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#JoinOpFull. - def visitJoinOpFull(self, ctx:HogQLParser.JoinOpFullContext): + def visitJoinOpFull(self, ctx: HogQLParser.JoinOpFullContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#joinOpCross. - def visitJoinOpCross(self, ctx:HogQLParser.JoinOpCrossContext): + def visitJoinOpCross(self, ctx: HogQLParser.JoinOpCrossContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#joinConstraintClause. - def visitJoinConstraintClause(self, ctx:HogQLParser.JoinConstraintClauseContext): + def visitJoinConstraintClause(self, ctx: HogQLParser.JoinConstraintClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#sampleClause. - def visitSampleClause(self, ctx:HogQLParser.SampleClauseContext): + def visitSampleClause(self, ctx: HogQLParser.SampleClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#orderExprList. - def visitOrderExprList(self, ctx:HogQLParser.OrderExprListContext): + def visitOrderExprList(self, ctx: HogQLParser.OrderExprListContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#orderExpr. - def visitOrderExpr(self, ctx:HogQLParser.OrderExprContext): + def visitOrderExpr(self, ctx: HogQLParser.OrderExprContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ratioExpr. - def visitRatioExpr(self, ctx:HogQLParser.RatioExprContext): + def visitRatioExpr(self, ctx: HogQLParser.RatioExprContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#settingExprList. - def visitSettingExprList(self, ctx:HogQLParser.SettingExprListContext): + def visitSettingExprList(self, ctx: HogQLParser.SettingExprListContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#settingExpr. - def visitSettingExpr(self, ctx:HogQLParser.SettingExprContext): + def visitSettingExpr(self, ctx: HogQLParser.SettingExprContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#windowExpr. - def visitWindowExpr(self, ctx:HogQLParser.WindowExprContext): + def visitWindowExpr(self, ctx: HogQLParser.WindowExprContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#winPartitionByClause. - def visitWinPartitionByClause(self, ctx:HogQLParser.WinPartitionByClauseContext): + def visitWinPartitionByClause(self, ctx: HogQLParser.WinPartitionByClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#winOrderByClause. - def visitWinOrderByClause(self, ctx:HogQLParser.WinOrderByClauseContext): + def visitWinOrderByClause(self, ctx: HogQLParser.WinOrderByClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#winFrameClause. - def visitWinFrameClause(self, ctx:HogQLParser.WinFrameClauseContext): + def visitWinFrameClause(self, ctx: HogQLParser.WinFrameClauseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#frameStart. - def visitFrameStart(self, ctx:HogQLParser.FrameStartContext): + def visitFrameStart(self, ctx: HogQLParser.FrameStartContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#frameBetween. - def visitFrameBetween(self, ctx:HogQLParser.FrameBetweenContext): + def visitFrameBetween(self, ctx: HogQLParser.FrameBetweenContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#winFrameBound. - def visitWinFrameBound(self, ctx:HogQLParser.WinFrameBoundContext): + def visitWinFrameBound(self, ctx: HogQLParser.WinFrameBoundContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#expr. - def visitExpr(self, ctx:HogQLParser.ExprContext): + def visitExpr(self, ctx: HogQLParser.ExprContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnTypeExprSimple. - def visitColumnTypeExprSimple(self, ctx:HogQLParser.ColumnTypeExprSimpleContext): + def visitColumnTypeExprSimple(self, ctx: HogQLParser.ColumnTypeExprSimpleContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnTypeExprNested. - def visitColumnTypeExprNested(self, ctx:HogQLParser.ColumnTypeExprNestedContext): + def visitColumnTypeExprNested(self, ctx: HogQLParser.ColumnTypeExprNestedContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnTypeExprEnum. - def visitColumnTypeExprEnum(self, ctx:HogQLParser.ColumnTypeExprEnumContext): + def visitColumnTypeExprEnum(self, ctx: HogQLParser.ColumnTypeExprEnumContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnTypeExprComplex. - def visitColumnTypeExprComplex(self, ctx:HogQLParser.ColumnTypeExprComplexContext): + def visitColumnTypeExprComplex(self, ctx: HogQLParser.ColumnTypeExprComplexContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnTypeExprParam. - def visitColumnTypeExprParam(self, ctx:HogQLParser.ColumnTypeExprParamContext): + def visitColumnTypeExprParam(self, ctx: HogQLParser.ColumnTypeExprParamContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#columnExprList. - def visitColumnExprList(self, ctx:HogQLParser.ColumnExprListContext): + def visitColumnExprList(self, ctx: HogQLParser.ColumnExprListContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprTernaryOp. - def visitColumnExprTernaryOp(self, ctx:HogQLParser.ColumnExprTernaryOpContext): + def visitColumnExprTernaryOp(self, ctx: HogQLParser.ColumnExprTernaryOpContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprAlias. - def visitColumnExprAlias(self, ctx:HogQLParser.ColumnExprAliasContext): + def visitColumnExprAlias(self, ctx: HogQLParser.ColumnExprAliasContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprExtract. - def visitColumnExprExtract(self, ctx:HogQLParser.ColumnExprExtractContext): + def visitColumnExprExtract(self, ctx: HogQLParser.ColumnExprExtractContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprNegate. - def visitColumnExprNegate(self, ctx:HogQLParser.ColumnExprNegateContext): + def visitColumnExprNegate(self, ctx: HogQLParser.ColumnExprNegateContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprSubquery. - def visitColumnExprSubquery(self, ctx:HogQLParser.ColumnExprSubqueryContext): + def visitColumnExprSubquery(self, ctx: HogQLParser.ColumnExprSubqueryContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprLiteral. - def visitColumnExprLiteral(self, ctx:HogQLParser.ColumnExprLiteralContext): + def visitColumnExprLiteral(self, ctx: HogQLParser.ColumnExprLiteralContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprArray. - def visitColumnExprArray(self, ctx:HogQLParser.ColumnExprArrayContext): + def visitColumnExprArray(self, ctx: HogQLParser.ColumnExprArrayContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprSubstring. - def visitColumnExprSubstring(self, ctx:HogQLParser.ColumnExprSubstringContext): + def visitColumnExprSubstring(self, ctx: HogQLParser.ColumnExprSubstringContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprCast. - def visitColumnExprCast(self, ctx:HogQLParser.ColumnExprCastContext): + def visitColumnExprCast(self, ctx: HogQLParser.ColumnExprCastContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprOr. - def visitColumnExprOr(self, ctx:HogQLParser.ColumnExprOrContext): + def visitColumnExprOr(self, ctx: HogQLParser.ColumnExprOrContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprPrecedence1. - def visitColumnExprPrecedence1(self, ctx:HogQLParser.ColumnExprPrecedence1Context): + def visitColumnExprPrecedence1(self, ctx: HogQLParser.ColumnExprPrecedence1Context): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprPrecedence2. - def visitColumnExprPrecedence2(self, ctx:HogQLParser.ColumnExprPrecedence2Context): + def visitColumnExprPrecedence2(self, ctx: HogQLParser.ColumnExprPrecedence2Context): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprPrecedence3. - def visitColumnExprPrecedence3(self, ctx:HogQLParser.ColumnExprPrecedence3Context): + def visitColumnExprPrecedence3(self, ctx: HogQLParser.ColumnExprPrecedence3Context): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprInterval. - def visitColumnExprInterval(self, ctx:HogQLParser.ColumnExprIntervalContext): + def visitColumnExprInterval(self, ctx: HogQLParser.ColumnExprIntervalContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprIsNull. - def visitColumnExprIsNull(self, ctx:HogQLParser.ColumnExprIsNullContext): + def visitColumnExprIsNull(self, ctx: HogQLParser.ColumnExprIsNullContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprWinFunctionTarget. - def visitColumnExprWinFunctionTarget(self, ctx:HogQLParser.ColumnExprWinFunctionTargetContext): + def visitColumnExprWinFunctionTarget(self, ctx: HogQLParser.ColumnExprWinFunctionTargetContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprTrim. - def visitColumnExprTrim(self, ctx:HogQLParser.ColumnExprTrimContext): + def visitColumnExprTrim(self, ctx: HogQLParser.ColumnExprTrimContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprTuple. - def visitColumnExprTuple(self, ctx:HogQLParser.ColumnExprTupleContext): + def visitColumnExprTuple(self, ctx: HogQLParser.ColumnExprTupleContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprArrayAccess. - def visitColumnExprArrayAccess(self, ctx:HogQLParser.ColumnExprArrayAccessContext): + def visitColumnExprArrayAccess(self, ctx: HogQLParser.ColumnExprArrayAccessContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprBetween. - def visitColumnExprBetween(self, ctx:HogQLParser.ColumnExprBetweenContext): + def visitColumnExprBetween(self, ctx: HogQLParser.ColumnExprBetweenContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprPropertyAccess. - def visitColumnExprPropertyAccess(self, ctx:HogQLParser.ColumnExprPropertyAccessContext): + def visitColumnExprPropertyAccess(self, ctx: HogQLParser.ColumnExprPropertyAccessContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprParens. - def visitColumnExprParens(self, ctx:HogQLParser.ColumnExprParensContext): + def visitColumnExprParens(self, ctx: HogQLParser.ColumnExprParensContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprTimestamp. - def visitColumnExprTimestamp(self, ctx:HogQLParser.ColumnExprTimestampContext): + def visitColumnExprTimestamp(self, ctx: HogQLParser.ColumnExprTimestampContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprNullish. - def visitColumnExprNullish(self, ctx:HogQLParser.ColumnExprNullishContext): + def visitColumnExprNullish(self, ctx: HogQLParser.ColumnExprNullishContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprAnd. - def visitColumnExprAnd(self, ctx:HogQLParser.ColumnExprAndContext): + def visitColumnExprAnd(self, ctx: HogQLParser.ColumnExprAndContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprTupleAccess. - def visitColumnExprTupleAccess(self, ctx:HogQLParser.ColumnExprTupleAccessContext): + def visitColumnExprTupleAccess(self, ctx: HogQLParser.ColumnExprTupleAccessContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprCase. - def visitColumnExprCase(self, ctx:HogQLParser.ColumnExprCaseContext): + def visitColumnExprCase(self, ctx: HogQLParser.ColumnExprCaseContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprDate. - def visitColumnExprDate(self, ctx:HogQLParser.ColumnExprDateContext): + def visitColumnExprDate(self, ctx: HogQLParser.ColumnExprDateContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprNot. - def visitColumnExprNot(self, ctx:HogQLParser.ColumnExprNotContext): + def visitColumnExprNot(self, ctx: HogQLParser.ColumnExprNotContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprWinFunction. - def visitColumnExprWinFunction(self, ctx:HogQLParser.ColumnExprWinFunctionContext): + def visitColumnExprWinFunction(self, ctx: HogQLParser.ColumnExprWinFunctionContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprIdentifier. - def visitColumnExprIdentifier(self, ctx:HogQLParser.ColumnExprIdentifierContext): + def visitColumnExprIdentifier(self, ctx: HogQLParser.ColumnExprIdentifierContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprFunction. - def visitColumnExprFunction(self, ctx:HogQLParser.ColumnExprFunctionContext): + def visitColumnExprFunction(self, ctx: HogQLParser.ColumnExprFunctionContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#ColumnExprAsterisk. - def visitColumnExprAsterisk(self, ctx:HogQLParser.ColumnExprAsteriskContext): + def visitColumnExprAsterisk(self, ctx: HogQLParser.ColumnExprAsteriskContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#columnArgList. - def visitColumnArgList(self, ctx:HogQLParser.ColumnArgListContext): + def visitColumnArgList(self, ctx: HogQLParser.ColumnArgListContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#columnArgExpr. - def visitColumnArgExpr(self, ctx:HogQLParser.ColumnArgExprContext): + def visitColumnArgExpr(self, ctx: HogQLParser.ColumnArgExprContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#columnLambdaExpr. - def visitColumnLambdaExpr(self, ctx:HogQLParser.ColumnLambdaExprContext): + def visitColumnLambdaExpr(self, ctx: HogQLParser.ColumnLambdaExprContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#withExprList. - def visitWithExprList(self, ctx:HogQLParser.WithExprListContext): + def visitWithExprList(self, ctx: HogQLParser.WithExprListContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#WithExprSubquery. - def visitWithExprSubquery(self, ctx:HogQLParser.WithExprSubqueryContext): + def visitWithExprSubquery(self, ctx: HogQLParser.WithExprSubqueryContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#WithExprColumn. - def visitWithExprColumn(self, ctx:HogQLParser.WithExprColumnContext): + def visitWithExprColumn(self, ctx: HogQLParser.WithExprColumnContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#columnIdentifier. - def visitColumnIdentifier(self, ctx:HogQLParser.ColumnIdentifierContext): + def visitColumnIdentifier(self, ctx: HogQLParser.ColumnIdentifierContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#nestedIdentifier. - def visitNestedIdentifier(self, ctx:HogQLParser.NestedIdentifierContext): + def visitNestedIdentifier(self, ctx: HogQLParser.NestedIdentifierContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#TableExprIdentifier. - def visitTableExprIdentifier(self, ctx:HogQLParser.TableExprIdentifierContext): + def visitTableExprIdentifier(self, ctx: HogQLParser.TableExprIdentifierContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#TableExprPlaceholder. - def visitTableExprPlaceholder(self, ctx:HogQLParser.TableExprPlaceholderContext): + def visitTableExprPlaceholder(self, ctx: HogQLParser.TableExprPlaceholderContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#TableExprSubquery. - def visitTableExprSubquery(self, ctx:HogQLParser.TableExprSubqueryContext): + def visitTableExprSubquery(self, ctx: HogQLParser.TableExprSubqueryContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#TableExprAlias. - def visitTableExprAlias(self, ctx:HogQLParser.TableExprAliasContext): + def visitTableExprAlias(self, ctx: HogQLParser.TableExprAliasContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#TableExprFunction. - def visitTableExprFunction(self, ctx:HogQLParser.TableExprFunctionContext): + def visitTableExprFunction(self, ctx: HogQLParser.TableExprFunctionContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#tableFunctionExpr. - def visitTableFunctionExpr(self, ctx:HogQLParser.TableFunctionExprContext): + def visitTableFunctionExpr(self, ctx: HogQLParser.TableFunctionExprContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#tableIdentifier. - def visitTableIdentifier(self, ctx:HogQLParser.TableIdentifierContext): + def visitTableIdentifier(self, ctx: HogQLParser.TableIdentifierContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#tableArgList. - def visitTableArgList(self, ctx:HogQLParser.TableArgListContext): + def visitTableArgList(self, ctx: HogQLParser.TableArgListContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#databaseIdentifier. - def visitDatabaseIdentifier(self, ctx:HogQLParser.DatabaseIdentifierContext): + def visitDatabaseIdentifier(self, ctx: HogQLParser.DatabaseIdentifierContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#floatingLiteral. - def visitFloatingLiteral(self, ctx:HogQLParser.FloatingLiteralContext): + def visitFloatingLiteral(self, ctx: HogQLParser.FloatingLiteralContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#numberLiteral. - def visitNumberLiteral(self, ctx:HogQLParser.NumberLiteralContext): + def visitNumberLiteral(self, ctx: HogQLParser.NumberLiteralContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#literal. - def visitLiteral(self, ctx:HogQLParser.LiteralContext): + def visitLiteral(self, ctx: HogQLParser.LiteralContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#interval. - def visitInterval(self, ctx:HogQLParser.IntervalContext): + def visitInterval(self, ctx: HogQLParser.IntervalContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#keyword. - def visitKeyword(self, ctx:HogQLParser.KeywordContext): + def visitKeyword(self, ctx: HogQLParser.KeywordContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#keywordForAlias. - def visitKeywordForAlias(self, ctx:HogQLParser.KeywordForAliasContext): + def visitKeywordForAlias(self, ctx: HogQLParser.KeywordForAliasContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#alias. - def visitAlias(self, ctx:HogQLParser.AliasContext): + def visitAlias(self, ctx: HogQLParser.AliasContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#identifier. - def visitIdentifier(self, ctx:HogQLParser.IdentifierContext): + def visitIdentifier(self, ctx: HogQLParser.IdentifierContext): return self.visitChildren(ctx) - # Visit a parse tree produced by HogQLParser#enumValue. - def visitEnumValue(self, ctx:HogQLParser.EnumValueContext): + def visitEnumValue(self, ctx: HogQLParser.EnumValueContext): return self.visitChildren(ctx) - -del HogQLParser \ No newline at end of file +del HogQLParser From 482ab04a83f5c64878a1aa75fa294c514935303b Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Oct 2023 11:35:15 +0000 Subject: [PATCH 07/10] Update query snapshots --- .../__snapshots__/test_dashboard.ambr | 212 +++++++++--------- 1 file changed, 106 insertions(+), 106 deletions(-) diff --git a/posthog/api/test/dashboards/__snapshots__/test_dashboard.ambr b/posthog/api/test/dashboards/__snapshots__/test_dashboard.ambr index dd135d1aafb4d..b6b14a9dfbd34 100644 --- a/posthog/api/test/dashboards/__snapshots__/test_dashboard.ambr +++ b/posthog/api/test/dashboards/__snapshots__/test_dashboard.ambr @@ -6439,17 +6439,6 @@ ' --- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.251 - ' - SELECT "posthog_instancesetting"."id", - "posthog_instancesetting"."key", - "posthog_instancesetting"."raw_value" - FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:RATE_LIMIT_ENABLED' - ORDER BY "posthog_instancesetting"."id" ASC - LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ - ' ---- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.252 ' SELECT "posthog_organization"."id", "posthog_organization"."name", @@ -6473,7 +6462,7 @@ LIMIT 21 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.253 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.252 ' SELECT "posthog_dashboard"."id", "posthog_dashboard"."name", @@ -6589,7 +6578,7 @@ LIMIT 21 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.254 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.253 ' SELECT "posthog_taggeditem"."id", "posthog_taggeditem"."tag_id", @@ -6611,7 +6600,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.255 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.254 ' SELECT "posthog_sharingconfiguration"."id", "posthog_sharingconfiguration"."team_id", @@ -6629,7 +6618,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.256 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.255 ' SELECT "posthog_dashboardtile"."id", "posthog_dashboardtile"."dashboard_id", @@ -6794,7 +6783,7 @@ ORDER BY "posthog_dashboarditem"."order" ASC /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.257 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.256 ' SELECT "posthog_insightcachingstate"."id", "posthog_insightcachingstate"."team_id", @@ -6815,7 +6804,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.258 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.257 ' SELECT ("posthog_dashboardtile"."insight_id") AS "_prefetch_related_val_insight_id", "posthog_dashboard"."id", @@ -6918,7 +6907,7 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.259 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.258 ' SELECT "posthog_dashboardtile"."id", "posthog_dashboardtile"."dashboard_id", @@ -6943,6 +6932,32 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.259 + ' + SELECT "posthog_dashboard"."id", + "posthog_dashboard"."name", + "posthog_dashboard"."description", + "posthog_dashboard"."team_id", + "posthog_dashboard"."pinned", + "posthog_dashboard"."created_at", + "posthog_dashboard"."created_by_id", + "posthog_dashboard"."deleted", + "posthog_dashboard"."last_accessed_at", + "posthog_dashboard"."filters", + "posthog_dashboard"."creation_mode", + "posthog_dashboard"."restriction_level", + "posthog_dashboard"."deprecated_tags", + "posthog_dashboard"."tags", + "posthog_dashboard"."share_token", + "posthog_dashboard"."is_shared" + FROM "posthog_dashboard" + WHERE "posthog_dashboard"."id" IN (1, + 2, + 3, + 4, + 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ + ' +--- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.26 ' SELECT "posthog_team"."id", @@ -6992,32 +7007,6 @@ ' --- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.260 - ' - SELECT "posthog_dashboard"."id", - "posthog_dashboard"."name", - "posthog_dashboard"."description", - "posthog_dashboard"."team_id", - "posthog_dashboard"."pinned", - "posthog_dashboard"."created_at", - "posthog_dashboard"."created_by_id", - "posthog_dashboard"."deleted", - "posthog_dashboard"."last_accessed_at", - "posthog_dashboard"."filters", - "posthog_dashboard"."creation_mode", - "posthog_dashboard"."restriction_level", - "posthog_dashboard"."deprecated_tags", - "posthog_dashboard"."tags", - "posthog_dashboard"."share_token", - "posthog_dashboard"."is_shared" - FROM "posthog_dashboard" - WHERE "posthog_dashboard"."id" IN (1, - 2, - 3, - 4, - 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ - ' ---- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.261 ' SELECT "posthog_dashboardtile"."id", "posthog_dashboardtile"."dashboard_id", @@ -7180,7 +7169,7 @@ ORDER BY "posthog_dashboarditem"."order" ASC /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.262 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.261 ' SELECT "posthog_insightcachingstate"."id", "posthog_insightcachingstate"."team_id", @@ -7201,7 +7190,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.263 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.262 ' SELECT ("posthog_dashboardtile"."insight_id") AS "_prefetch_related_val_insight_id", "posthog_dashboard"."id", @@ -7304,7 +7293,7 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.264 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.263 ' SELECT "posthog_dashboardtile"."id", "posthog_dashboardtile"."dashboard_id", @@ -7329,7 +7318,7 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.265 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.264 ' SELECT "posthog_dashboard"."id", "posthog_dashboard"."name", @@ -7355,7 +7344,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.266 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.265 ' SELECT "posthog_taggeditem"."id", "posthog_taggeditem"."tag_id", @@ -7377,7 +7366,7 @@ 5 /* ... */) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.267 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.266 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7388,7 +7377,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.268 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.267 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7399,7 +7388,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.269 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.268 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7410,6 +7399,17 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.269 + ' + SELECT "posthog_instancesetting"."id", + "posthog_instancesetting"."key", + "posthog_instancesetting"."raw_value" + FROM "posthog_instancesetting" + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + ORDER BY "posthog_instancesetting"."id" ASC + LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ + ' +--- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.27 ' SELECT "posthog_organizationmembership"."id", @@ -7441,17 +7441,6 @@ ' --- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.270 - ' - SELECT "posthog_instancesetting"."id", - "posthog_instancesetting"."key", - "posthog_instancesetting"."raw_value" - FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' - ORDER BY "posthog_instancesetting"."id" ASC - LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ - ' ---- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.271 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7462,7 +7451,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.272 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.271 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7473,7 +7462,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.273 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.272 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7484,7 +7473,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.274 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.273 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7495,7 +7484,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.275 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.274 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7506,7 +7495,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.276 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.275 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7517,7 +7506,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.277 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.276 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7528,7 +7517,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.278 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.277 ' SELECT "posthog_instancesetting"."id", "posthog_instancesetting"."key", @@ -7539,7 +7528,7 @@ LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- -# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.279 +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.278 ' SELECT "posthog_dashboard"."id", "posthog_dashboard"."name", @@ -7566,6 +7555,17 @@ 5 /* ... */)) /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' --- +# name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.279 + ' + SELECT "posthog_instancesetting"."id", + "posthog_instancesetting"."key", + "posthog_instancesetting"."raw_value" + FROM "posthog_instancesetting" + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + ORDER BY "posthog_instancesetting"."id" ASC + LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ + ' +--- # name: TestDashboard.test_loading_individual_dashboard_does_not_prefetch_all_possible_tiles.28 ' SELECT "posthog_dashboard"."id", @@ -7596,7 +7596,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7607,7 +7607,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7618,7 +7618,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7629,7 +7629,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7640,7 +7640,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7651,7 +7651,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7662,7 +7662,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7673,7 +7673,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7684,7 +7684,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7695,7 +7695,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7730,7 +7730,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7741,7 +7741,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7752,7 +7752,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7763,7 +7763,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7774,7 +7774,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7785,7 +7785,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7796,7 +7796,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7807,7 +7807,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7818,7 +7818,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7829,7 +7829,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7899,7 +7899,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7910,7 +7910,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7921,7 +7921,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7932,7 +7932,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7943,7 +7943,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7954,7 +7954,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7965,7 +7965,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7976,7 +7976,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7987,7 +7987,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -7998,7 +7998,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8044,7 +8044,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8055,7 +8055,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8066,7 +8066,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8077,7 +8077,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' @@ -8088,7 +8088,7 @@ "posthog_instancesetting"."key", "posthog_instancesetting"."raw_value" FROM "posthog_instancesetting" - WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_V2_ENABLED' + WHERE "posthog_instancesetting"."key" = 'constance:posthog:PERSON_ON_EVENTS_ENABLED' ORDER BY "posthog_instancesetting"."id" ASC LIMIT 1 /*controller='project_dashboards-detail',route='api/projects/%28%3FP%3Cparent_lookup_team_id%3E%5B%5E/.%5D%2B%29/dashboards/%28%3FP%3Cpk%3E%5B%5E/.%5D%2B%29/%3F%24'*/ ' From fa9d0d4db52abde540178e5db7fc22a2c2b40945 Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Thu, 26 Oct 2023 12:52:59 +0100 Subject: [PATCH 08/10] Fix type error - ignore comment moved --- posthog/models/filters/mixins/simplify.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/posthog/models/filters/mixins/simplify.py b/posthog/models/filters/mixins/simplify.py index d63cf6782ebc3..3b1e0eb426ba1 100644 --- a/posthog/models/filters/mixins/simplify.py +++ b/posthog/models/filters/mixins/simplify.py @@ -39,8 +39,8 @@ def simplify(self: T, team: "Team", **kwargs) -> T: if hasattr(result, "entities_to_dict"): for entity_type, entities in result.entities_to_dict().items(): updated_entities[entity_type] = [ - self._simplify_entity(team, entity_type, entity, **kwargs) - for entity in entities # type: ignore + self._simplify_entity(team, entity_type, entity, **kwargs) # type: ignore + for entity in entities ] from posthog.models.property.util import clear_excess_levels From 36df3314d9c71d66ff66f77a654c7e5b1d6d61f2 Mon Sep 17 00:00:00 2001 From: Tom Owers Date: Thu, 26 Oct 2023 13:57:56 +0100 Subject: [PATCH 09/10] Exclude hogql grammar from formatting and reverted grammar --- package.json | 2 +- posthog/hogql/grammar/HogQLLexer.py | 20383 +----------------- posthog/hogql/grammar/HogQLParser.py | 13076 ++--------- posthog/hogql/grammar/HogQLParserVisitor.py | 322 +- 4 files changed, 3321 insertions(+), 30462 deletions(-) diff --git a/package.json b/package.json index 71d7c3e83b535..346b1151bdbff 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "typegen:check": "kea-typegen check", "typegen:watch": "kea-typegen watch --delete --show-ts-errors", "typegen:clean": "find frontend/src -type f -name '*Type.ts' -delete", - "format:python": "ruff .", + "format:python": "ruff --exclude posthog/hogql/grammar .", "format:js": "pnpm prettier && pnpm eslint --fix", "format": "pnpm format:python && pnpm format:js", "storybook": "storybook dev -p 6006", diff --git a/posthog/hogql/grammar/HogQLLexer.py b/posthog/hogql/grammar/HogQLLexer.py index a60b9015e86ad..acbadf74fdc53 100644 --- a/posthog/hogql/grammar/HogQLLexer.py +++ b/posthog/hogql/grammar/HogQLLexer.py @@ -2,7 +2,6 @@ from antlr4 import * from io import StringIO import sys - if sys.version_info[1] > 5: from typing import TextIO else: @@ -11,18843 +10,901 @@ def serializedATN(): return [ - 4, - 0, - 242, - 2222, - 6, - -1, - 2, - 0, - 7, - 0, - 2, - 1, - 7, - 1, - 2, - 2, - 7, - 2, - 2, - 3, - 7, - 3, - 2, - 4, - 7, - 4, - 2, - 5, - 7, - 5, - 2, - 6, - 7, - 6, - 2, - 7, - 7, - 7, - 2, - 8, - 7, - 8, - 2, - 9, - 7, - 9, - 2, - 10, - 7, - 10, - 2, - 11, - 7, - 11, - 2, - 12, - 7, - 12, - 2, - 13, - 7, - 13, - 2, - 14, - 7, - 14, - 2, - 15, - 7, - 15, - 2, - 16, - 7, - 16, - 2, - 17, - 7, - 17, - 2, - 18, - 7, - 18, - 2, - 19, - 7, - 19, - 2, - 20, - 7, - 20, - 2, - 21, - 7, - 21, - 2, - 22, - 7, - 22, - 2, - 23, - 7, - 23, - 2, - 24, - 7, - 24, - 2, - 25, - 7, - 25, - 2, - 26, - 7, - 26, - 2, - 27, - 7, - 27, - 2, - 28, - 7, - 28, - 2, - 29, - 7, - 29, - 2, - 30, - 7, - 30, - 2, - 31, - 7, - 31, - 2, - 32, - 7, - 32, - 2, - 33, - 7, - 33, - 2, - 34, - 7, - 34, - 2, - 35, - 7, - 35, - 2, - 36, - 7, - 36, - 2, - 37, - 7, - 37, - 2, - 38, - 7, - 38, - 2, - 39, - 7, - 39, - 2, - 40, - 7, - 40, - 2, - 41, - 7, - 41, - 2, - 42, - 7, - 42, - 2, - 43, - 7, - 43, - 2, - 44, - 7, - 44, - 2, - 45, - 7, - 45, - 2, - 46, - 7, - 46, - 2, - 47, - 7, - 47, - 2, - 48, - 7, - 48, - 2, - 49, - 7, - 49, - 2, - 50, - 7, - 50, - 2, - 51, - 7, - 51, - 2, - 52, - 7, - 52, - 2, - 53, - 7, - 53, - 2, - 54, - 7, - 54, - 2, - 55, - 7, - 55, - 2, - 56, - 7, - 56, - 2, - 57, - 7, - 57, - 2, - 58, - 7, - 58, - 2, - 59, - 7, - 59, - 2, - 60, - 7, - 60, - 2, - 61, - 7, - 61, - 2, - 62, - 7, - 62, - 2, - 63, - 7, - 63, - 2, - 64, - 7, - 64, - 2, - 65, - 7, - 65, - 2, - 66, - 7, - 66, - 2, - 67, - 7, - 67, - 2, - 68, - 7, - 68, - 2, - 69, - 7, - 69, - 2, - 70, - 7, - 70, - 2, - 71, - 7, - 71, - 2, - 72, - 7, - 72, - 2, - 73, - 7, - 73, - 2, - 74, - 7, - 74, - 2, - 75, - 7, - 75, - 2, - 76, - 7, - 76, - 2, - 77, - 7, - 77, - 2, - 78, - 7, - 78, - 2, - 79, - 7, - 79, - 2, - 80, - 7, - 80, - 2, - 81, - 7, - 81, - 2, - 82, - 7, - 82, - 2, - 83, - 7, - 83, - 2, - 84, - 7, - 84, - 2, - 85, - 7, - 85, - 2, - 86, - 7, - 86, - 2, - 87, - 7, - 87, - 2, - 88, - 7, - 88, - 2, - 89, - 7, - 89, - 2, - 90, - 7, - 90, - 2, - 91, - 7, - 91, - 2, - 92, - 7, - 92, - 2, - 93, - 7, - 93, - 2, - 94, - 7, - 94, - 2, - 95, - 7, - 95, - 2, - 96, - 7, - 96, - 2, - 97, - 7, - 97, - 2, - 98, - 7, - 98, - 2, - 99, - 7, - 99, - 2, - 100, - 7, - 100, - 2, - 101, - 7, - 101, - 2, - 102, - 7, - 102, - 2, - 103, - 7, - 103, - 2, - 104, - 7, - 104, - 2, - 105, - 7, - 105, - 2, - 106, - 7, - 106, - 2, - 107, - 7, - 107, - 2, - 108, - 7, - 108, - 2, - 109, - 7, - 109, - 2, - 110, - 7, - 110, - 2, - 111, - 7, - 111, - 2, - 112, - 7, - 112, - 2, - 113, - 7, - 113, - 2, - 114, - 7, - 114, - 2, - 115, - 7, - 115, - 2, - 116, - 7, - 116, - 2, - 117, - 7, - 117, - 2, - 118, - 7, - 118, - 2, - 119, - 7, - 119, - 2, - 120, - 7, - 120, - 2, - 121, - 7, - 121, - 2, - 122, - 7, - 122, - 2, - 123, - 7, - 123, - 2, - 124, - 7, - 124, - 2, - 125, - 7, - 125, - 2, - 126, - 7, - 126, - 2, - 127, - 7, - 127, - 2, - 128, - 7, - 128, - 2, - 129, - 7, - 129, - 2, - 130, - 7, - 130, - 2, - 131, - 7, - 131, - 2, - 132, - 7, - 132, - 2, - 133, - 7, - 133, - 2, - 134, - 7, - 134, - 2, - 135, - 7, - 135, - 2, - 136, - 7, - 136, - 2, - 137, - 7, - 137, - 2, - 138, - 7, - 138, - 2, - 139, - 7, - 139, - 2, - 140, - 7, - 140, - 2, - 141, - 7, - 141, - 2, - 142, - 7, - 142, - 2, - 143, - 7, - 143, - 2, - 144, - 7, - 144, - 2, - 145, - 7, - 145, - 2, - 146, - 7, - 146, - 2, - 147, - 7, - 147, - 2, - 148, - 7, - 148, - 2, - 149, - 7, - 149, - 2, - 150, - 7, - 150, - 2, - 151, - 7, - 151, - 2, - 152, - 7, - 152, - 2, - 153, - 7, - 153, - 2, - 154, - 7, - 154, - 2, - 155, - 7, - 155, - 2, - 156, - 7, - 156, - 2, - 157, - 7, - 157, - 2, - 158, - 7, - 158, - 2, - 159, - 7, - 159, - 2, - 160, - 7, - 160, - 2, - 161, - 7, - 161, - 2, - 162, - 7, - 162, - 2, - 163, - 7, - 163, - 2, - 164, - 7, - 164, - 2, - 165, - 7, - 165, - 2, - 166, - 7, - 166, - 2, - 167, - 7, - 167, - 2, - 168, - 7, - 168, - 2, - 169, - 7, - 169, - 2, - 170, - 7, - 170, - 2, - 171, - 7, - 171, - 2, - 172, - 7, - 172, - 2, - 173, - 7, - 173, - 2, - 174, - 7, - 174, - 2, - 175, - 7, - 175, - 2, - 176, - 7, - 176, - 2, - 177, - 7, - 177, - 2, - 178, - 7, - 178, - 2, - 179, - 7, - 179, - 2, - 180, - 7, - 180, - 2, - 181, - 7, - 181, - 2, - 182, - 7, - 182, - 2, - 183, - 7, - 183, - 2, - 184, - 7, - 184, - 2, - 185, - 7, - 185, - 2, - 186, - 7, - 186, - 2, - 187, - 7, - 187, - 2, - 188, - 7, - 188, - 2, - 189, - 7, - 189, - 2, - 190, - 7, - 190, - 2, - 191, - 7, - 191, - 2, - 192, - 7, - 192, - 2, - 193, - 7, - 193, - 2, - 194, - 7, - 194, - 2, - 195, - 7, - 195, - 2, - 196, - 7, - 196, - 2, - 197, - 7, - 197, - 2, - 198, - 7, - 198, - 2, - 199, - 7, - 199, - 2, - 200, - 7, - 200, - 2, - 201, - 7, - 201, - 2, - 202, - 7, - 202, - 2, - 203, - 7, - 203, - 2, - 204, - 7, - 204, - 2, - 205, - 7, - 205, - 2, - 206, - 7, - 206, - 2, - 207, - 7, - 207, - 2, - 208, - 7, - 208, - 2, - 209, - 7, - 209, - 2, - 210, - 7, - 210, - 2, - 211, - 7, - 211, - 2, - 212, - 7, - 212, - 2, - 213, - 7, - 213, - 2, - 214, - 7, - 214, - 2, - 215, - 7, - 215, - 2, - 216, - 7, - 216, - 2, - 217, - 7, - 217, - 2, - 218, - 7, - 218, - 2, - 219, - 7, - 219, - 2, - 220, - 7, - 220, - 2, - 221, - 7, - 221, - 2, - 222, - 7, - 222, - 2, - 223, - 7, - 223, - 2, - 224, - 7, - 224, - 2, - 225, - 7, - 225, - 2, - 226, - 7, - 226, - 2, - 227, - 7, - 227, - 2, - 228, - 7, - 228, - 2, - 229, - 7, - 229, - 2, - 230, - 7, - 230, - 2, - 231, - 7, - 231, - 2, - 232, - 7, - 232, - 2, - 233, - 7, - 233, - 2, - 234, - 7, - 234, - 2, - 235, - 7, - 235, - 2, - 236, - 7, - 236, - 2, - 237, - 7, - 237, - 2, - 238, - 7, - 238, - 2, - 239, - 7, - 239, - 2, - 240, - 7, - 240, - 2, - 241, - 7, - 241, - 2, - 242, - 7, - 242, - 2, - 243, - 7, - 243, - 2, - 244, - 7, - 244, - 2, - 245, - 7, - 245, - 2, - 246, - 7, - 246, - 2, - 247, - 7, - 247, - 2, - 248, - 7, - 248, - 2, - 249, - 7, - 249, - 2, - 250, - 7, - 250, - 2, - 251, - 7, - 251, - 2, - 252, - 7, - 252, - 2, - 253, - 7, - 253, - 2, - 254, - 7, - 254, - 2, - 255, - 7, - 255, - 2, - 256, - 7, - 256, - 2, - 257, - 7, - 257, - 2, - 258, - 7, - 258, - 2, - 259, - 7, - 259, - 2, - 260, - 7, - 260, - 2, - 261, - 7, - 261, - 2, - 262, - 7, - 262, - 2, - 263, - 7, - 263, - 2, - 264, - 7, - 264, - 2, - 265, - 7, - 265, - 2, - 266, - 7, - 266, - 2, - 267, - 7, - 267, - 2, - 268, - 7, - 268, - 2, - 269, - 7, - 269, - 2, - 270, - 7, - 270, - 2, - 271, - 7, - 271, - 1, - 0, - 1, - 0, - 1, - 0, - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 2, - 1, - 2, - 1, - 2, - 1, - 2, - 1, - 2, - 1, - 2, - 1, - 3, - 1, - 3, - 1, - 3, - 1, - 3, - 1, - 4, - 1, - 4, - 1, - 4, - 1, - 4, - 1, - 4, - 1, - 4, - 1, - 5, - 1, - 5, - 1, - 5, - 1, - 5, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 9, - 1, - 9, - 1, - 9, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 10, - 3, - 10, - 608, - 8, - 10, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 12, - 1, - 12, - 1, - 12, - 1, - 12, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 17, - 1, - 17, - 1, - 17, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 19, - 1, - 19, - 1, - 19, - 1, - 19, - 1, - 19, - 1, - 20, - 1, - 20, - 1, - 20, - 1, - 20, - 1, - 20, - 1, - 20, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 23, - 1, - 24, - 1, - 24, - 1, - 24, - 1, - 24, - 1, - 24, - 1, - 24, - 1, - 24, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 26, - 1, - 26, - 1, - 26, - 1, - 26, - 1, - 26, - 1, - 26, - 1, - 26, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 28, - 1, - 29, - 1, - 29, - 1, - 29, - 1, - 29, - 1, - 29, - 1, - 29, - 1, - 29, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 34, - 1, - 34, - 1, - 34, - 1, - 34, - 1, - 34, - 1, - 34, - 1, - 34, - 1, - 34, - 1, - 34, - 1, - 34, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 36, - 1, - 36, - 1, - 36, - 1, - 36, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 38, - 1, - 38, - 1, - 38, - 1, - 38, - 1, - 38, - 1, - 38, - 1, - 38, - 1, - 38, - 1, - 39, - 1, - 39, - 1, - 39, - 1, - 39, - 1, - 39, - 1, - 39, - 1, - 40, - 1, - 40, - 1, - 40, - 1, - 40, - 1, - 40, - 1, - 40, - 1, - 40, - 1, - 41, - 1, - 41, - 1, - 41, - 1, - 41, - 1, - 41, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 43, - 1, - 43, - 1, - 43, - 1, - 43, - 1, - 43, - 1, - 43, - 1, - 43, - 1, - 43, - 1, - 43, - 1, - 44, - 1, - 44, - 1, - 44, - 1, - 44, - 1, - 44, - 1, - 44, - 1, - 44, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 46, - 1, - 46, - 1, - 46, - 1, - 46, - 1, - 46, - 1, - 46, - 1, - 46, - 1, - 46, - 1, - 46, - 1, - 46, - 1, - 46, - 1, - 47, - 1, - 47, - 1, - 47, - 1, - 47, - 1, - 47, - 1, - 48, - 1, - 48, - 1, - 48, - 1, - 48, - 1, - 48, - 1, - 48, - 1, - 48, - 1, - 48, - 1, - 48, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 49, - 1, - 50, - 1, - 50, - 1, - 50, - 1, - 50, - 1, - 50, - 1, - 51, - 1, - 51, - 1, - 51, - 1, - 51, - 1, - 51, - 1, - 52, - 1, - 52, - 1, - 52, - 1, - 52, - 1, - 53, - 1, - 53, - 1, - 53, - 1, - 53, - 1, - 53, - 1, - 53, - 1, - 53, - 1, - 54, - 1, - 54, - 1, - 54, - 1, - 54, - 1, - 54, - 1, - 54, - 1, - 54, - 1, - 55, - 1, - 55, - 1, - 55, - 1, - 55, - 1, - 55, - 1, - 55, - 1, - 55, - 1, - 56, - 1, - 56, - 1, - 56, - 1, - 56, - 1, - 56, - 1, - 56, - 1, - 56, - 1, - 56, - 1, - 57, - 1, - 57, - 1, - 57, - 1, - 57, - 1, - 57, - 1, - 57, - 1, - 57, - 1, - 57, - 1, - 57, - 1, - 57, - 1, - 57, - 1, - 58, - 1, - 58, - 1, - 58, - 1, - 58, - 1, - 58, - 1, - 58, - 1, - 58, - 1, - 58, - 1, - 59, - 1, - 59, - 1, - 59, - 1, - 59, - 1, - 59, - 1, - 59, - 1, - 59, - 1, - 59, - 1, - 60, - 1, - 60, - 1, - 60, - 1, - 60, - 1, - 60, - 1, - 60, - 1, - 61, - 1, - 61, - 1, - 61, - 1, - 61, - 1, - 61, - 1, - 61, - 1, - 62, - 1, - 62, - 1, - 62, - 1, - 62, - 1, - 62, - 1, - 62, - 1, - 63, - 1, - 63, - 1, - 63, - 1, - 63, - 1, - 63, - 1, - 63, - 1, - 63, - 1, - 63, - 1, - 63, - 1, - 63, - 1, - 64, - 1, - 64, - 1, - 64, - 1, - 64, - 1, - 65, - 1, - 65, - 1, - 65, - 1, - 65, - 1, - 65, - 1, - 65, - 1, - 65, - 1, - 66, - 1, - 66, - 1, - 66, - 1, - 66, - 1, - 66, - 1, - 66, - 1, - 66, - 1, - 67, - 1, - 67, - 1, - 67, - 1, - 67, - 1, - 67, - 1, - 68, - 1, - 68, - 1, - 68, - 1, - 68, - 1, - 68, - 1, - 69, - 1, - 69, - 1, - 69, - 1, - 69, - 1, - 69, - 1, - 69, - 1, - 69, - 1, - 69, - 1, - 69, - 1, - 70, - 1, - 70, - 1, - 70, - 1, - 70, - 1, - 70, - 1, - 70, - 1, - 70, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 71, - 1, - 72, - 1, - 72, - 1, - 72, - 1, - 72, - 1, - 72, - 1, - 72, - 1, - 73, - 1, - 73, - 1, - 73, - 1, - 73, - 1, - 73, - 1, - 73, - 1, - 73, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 74, - 1, - 75, - 1, - 75, - 1, - 75, - 1, - 75, - 1, - 75, - 1, - 76, - 1, - 76, - 1, - 76, - 1, - 77, - 1, - 77, - 1, - 77, - 1, - 78, - 1, - 78, - 1, - 78, - 1, - 78, - 1, - 78, - 1, - 78, - 1, - 79, - 1, - 79, - 1, - 79, - 1, - 80, - 1, - 80, - 1, - 80, - 1, - 80, - 1, - 80, - 1, - 80, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 1, - 81, - 3, - 81, - 1113, - 8, - 81, - 1, - 82, - 1, - 82, - 1, - 82, - 1, - 82, - 1, - 82, - 1, - 82, - 1, - 82, - 1, - 82, - 1, - 82, - 1, - 82, - 1, - 83, - 1, - 83, - 1, - 83, - 1, - 83, - 1, - 83, - 1, - 83, - 1, - 84, - 1, - 84, - 1, - 84, - 1, - 84, - 1, - 84, - 1, - 84, - 1, - 84, - 1, - 85, - 1, - 85, - 1, - 85, - 1, - 85, - 1, - 85, - 1, - 85, - 1, - 85, - 1, - 85, - 1, - 85, - 1, - 86, - 1, - 86, - 1, - 86, - 1, - 86, - 1, - 86, - 1, - 87, - 1, - 87, - 1, - 87, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 88, - 1, - 89, - 1, - 89, - 1, - 89, - 1, - 89, - 1, - 89, - 1, - 90, - 1, - 90, - 1, - 90, - 1, - 90, - 1, - 91, - 1, - 91, - 1, - 91, - 1, - 91, - 1, - 91, - 1, - 92, - 1, - 92, - 1, - 92, - 1, - 92, - 1, - 92, - 1, - 93, - 1, - 93, - 1, - 93, - 1, - 93, - 1, - 93, - 1, - 93, - 1, - 93, - 1, - 94, - 1, - 94, - 1, - 94, - 1, - 94, - 1, - 94, - 1, - 94, - 1, - 94, - 1, - 94, - 1, - 95, - 1, - 95, - 1, - 95, - 1, - 95, - 1, - 95, - 1, - 96, - 1, - 96, - 1, - 96, - 1, - 96, - 1, - 96, - 1, - 96, - 1, - 96, - 1, - 96, - 1, - 96, - 1, - 97, - 1, - 97, - 1, - 97, - 1, - 97, - 1, - 97, - 1, - 98, - 1, - 98, - 1, - 98, - 1, - 98, - 1, - 98, - 1, - 98, - 1, - 99, - 1, - 99, - 1, - 99, - 1, - 99, - 1, - 99, - 1, - 100, - 1, - 100, - 1, - 100, - 1, - 100, - 1, - 100, - 1, - 100, - 1, - 101, - 1, - 101, - 1, - 101, - 1, - 101, - 1, - 101, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 102, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 103, - 1, - 104, - 1, - 104, - 1, - 104, - 1, - 104, - 1, - 105, - 1, - 105, - 1, - 105, - 1, - 105, - 1, - 105, - 1, - 105, - 1, - 105, - 1, - 106, - 1, - 106, - 1, - 106, - 1, - 106, - 1, - 107, - 1, - 107, - 1, - 107, - 1, - 107, - 1, - 107, - 1, - 107, - 1, - 107, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 108, - 1, - 109, - 1, - 109, - 1, - 109, - 1, - 109, - 1, - 109, - 1, - 109, - 1, - 110, - 1, - 110, - 1, - 110, - 1, - 110, - 1, - 110, - 1, - 111, - 1, - 111, - 1, - 111, - 1, - 111, - 1, - 111, - 1, - 111, - 1, - 111, - 1, - 111, - 1, - 111, - 1, - 112, - 1, - 112, - 1, - 112, - 1, - 112, - 1, - 113, - 1, - 113, - 1, - 113, - 1, - 114, - 1, - 114, - 1, - 114, - 1, - 114, - 1, - 115, - 1, - 115, - 1, - 115, - 1, - 115, - 1, - 115, - 1, - 116, - 1, - 116, - 1, - 116, - 1, - 116, - 1, - 116, - 1, - 116, - 1, - 117, - 1, - 117, - 1, - 117, - 1, - 117, - 1, - 117, - 1, - 117, - 1, - 117, - 1, - 118, - 1, - 118, - 1, - 118, - 1, - 119, - 1, - 119, - 1, - 119, - 1, - 119, - 1, - 119, - 1, - 119, - 1, - 119, - 1, - 119, - 1, - 119, - 1, - 120, - 1, - 120, - 1, - 120, - 1, - 121, - 1, - 121, - 1, - 121, - 1, - 121, - 1, - 121, - 1, - 121, - 1, - 122, - 1, - 122, - 1, - 122, - 1, - 122, - 1, - 122, - 1, - 122, - 1, - 123, - 1, - 123, - 1, - 123, - 1, - 123, - 1, - 123, - 1, - 123, - 1, - 123, - 1, - 123, - 1, - 124, - 1, - 124, - 1, - 124, - 1, - 124, - 1, - 124, - 1, - 125, - 1, - 125, - 1, - 125, - 1, - 125, - 1, - 125, - 1, - 125, - 1, - 125, - 1, - 125, - 1, - 125, - 1, - 125, - 1, - 126, - 1, - 126, - 1, - 126, - 1, - 126, - 1, - 126, - 1, - 126, - 1, - 126, - 1, - 126, - 1, - 126, - 1, - 127, - 1, - 127, - 1, - 127, - 1, - 127, - 1, - 127, - 1, - 127, - 1, - 127, - 1, - 127, - 1, - 127, - 1, - 127, - 1, - 128, - 1, - 128, - 1, - 128, - 1, - 128, - 1, - 128, - 1, - 128, - 1, - 128, - 1, - 128, - 1, - 128, - 1, - 129, - 1, - 129, - 1, - 129, - 1, - 129, - 1, - 129, - 1, - 129, - 1, - 129, - 1, - 129, - 1, - 130, - 1, - 130, - 1, - 130, - 1, - 130, - 1, - 130, - 1, - 130, - 1, - 130, - 1, - 130, - 1, - 130, - 1, - 130, - 1, - 130, - 1, - 131, - 1, - 131, - 1, - 131, - 1, - 131, - 1, - 131, - 1, - 131, - 1, - 131, - 1, - 131, - 1, - 132, - 1, - 132, - 1, - 132, - 1, - 132, - 1, - 132, - 1, - 132, - 1, - 133, - 1, - 133, - 1, - 133, - 1, - 133, - 1, - 133, - 1, - 133, - 1, - 133, - 1, - 134, - 1, - 134, - 1, - 134, - 1, - 134, - 1, - 134, - 1, - 134, - 1, - 134, - 1, - 135, - 1, - 135, - 1, - 135, - 1, - 135, - 1, - 135, - 1, - 135, - 1, - 135, - 1, - 136, - 1, - 136, - 1, - 136, - 1, - 136, - 1, - 136, - 1, - 136, - 1, - 136, - 1, - 136, - 1, - 137, - 1, - 137, - 1, - 137, - 1, - 137, - 1, - 137, - 1, - 137, - 1, - 137, - 1, - 137, - 1, - 138, - 1, - 138, - 1, - 138, - 1, - 138, - 1, - 138, - 1, - 138, - 1, - 138, - 1, - 138, - 1, - 138, - 1, - 138, - 1, - 138, - 1, - 139, - 1, - 139, - 1, - 139, - 1, - 139, - 1, - 139, - 1, - 139, - 1, - 140, - 1, - 140, - 1, - 140, - 1, - 140, - 1, - 140, - 1, - 140, - 1, - 140, - 1, - 141, - 1, - 141, - 1, - 141, - 1, - 141, - 1, - 142, - 1, - 142, - 1, - 142, - 1, - 142, - 1, - 142, - 1, - 143, - 1, - 143, - 1, - 143, - 1, - 143, - 1, - 143, - 1, - 143, - 1, - 143, - 1, - 144, - 1, - 144, - 1, - 144, - 1, - 144, - 1, - 144, - 1, - 144, - 1, - 144, - 1, - 145, - 1, - 145, - 1, - 145, - 1, - 145, - 1, - 145, - 1, - 145, - 1, - 145, - 1, - 146, - 1, - 146, - 1, - 146, - 1, - 146, - 1, - 146, - 1, - 147, - 1, - 147, - 1, - 147, - 1, - 147, - 1, - 147, - 1, - 147, - 1, - 148, - 1, - 148, - 1, - 148, - 1, - 148, - 1, - 149, - 1, - 149, - 1, - 149, - 1, - 149, - 1, - 149, - 1, - 149, - 1, - 149, - 1, - 149, - 1, - 149, - 1, - 150, - 1, - 150, - 1, - 150, - 1, - 150, - 1, - 150, - 1, - 151, - 1, - 151, - 1, - 151, - 1, - 151, - 1, - 151, - 1, - 151, - 1, - 151, - 1, - 152, - 1, - 152, - 1, - 152, - 1, - 152, - 1, - 152, - 1, - 152, - 1, - 153, - 1, - 153, - 1, - 153, - 1, - 153, - 1, - 153, - 1, - 154, - 1, - 154, - 1, - 154, - 1, - 154, - 1, - 154, - 1, - 154, - 1, - 154, - 1, - 154, - 1, - 154, - 1, - 154, - 1, - 155, - 1, - 155, - 1, - 155, - 1, - 155, - 1, - 155, - 1, - 156, - 1, - 156, - 1, - 156, - 1, - 156, - 1, - 156, - 1, - 156, - 1, - 156, - 1, - 157, - 1, - 157, - 1, - 157, - 1, - 157, - 1, - 157, - 1, - 157, - 1, - 157, - 1, - 158, - 1, - 158, - 1, - 158, - 1, - 158, - 1, - 158, - 1, - 158, - 1, - 159, - 1, - 159, - 1, - 159, - 1, - 159, - 1, - 159, - 1, - 159, - 1, - 159, - 1, - 160, - 1, - 160, - 1, - 160, - 1, - 160, - 1, - 160, - 1, - 160, - 1, - 160, - 1, - 160, - 1, - 160, - 1, - 160, - 1, - 161, - 1, - 161, - 1, - 161, - 1, - 161, - 1, - 161, - 1, - 162, - 1, - 162, - 1, - 162, - 1, - 162, - 1, - 162, - 1, - 163, - 1, - 163, - 1, - 163, - 1, - 163, - 1, - 163, - 1, - 164, - 1, - 164, - 1, - 164, - 1, - 164, - 1, - 164, - 1, - 164, - 1, - 164, - 1, - 164, - 1, - 165, - 1, - 165, - 1, - 165, - 1, - 165, - 1, - 165, - 1, - 165, - 1, - 165, - 1, - 165, - 1, - 165, - 1, - 165, - 1, - 166, - 1, - 166, - 1, - 166, - 1, - 167, - 1, - 167, - 1, - 167, - 1, - 167, - 1, - 168, - 1, - 168, - 1, - 168, - 1, - 168, - 1, - 168, - 1, - 168, - 1, - 168, - 1, - 169, - 1, - 169, - 1, - 169, - 1, - 169, - 1, - 169, - 1, - 169, - 1, - 169, - 1, - 169, - 1, - 169, - 1, - 170, - 1, - 170, - 1, - 170, - 1, - 170, - 1, - 170, - 1, - 171, - 1, - 171, - 1, - 171, - 1, - 171, - 1, - 171, - 1, - 171, - 1, - 171, - 1, - 171, - 1, - 171, - 1, - 172, - 1, - 172, - 1, - 172, - 1, - 172, - 1, - 173, - 1, - 173, - 1, - 173, - 1, - 173, - 1, - 173, - 1, - 174, - 1, - 174, - 1, - 174, - 1, - 174, - 1, - 174, - 1, - 174, - 1, - 174, - 1, - 174, - 1, - 174, - 1, - 174, - 1, - 175, - 1, - 175, - 1, - 175, - 1, - 175, - 1, - 175, - 1, - 175, - 1, - 176, - 1, - 176, - 1, - 176, - 1, - 176, - 1, - 176, - 1, - 176, - 1, - 176, - 1, - 177, - 1, - 177, - 1, - 177, - 1, - 177, - 1, - 178, - 1, - 178, - 1, - 178, - 1, - 178, - 1, - 178, - 1, - 178, - 1, - 179, - 1, - 179, - 1, - 179, - 1, - 179, - 1, - 179, - 1, - 180, - 1, - 180, - 1, - 180, - 1, - 180, - 1, - 180, - 1, - 180, - 1, - 180, - 1, - 181, - 1, - 181, - 1, - 181, - 1, - 181, - 1, - 181, - 1, - 182, - 1, - 182, - 1, - 182, - 1, - 182, - 1, - 182, - 1, - 182, - 1, - 182, - 1, - 183, - 1, - 183, - 1, - 183, - 1, - 183, - 1, - 183, - 1, - 183, - 1, - 184, - 1, - 184, - 1, - 184, - 1, - 184, - 1, - 184, - 1, - 185, - 1, - 185, - 1, - 185, - 1, - 185, - 1, - 185, - 1, - 186, - 1, - 186, - 1, - 186, - 1, - 186, - 1, - 186, - 1, - 186, - 1, - 187, - 1, - 187, - 1, - 187, - 1, - 187, - 1, - 187, - 1, - 187, - 1, - 187, - 1, - 188, - 1, - 188, - 1, - 188, - 1, - 188, - 1, - 188, - 1, - 189, - 1, - 189, - 1, - 189, - 1, - 189, - 1, - 189, - 1, - 189, - 1, - 189, - 1, - 189, - 1, - 189, - 1, - 189, - 3, - 189, - 1827, - 8, - 189, - 1, - 190, - 1, - 190, - 1, - 190, - 1, - 190, - 1, - 190, - 1, - 190, - 1, - 191, - 1, - 191, - 1, - 191, - 1, - 191, - 1, - 191, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 1, - 192, - 3, - 192, - 1870, - 8, - 192, - 1, - 193, - 1, - 193, - 1, - 193, - 3, - 193, - 1875, - 8, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 5, - 193, - 1881, - 8, - 193, - 10, - 193, - 12, - 193, - 1884, - 9, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 5, - 193, - 1892, - 8, - 193, - 10, - 193, - 12, - 193, - 1895, - 9, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 1, - 193, - 5, - 193, - 1905, - 8, - 193, - 10, - 193, - 12, - 193, - 1908, - 9, - 193, - 1, - 193, - 1, - 193, - 3, - 193, - 1912, - 8, - 193, - 1, - 194, - 1, - 194, - 1, - 194, - 5, - 194, - 1917, - 8, - 194, - 10, - 194, - 12, - 194, - 1920, - 9, - 194, - 1, - 194, - 1, - 194, - 3, - 194, - 1924, - 8, - 194, - 1, - 194, - 1, - 194, - 3, - 194, - 1928, - 8, - 194, - 1, - 194, - 4, - 194, - 1931, - 8, - 194, - 11, - 194, - 12, - 194, - 1932, - 1, - 194, - 1, - 194, - 1, - 194, - 3, - 194, - 1938, - 8, - 194, - 1, - 194, - 1, - 194, - 3, - 194, - 1942, - 8, - 194, - 1, - 194, - 4, - 194, - 1945, - 8, - 194, - 11, - 194, - 12, - 194, - 1946, - 1, - 194, - 1, - 194, - 1, - 194, - 5, - 194, - 1952, - 8, - 194, - 10, - 194, - 12, - 194, - 1955, - 9, - 194, - 1, - 194, - 1, - 194, - 1, - 194, - 3, - 194, - 1960, - 8, - 194, - 1, - 194, - 4, - 194, - 1963, - 8, - 194, - 11, - 194, - 12, - 194, - 1964, - 1, - 194, - 1, - 194, - 1, - 194, - 1, - 194, - 1, - 194, - 3, - 194, - 1972, - 8, - 194, - 1, - 194, - 4, - 194, - 1975, - 8, - 194, - 11, - 194, - 12, - 194, - 1976, - 1, - 194, - 1, - 194, - 1, - 194, - 1, - 194, - 3, - 194, - 1983, - 8, - 194, - 1, - 194, - 4, - 194, - 1986, - 8, - 194, - 11, - 194, - 12, - 194, - 1987, - 3, - 194, - 1990, - 8, - 194, - 1, - 195, - 1, - 195, - 4, - 195, - 1994, - 8, - 195, - 11, - 195, - 12, - 195, - 1995, - 1, - 196, - 4, - 196, - 1999, - 8, - 196, - 11, - 196, - 12, - 196, - 2000, - 1, - 197, - 1, - 197, - 1, - 197, - 4, - 197, - 2006, - 8, - 197, - 11, - 197, - 12, - 197, - 2007, - 1, - 198, - 1, - 198, - 1, - 198, - 1, - 198, - 1, - 198, - 1, - 198, - 5, - 198, - 2016, - 8, - 198, - 10, - 198, - 12, - 198, - 2019, - 9, - 198, - 1, - 198, - 1, - 198, - 1, - 199, - 1, - 199, - 1, - 199, - 1, - 199, - 1, - 199, - 1, - 199, - 5, - 199, - 2029, - 8, - 199, - 10, - 199, - 12, - 199, - 2032, - 9, - 199, - 1, - 199, - 1, - 199, - 1, - 200, - 1, - 200, - 1, - 201, - 1, - 201, - 1, - 202, - 1, - 202, - 1, - 203, - 1, - 203, - 1, - 204, - 1, - 204, - 1, - 205, - 1, - 205, - 1, - 206, - 1, - 206, - 1, - 207, - 1, - 207, - 1, - 208, - 1, - 208, - 1, - 209, - 1, - 209, - 1, - 210, - 1, - 210, - 1, - 211, - 1, - 211, - 1, - 212, - 1, - 212, - 1, - 213, - 1, - 213, - 1, - 214, - 1, - 214, - 1, - 215, - 1, - 215, - 1, - 216, - 1, - 216, - 1, - 217, - 1, - 217, - 1, - 218, - 1, - 218, - 1, - 219, - 1, - 219, - 1, - 220, - 1, - 220, - 1, - 221, - 1, - 221, - 1, - 222, - 1, - 222, - 1, - 223, - 1, - 223, - 1, - 224, - 1, - 224, - 1, - 225, - 1, - 225, - 1, - 226, - 1, - 226, - 1, - 227, - 1, - 227, - 1, - 228, - 1, - 228, - 1, - 229, - 1, - 229, - 1, - 230, - 1, - 230, - 1, - 230, - 1, - 231, - 1, - 231, - 1, - 232, - 1, - 232, - 1, - 233, - 1, - 233, - 1, - 234, - 1, - 234, - 1, - 235, - 1, - 235, - 1, - 236, - 1, - 236, - 1, - 236, - 1, - 237, - 1, - 237, - 1, - 238, - 1, - 238, - 1, - 239, - 1, - 239, - 1, - 240, - 1, - 240, - 1, - 240, - 1, - 241, - 1, - 241, - 1, - 242, - 1, - 242, - 1, - 242, - 1, - 243, - 1, - 243, - 1, - 244, - 1, - 244, - 1, - 245, - 1, - 245, - 1, - 245, - 1, - 246, - 1, - 246, - 1, - 246, - 1, - 246, - 1, - 247, - 1, - 247, - 1, - 248, - 1, - 248, - 1, - 249, - 1, - 249, - 1, - 250, - 1, - 250, - 1, - 250, - 1, - 251, - 1, - 251, - 1, - 252, - 1, - 252, - 1, - 252, - 1, - 252, - 3, - 252, - 2152, - 8, - 252, - 1, - 253, - 1, - 253, - 1, - 253, - 1, - 253, - 1, - 254, - 1, - 254, - 1, - 254, - 1, - 255, - 1, - 255, - 1, - 255, - 1, - 256, - 1, - 256, - 1, - 257, - 1, - 257, - 1, - 258, - 1, - 258, - 1, - 259, - 1, - 259, - 1, - 260, - 1, - 260, - 1, - 261, - 1, - 261, - 1, - 262, - 1, - 262, - 1, - 262, - 1, - 263, - 1, - 263, - 1, - 264, - 1, - 264, - 1, - 265, - 1, - 265, - 1, - 266, - 1, - 266, - 1, - 267, - 1, - 267, - 1, - 268, - 1, - 268, - 1, - 269, - 1, - 269, - 1, - 269, - 1, - 269, - 5, - 269, - 2195, - 8, - 269, - 10, - 269, - 12, - 269, - 2198, - 9, - 269, - 1, - 269, - 1, - 269, - 1, - 269, - 1, - 269, - 1, - 269, - 1, - 270, - 1, - 270, - 1, - 270, - 1, - 270, - 5, - 270, - 2209, - 8, - 270, - 10, - 270, - 12, - 270, - 2212, - 9, - 270, - 1, - 270, - 3, - 270, - 2215, - 8, - 270, - 1, - 270, - 1, - 270, - 1, - 271, - 1, - 271, - 1, - 271, - 1, - 271, - 1, - 2196, - 0, - 272, - 1, - 1, - 3, - 2, - 5, - 3, - 7, - 4, - 9, - 5, - 11, - 6, - 13, - 7, - 15, - 8, - 17, - 9, - 19, - 10, - 21, - 11, - 23, - 12, - 25, - 13, - 27, - 14, - 29, - 15, - 31, - 16, - 33, - 17, - 35, - 18, - 37, - 19, - 39, - 20, - 41, - 21, - 43, - 22, - 45, - 23, - 47, - 24, - 49, - 25, - 51, - 26, - 53, - 27, - 55, - 28, - 57, - 29, - 59, - 30, - 61, - 31, - 63, - 32, - 65, - 33, - 67, - 34, - 69, - 35, - 71, - 36, - 73, - 37, - 75, - 38, - 77, - 39, - 79, - 40, - 81, - 41, - 83, - 42, - 85, - 43, - 87, - 44, - 89, - 45, - 91, - 46, - 93, - 47, - 95, - 48, - 97, - 49, - 99, - 50, - 101, - 51, - 103, - 52, - 105, - 53, - 107, - 54, - 109, - 55, - 111, - 56, - 113, - 57, - 115, - 58, - 117, - 59, - 119, - 60, - 121, - 61, - 123, - 62, - 125, - 63, - 127, - 64, - 129, - 65, - 131, - 66, - 133, - 67, - 135, - 68, - 137, - 69, - 139, - 70, - 141, - 71, - 143, - 72, - 145, - 73, - 147, - 74, - 149, - 75, - 151, - 76, - 153, - 77, - 155, - 78, - 157, - 79, - 159, - 80, - 161, - 81, - 163, - 82, - 165, - 83, - 167, - 84, - 169, - 85, - 171, - 86, - 173, - 87, - 175, - 88, - 177, - 89, - 179, - 90, - 181, - 91, - 183, - 92, - 185, - 93, - 187, - 94, - 189, - 95, - 191, - 96, - 193, - 97, - 195, - 98, - 197, - 99, - 199, - 100, - 201, - 101, - 203, - 102, - 205, - 103, - 207, - 104, - 209, - 105, - 211, - 106, - 213, - 107, - 215, - 108, - 217, - 109, - 219, - 110, - 221, - 111, - 223, - 112, - 225, - 113, - 227, - 114, - 229, - 115, - 231, - 116, - 233, - 117, - 235, - 118, - 237, - 119, - 239, - 120, - 241, - 121, - 243, - 122, - 245, - 123, - 247, - 124, - 249, - 125, - 251, - 126, - 253, - 127, - 255, - 128, - 257, - 129, - 259, - 130, - 261, - 131, - 263, - 132, - 265, - 133, - 267, - 134, - 269, - 135, - 271, - 136, - 273, - 137, - 275, - 138, - 277, - 139, - 279, - 140, - 281, - 141, - 283, - 142, - 285, - 143, - 287, - 144, - 289, - 145, - 291, - 146, - 293, - 147, - 295, - 148, - 297, - 149, - 299, - 150, - 301, - 151, - 303, - 152, - 305, - 153, - 307, - 154, - 309, - 155, - 311, - 156, - 313, - 157, - 315, - 158, - 317, - 159, - 319, - 160, - 321, - 161, - 323, - 162, - 325, - 163, - 327, - 164, - 329, - 165, - 331, - 166, - 333, - 167, - 335, - 168, - 337, - 169, - 339, - 170, - 341, - 171, - 343, - 172, - 345, - 173, - 347, - 174, - 349, - 175, - 351, - 176, - 353, - 177, - 355, - 178, - 357, - 179, - 359, - 180, - 361, - 181, - 363, - 182, - 365, - 183, - 367, - 184, - 369, - 185, - 371, - 186, - 373, - 187, - 375, - 188, - 377, - 189, - 379, - 190, - 381, - 191, - 383, - 192, - 385, - 193, - 387, - 194, - 389, - 195, - 391, - 196, - 393, - 197, - 395, - 198, - 397, - 199, - 399, - 200, - 401, - 0, - 403, - 0, - 405, - 0, - 407, - 0, - 409, - 0, - 411, - 0, - 413, - 0, - 415, - 0, - 417, - 0, - 419, - 0, - 421, - 0, - 423, - 0, - 425, - 0, - 427, - 0, - 429, - 0, - 431, - 0, - 433, - 0, - 435, - 0, - 437, - 0, - 439, - 0, - 441, - 0, - 443, - 0, - 445, - 0, - 447, - 0, - 449, - 0, - 451, - 0, - 453, - 0, - 455, - 0, - 457, - 0, - 459, - 0, - 461, - 201, - 463, - 202, - 465, - 203, - 467, - 204, - 469, - 205, - 471, - 206, - 473, - 207, - 475, - 208, - 477, - 209, - 479, - 210, - 481, - 211, - 483, - 212, - 485, - 213, - 487, - 214, - 489, - 215, - 491, - 216, - 493, - 217, - 495, - 218, - 497, - 219, - 499, - 220, - 501, - 221, - 503, - 222, - 505, - 223, - 507, - 224, - 509, - 225, - 511, - 226, - 513, - 227, - 515, - 228, - 517, - 229, - 519, - 230, - 521, - 231, - 523, - 232, - 525, - 233, - 527, - 234, - 529, - 235, - 531, - 236, - 533, - 237, - 535, - 238, - 537, - 239, - 539, - 240, - 541, - 241, - 543, - 242, - 1, - 0, - 37, - 2, - 0, - 92, - 92, - 96, - 96, - 2, - 0, - 34, - 34, - 92, - 92, - 2, - 0, - 39, - 39, - 92, - 92, - 2, - 0, - 92, - 92, - 125, - 125, - 2, - 0, - 65, - 65, - 97, - 97, - 2, - 0, - 66, - 66, - 98, - 98, - 2, - 0, - 67, - 67, - 99, - 99, - 2, - 0, - 68, - 68, - 100, - 100, - 2, - 0, - 69, - 69, - 101, - 101, - 2, - 0, - 70, - 70, - 102, - 102, - 2, - 0, - 71, - 71, - 103, - 103, - 2, - 0, - 72, - 72, - 104, - 104, - 2, - 0, - 73, - 73, - 105, - 105, - 2, - 0, - 74, - 74, - 106, - 106, - 2, - 0, - 75, - 75, - 107, - 107, - 2, - 0, - 76, - 76, - 108, - 108, - 2, - 0, - 77, - 77, - 109, - 109, - 2, - 0, - 78, - 78, - 110, - 110, - 2, - 0, - 79, - 79, - 111, - 111, - 2, - 0, - 80, - 80, - 112, - 112, - 2, - 0, - 81, - 81, - 113, - 113, - 2, - 0, - 82, - 82, - 114, - 114, - 2, - 0, - 83, - 83, - 115, - 115, - 2, - 0, - 84, - 84, - 116, - 116, - 2, - 0, - 85, - 85, - 117, - 117, - 2, - 0, - 86, - 86, - 118, - 118, - 2, - 0, - 87, - 87, - 119, - 119, - 2, - 0, - 88, - 88, - 120, - 120, - 2, - 0, - 89, - 89, - 121, - 121, - 2, - 0, - 90, - 90, - 122, - 122, - 2, - 0, - 65, - 90, - 97, - 122, - 1, - 0, - 48, - 55, - 1, - 0, - 48, - 57, - 3, - 0, - 48, - 57, - 65, - 70, - 97, - 102, - 2, - 0, - 10, - 10, - 13, - 13, - 2, - 1, - 10, - 10, - 13, - 13, - 2, - 0, - 9, - 13, - 32, - 32, - 2252, - 0, - 1, - 1, - 0, - 0, - 0, - 0, - 3, - 1, - 0, - 0, - 0, - 0, - 5, - 1, - 0, - 0, - 0, - 0, - 7, - 1, - 0, - 0, - 0, - 0, - 9, - 1, - 0, - 0, - 0, - 0, - 11, - 1, - 0, - 0, - 0, - 0, - 13, - 1, - 0, - 0, - 0, - 0, - 15, - 1, - 0, - 0, - 0, - 0, - 17, - 1, - 0, - 0, - 0, - 0, - 19, - 1, - 0, - 0, - 0, - 0, - 21, - 1, - 0, - 0, - 0, - 0, - 23, - 1, - 0, - 0, - 0, - 0, - 25, - 1, - 0, - 0, - 0, - 0, - 27, - 1, - 0, - 0, - 0, - 0, - 29, - 1, - 0, - 0, - 0, - 0, - 31, - 1, - 0, - 0, - 0, - 0, - 33, - 1, - 0, - 0, - 0, - 0, - 35, - 1, - 0, - 0, - 0, - 0, - 37, - 1, - 0, - 0, - 0, - 0, - 39, - 1, - 0, - 0, - 0, - 0, - 41, - 1, - 0, - 0, - 0, - 0, - 43, - 1, - 0, - 0, - 0, - 0, - 45, - 1, - 0, - 0, - 0, - 0, - 47, - 1, - 0, - 0, - 0, - 0, - 49, - 1, - 0, - 0, - 0, - 0, - 51, - 1, - 0, - 0, - 0, - 0, - 53, - 1, - 0, - 0, - 0, - 0, - 55, - 1, - 0, - 0, - 0, - 0, - 57, - 1, - 0, - 0, - 0, - 0, - 59, - 1, - 0, - 0, - 0, - 0, - 61, - 1, - 0, - 0, - 0, - 0, - 63, - 1, - 0, - 0, - 0, - 0, - 65, - 1, - 0, - 0, - 0, - 0, - 67, - 1, - 0, - 0, - 0, - 0, - 69, - 1, - 0, - 0, - 0, - 0, - 71, - 1, - 0, - 0, - 0, - 0, - 73, - 1, - 0, - 0, - 0, - 0, - 75, - 1, - 0, - 0, - 0, - 0, - 77, - 1, - 0, - 0, - 0, - 0, - 79, - 1, - 0, - 0, - 0, - 0, - 81, - 1, - 0, - 0, - 0, - 0, - 83, - 1, - 0, - 0, - 0, - 0, - 85, - 1, - 0, - 0, - 0, - 0, - 87, - 1, - 0, - 0, - 0, - 0, - 89, - 1, - 0, - 0, - 0, - 0, - 91, - 1, - 0, - 0, - 0, - 0, - 93, - 1, - 0, - 0, - 0, - 0, - 95, - 1, - 0, - 0, - 0, - 0, - 97, - 1, - 0, - 0, - 0, - 0, - 99, - 1, - 0, - 0, - 0, - 0, - 101, - 1, - 0, - 0, - 0, - 0, - 103, - 1, - 0, - 0, - 0, - 0, - 105, - 1, - 0, - 0, - 0, - 0, - 107, - 1, - 0, - 0, - 0, - 0, - 109, - 1, - 0, - 0, - 0, - 0, - 111, - 1, - 0, - 0, - 0, - 0, - 113, - 1, - 0, - 0, - 0, - 0, - 115, - 1, - 0, - 0, - 0, - 0, - 117, - 1, - 0, - 0, - 0, - 0, - 119, - 1, - 0, - 0, - 0, - 0, - 121, - 1, - 0, - 0, - 0, - 0, - 123, - 1, - 0, - 0, - 0, - 0, - 125, - 1, - 0, - 0, - 0, - 0, - 127, - 1, - 0, - 0, - 0, - 0, - 129, - 1, - 0, - 0, - 0, - 0, - 131, - 1, - 0, - 0, - 0, - 0, - 133, - 1, - 0, - 0, - 0, - 0, - 135, - 1, - 0, - 0, - 0, - 0, - 137, - 1, - 0, - 0, - 0, - 0, - 139, - 1, - 0, - 0, - 0, - 0, - 141, - 1, - 0, - 0, - 0, - 0, - 143, - 1, - 0, - 0, - 0, - 0, - 145, - 1, - 0, - 0, - 0, - 0, - 147, - 1, - 0, - 0, - 0, - 0, - 149, - 1, - 0, - 0, - 0, - 0, - 151, - 1, - 0, - 0, - 0, - 0, - 153, - 1, - 0, - 0, - 0, - 0, - 155, - 1, - 0, - 0, - 0, - 0, - 157, - 1, - 0, - 0, - 0, - 0, - 159, - 1, - 0, - 0, - 0, - 0, - 161, - 1, - 0, - 0, - 0, - 0, - 163, - 1, - 0, - 0, - 0, - 0, - 165, - 1, - 0, - 0, - 0, - 0, - 167, - 1, - 0, - 0, - 0, - 0, - 169, - 1, - 0, - 0, - 0, - 0, - 171, - 1, - 0, - 0, - 0, - 0, - 173, - 1, - 0, - 0, - 0, - 0, - 175, - 1, - 0, - 0, - 0, - 0, - 177, - 1, - 0, - 0, - 0, - 0, - 179, - 1, - 0, - 0, - 0, - 0, - 181, - 1, - 0, - 0, - 0, - 0, - 183, - 1, - 0, - 0, - 0, - 0, - 185, - 1, - 0, - 0, - 0, - 0, - 187, - 1, - 0, - 0, - 0, - 0, - 189, - 1, - 0, - 0, - 0, - 0, - 191, - 1, - 0, - 0, - 0, - 0, - 193, - 1, - 0, - 0, - 0, - 0, - 195, - 1, - 0, - 0, - 0, - 0, - 197, - 1, - 0, - 0, - 0, - 0, - 199, - 1, - 0, - 0, - 0, - 0, - 201, - 1, - 0, - 0, - 0, - 0, - 203, - 1, - 0, - 0, - 0, - 0, - 205, - 1, - 0, - 0, - 0, - 0, - 207, - 1, - 0, - 0, - 0, - 0, - 209, - 1, - 0, - 0, - 0, - 0, - 211, - 1, - 0, - 0, - 0, - 0, - 213, - 1, - 0, - 0, - 0, - 0, - 215, - 1, - 0, - 0, - 0, - 0, - 217, - 1, - 0, - 0, - 0, - 0, - 219, - 1, - 0, - 0, - 0, - 0, - 221, - 1, - 0, - 0, - 0, - 0, - 223, - 1, - 0, - 0, - 0, - 0, - 225, - 1, - 0, - 0, - 0, - 0, - 227, - 1, - 0, - 0, - 0, - 0, - 229, - 1, - 0, - 0, - 0, - 0, - 231, - 1, - 0, - 0, - 0, - 0, - 233, - 1, - 0, - 0, - 0, - 0, - 235, - 1, - 0, - 0, - 0, - 0, - 237, - 1, - 0, - 0, - 0, - 0, - 239, - 1, - 0, - 0, - 0, - 0, - 241, - 1, - 0, - 0, - 0, - 0, - 243, - 1, - 0, - 0, - 0, - 0, - 245, - 1, - 0, - 0, - 0, - 0, - 247, - 1, - 0, - 0, - 0, - 0, - 249, - 1, - 0, - 0, - 0, - 0, - 251, - 1, - 0, - 0, - 0, - 0, - 253, - 1, - 0, - 0, - 0, - 0, - 255, - 1, - 0, - 0, - 0, - 0, - 257, - 1, - 0, - 0, - 0, - 0, - 259, - 1, - 0, - 0, - 0, - 0, - 261, - 1, - 0, - 0, - 0, - 0, - 263, - 1, - 0, - 0, - 0, - 0, - 265, - 1, - 0, - 0, - 0, - 0, - 267, - 1, - 0, - 0, - 0, - 0, - 269, - 1, - 0, - 0, - 0, - 0, - 271, - 1, - 0, - 0, - 0, - 0, - 273, - 1, - 0, - 0, - 0, - 0, - 275, - 1, - 0, - 0, - 0, - 0, - 277, - 1, - 0, - 0, - 0, - 0, - 279, - 1, - 0, - 0, - 0, - 0, - 281, - 1, - 0, - 0, - 0, - 0, - 283, - 1, - 0, - 0, - 0, - 0, - 285, - 1, - 0, - 0, - 0, - 0, - 287, - 1, - 0, - 0, - 0, - 0, - 289, - 1, - 0, - 0, - 0, - 0, - 291, - 1, - 0, - 0, - 0, - 0, - 293, - 1, - 0, - 0, - 0, - 0, - 295, - 1, - 0, - 0, - 0, - 0, - 297, - 1, - 0, - 0, - 0, - 0, - 299, - 1, - 0, - 0, - 0, - 0, - 301, - 1, - 0, - 0, - 0, - 0, - 303, - 1, - 0, - 0, - 0, - 0, - 305, - 1, - 0, - 0, - 0, - 0, - 307, - 1, - 0, - 0, - 0, - 0, - 309, - 1, - 0, - 0, - 0, - 0, - 311, - 1, - 0, - 0, - 0, - 0, - 313, - 1, - 0, - 0, - 0, - 0, - 315, - 1, - 0, - 0, - 0, - 0, - 317, - 1, - 0, - 0, - 0, - 0, - 319, - 1, - 0, - 0, - 0, - 0, - 321, - 1, - 0, - 0, - 0, - 0, - 323, - 1, - 0, - 0, - 0, - 0, - 325, - 1, - 0, - 0, - 0, - 0, - 327, - 1, - 0, - 0, - 0, - 0, - 329, - 1, - 0, - 0, - 0, - 0, - 331, - 1, - 0, - 0, - 0, - 0, - 333, - 1, - 0, - 0, - 0, - 0, - 335, - 1, - 0, - 0, - 0, - 0, - 337, - 1, - 0, - 0, - 0, - 0, - 339, - 1, - 0, - 0, - 0, - 0, - 341, - 1, - 0, - 0, - 0, - 0, - 343, - 1, - 0, - 0, - 0, - 0, - 345, - 1, - 0, - 0, - 0, - 0, - 347, - 1, - 0, - 0, - 0, - 0, - 349, - 1, - 0, - 0, - 0, - 0, - 351, - 1, - 0, - 0, - 0, - 0, - 353, - 1, - 0, - 0, - 0, - 0, - 355, - 1, - 0, - 0, - 0, - 0, - 357, - 1, - 0, - 0, - 0, - 0, - 359, - 1, - 0, - 0, - 0, - 0, - 361, - 1, - 0, - 0, - 0, - 0, - 363, - 1, - 0, - 0, - 0, - 0, - 365, - 1, - 0, - 0, - 0, - 0, - 367, - 1, - 0, - 0, - 0, - 0, - 369, - 1, - 0, - 0, - 0, - 0, - 371, - 1, - 0, - 0, - 0, - 0, - 373, - 1, - 0, - 0, - 0, - 0, - 375, - 1, - 0, - 0, - 0, - 0, - 377, - 1, - 0, - 0, - 0, - 0, - 379, - 1, - 0, - 0, - 0, - 0, - 381, - 1, - 0, - 0, - 0, - 0, - 383, - 1, - 0, - 0, - 0, - 0, - 385, - 1, - 0, - 0, - 0, - 0, - 387, - 1, - 0, - 0, - 0, - 0, - 389, - 1, - 0, - 0, - 0, - 0, - 391, - 1, - 0, - 0, - 0, - 0, - 393, - 1, - 0, - 0, - 0, - 0, - 395, - 1, - 0, - 0, - 0, - 0, - 397, - 1, - 0, - 0, - 0, - 0, - 399, - 1, - 0, - 0, - 0, - 0, - 461, - 1, - 0, - 0, - 0, - 0, - 463, - 1, - 0, - 0, - 0, - 0, - 465, - 1, - 0, - 0, - 0, - 0, - 467, - 1, - 0, - 0, - 0, - 0, - 469, - 1, - 0, - 0, - 0, - 0, - 471, - 1, - 0, - 0, - 0, - 0, - 473, - 1, - 0, - 0, - 0, - 0, - 475, - 1, - 0, - 0, - 0, - 0, - 477, - 1, - 0, - 0, - 0, - 0, - 479, - 1, - 0, - 0, - 0, - 0, - 481, - 1, - 0, - 0, - 0, - 0, - 483, - 1, - 0, - 0, - 0, - 0, - 485, - 1, - 0, - 0, - 0, - 0, - 487, - 1, - 0, - 0, - 0, - 0, - 489, - 1, - 0, - 0, - 0, - 0, - 491, - 1, - 0, - 0, - 0, - 0, - 493, - 1, - 0, - 0, - 0, - 0, - 495, - 1, - 0, - 0, - 0, - 0, - 497, - 1, - 0, - 0, - 0, - 0, - 499, - 1, - 0, - 0, - 0, - 0, - 501, - 1, - 0, - 0, - 0, - 0, - 503, - 1, - 0, - 0, - 0, - 0, - 505, - 1, - 0, - 0, - 0, - 0, - 507, - 1, - 0, - 0, - 0, - 0, - 509, - 1, - 0, - 0, - 0, - 0, - 511, - 1, - 0, - 0, - 0, - 0, - 513, - 1, - 0, - 0, - 0, - 0, - 515, - 1, - 0, - 0, - 0, - 0, - 517, - 1, - 0, - 0, - 0, - 0, - 519, - 1, - 0, - 0, - 0, - 0, - 521, - 1, - 0, - 0, - 0, - 0, - 523, - 1, - 0, - 0, - 0, - 0, - 525, - 1, - 0, - 0, - 0, - 0, - 527, - 1, - 0, - 0, - 0, - 0, - 529, - 1, - 0, - 0, - 0, - 0, - 531, - 1, - 0, - 0, - 0, - 0, - 533, - 1, - 0, - 0, - 0, - 0, - 535, - 1, - 0, - 0, - 0, - 0, - 537, - 1, - 0, - 0, - 0, - 0, - 539, - 1, - 0, - 0, - 0, - 0, - 541, - 1, - 0, - 0, - 0, - 0, - 543, - 1, - 0, - 0, - 0, - 1, - 545, - 1, - 0, - 0, - 0, - 3, - 549, - 1, - 0, - 0, - 0, - 5, - 555, - 1, - 0, - 0, - 0, - 7, - 561, - 1, - 0, - 0, - 0, - 9, - 565, - 1, - 0, - 0, - 0, - 11, - 571, - 1, - 0, - 0, - 0, - 13, - 575, - 1, - 0, - 0, - 0, - 15, - 580, - 1, - 0, - 0, - 0, - 17, - 584, - 1, - 0, - 0, - 0, - 19, - 590, - 1, - 0, - 0, - 0, - 21, - 607, - 1, - 0, - 0, - 0, - 23, - 609, - 1, - 0, - 0, - 0, - 25, - 614, - 1, - 0, - 0, - 0, - 27, - 618, - 1, - 0, - 0, - 0, - 29, - 624, - 1, - 0, - 0, - 0, - 31, - 631, - 1, - 0, - 0, - 0, - 33, - 639, - 1, - 0, - 0, - 0, - 35, - 644, - 1, - 0, - 0, - 0, - 37, - 647, - 1, - 0, - 0, - 0, - 39, - 652, - 1, - 0, - 0, - 0, - 41, - 657, - 1, - 0, - 0, - 0, - 43, - 663, - 1, - 0, - 0, - 0, - 45, - 669, - 1, - 0, - 0, - 0, - 47, - 677, - 1, - 0, - 0, - 0, - 49, - 683, - 1, - 0, - 0, - 0, - 51, - 690, - 1, - 0, - 0, - 0, - 53, - 698, - 1, - 0, - 0, - 0, - 55, - 705, - 1, - 0, - 0, - 0, - 57, - 713, - 1, - 0, - 0, - 0, - 59, - 724, - 1, - 0, - 0, - 0, - 61, - 731, - 1, - 0, - 0, - 0, - 63, - 737, - 1, - 0, - 0, - 0, - 65, - 742, - 1, - 0, - 0, - 0, - 67, - 750, - 1, - 0, - 0, - 0, - 69, - 759, - 1, - 0, - 0, - 0, - 71, - 769, - 1, - 0, - 0, - 0, - 73, - 774, - 1, - 0, - 0, - 0, - 75, - 778, - 1, - 0, - 0, - 0, - 77, - 790, - 1, - 0, - 0, - 0, - 79, - 798, - 1, - 0, - 0, - 0, - 81, - 804, - 1, - 0, - 0, - 0, - 83, - 811, - 1, - 0, - 0, - 0, - 85, - 816, - 1, - 0, - 0, - 0, - 87, - 827, - 1, - 0, - 0, - 0, - 89, - 836, - 1, - 0, - 0, - 0, - 91, - 843, - 1, - 0, - 0, - 0, - 93, - 856, - 1, - 0, - 0, - 0, - 95, - 867, - 1, - 0, - 0, - 0, - 97, - 872, - 1, - 0, - 0, - 0, - 99, - 881, - 1, - 0, - 0, - 0, - 101, - 893, - 1, - 0, - 0, - 0, - 103, - 898, - 1, - 0, - 0, - 0, - 105, - 903, - 1, - 0, - 0, - 0, - 107, - 907, - 1, - 0, - 0, - 0, - 109, - 914, - 1, - 0, - 0, - 0, - 111, - 921, - 1, - 0, - 0, - 0, - 113, - 928, - 1, - 0, - 0, - 0, - 115, - 936, - 1, - 0, - 0, - 0, - 117, - 947, - 1, - 0, - 0, - 0, - 119, - 955, - 1, - 0, - 0, - 0, - 121, - 963, - 1, - 0, - 0, - 0, - 123, - 969, - 1, - 0, - 0, - 0, - 125, - 975, - 1, - 0, - 0, - 0, - 127, - 981, - 1, - 0, - 0, - 0, - 129, - 991, - 1, - 0, - 0, - 0, - 131, - 995, - 1, - 0, - 0, - 0, - 133, - 1002, - 1, - 0, - 0, - 0, - 135, - 1009, - 1, - 0, - 0, - 0, - 137, - 1014, - 1, - 0, - 0, - 0, - 139, - 1019, - 1, - 0, - 0, - 0, - 141, - 1028, - 1, - 0, - 0, - 0, - 143, - 1035, - 1, - 0, - 0, - 0, - 145, - 1047, - 1, - 0, - 0, - 0, - 147, - 1053, - 1, - 0, - 0, - 0, - 149, - 1060, - 1, - 0, - 0, - 0, - 151, - 1073, - 1, - 0, - 0, - 0, - 153, - 1078, - 1, - 0, - 0, - 0, - 155, - 1081, - 1, - 0, - 0, - 0, - 157, - 1084, - 1, - 0, - 0, - 0, - 159, - 1090, - 1, - 0, - 0, - 0, - 161, - 1093, - 1, - 0, - 0, - 0, - 163, - 1112, - 1, - 0, - 0, - 0, - 165, - 1114, - 1, - 0, - 0, - 0, - 167, - 1124, - 1, - 0, - 0, - 0, - 169, - 1130, - 1, - 0, - 0, - 0, - 171, - 1137, - 1, - 0, - 0, - 0, - 173, - 1146, - 1, - 0, - 0, - 0, - 175, - 1151, - 1, - 0, - 0, - 0, - 177, - 1154, - 1, - 0, - 0, - 0, - 179, - 1167, - 1, - 0, - 0, - 0, - 181, - 1172, - 1, - 0, - 0, - 0, - 183, - 1176, - 1, - 0, - 0, - 0, - 185, - 1181, - 1, - 0, - 0, - 0, - 187, - 1186, - 1, - 0, - 0, - 0, - 189, - 1193, - 1, - 0, - 0, - 0, - 191, - 1201, - 1, - 0, - 0, - 0, - 193, - 1206, - 1, - 0, - 0, - 0, - 195, - 1215, - 1, - 0, - 0, - 0, - 197, - 1220, - 1, - 0, - 0, - 0, - 199, - 1226, - 1, - 0, - 0, - 0, - 201, - 1231, - 1, - 0, - 0, - 0, - 203, - 1237, - 1, - 0, - 0, - 0, - 205, - 1242, - 1, - 0, - 0, - 0, - 207, - 1254, - 1, - 0, - 0, - 0, - 209, - 1267, - 1, - 0, - 0, - 0, - 211, - 1271, - 1, - 0, - 0, - 0, - 213, - 1278, - 1, - 0, - 0, - 0, - 215, - 1282, - 1, - 0, - 0, - 0, - 217, - 1289, - 1, - 0, - 0, - 0, - 219, - 1296, - 1, - 0, - 0, - 0, - 221, - 1302, - 1, - 0, - 0, - 0, - 223, - 1307, - 1, - 0, - 0, - 0, - 225, - 1316, - 1, - 0, - 0, - 0, - 227, - 1320, - 1, - 0, - 0, - 0, - 229, - 1323, - 1, - 0, - 0, - 0, - 231, - 1327, - 1, - 0, - 0, - 0, - 233, - 1332, - 1, - 0, - 0, - 0, - 235, - 1338, - 1, - 0, - 0, - 0, - 237, - 1345, - 1, - 0, - 0, - 0, - 239, - 1348, - 1, - 0, - 0, - 0, - 241, - 1357, - 1, - 0, - 0, - 0, - 243, - 1360, - 1, - 0, - 0, - 0, - 245, - 1366, - 1, - 0, - 0, - 0, - 247, - 1372, - 1, - 0, - 0, - 0, - 249, - 1380, - 1, - 0, - 0, - 0, - 251, - 1385, - 1, - 0, - 0, - 0, - 253, - 1395, - 1, - 0, - 0, - 0, - 255, - 1404, - 1, - 0, - 0, - 0, - 257, - 1414, - 1, - 0, - 0, - 0, - 259, - 1423, - 1, - 0, - 0, - 0, - 261, - 1431, - 1, - 0, - 0, - 0, - 263, - 1442, - 1, - 0, - 0, - 0, - 265, - 1450, - 1, - 0, - 0, - 0, - 267, - 1456, - 1, - 0, - 0, - 0, - 269, - 1463, - 1, - 0, - 0, - 0, - 271, - 1470, - 1, - 0, - 0, - 0, - 273, - 1477, - 1, - 0, - 0, - 0, - 275, - 1485, - 1, - 0, - 0, - 0, - 277, - 1493, - 1, - 0, - 0, - 0, - 279, - 1504, - 1, - 0, - 0, - 0, - 281, - 1510, - 1, - 0, - 0, - 0, - 283, - 1517, - 1, - 0, - 0, - 0, - 285, - 1521, - 1, - 0, - 0, - 0, - 287, - 1526, - 1, - 0, - 0, - 0, - 289, - 1533, - 1, - 0, - 0, - 0, - 291, - 1540, - 1, - 0, - 0, - 0, - 293, - 1547, - 1, - 0, - 0, - 0, - 295, - 1552, - 1, - 0, - 0, - 0, - 297, - 1558, - 1, - 0, - 0, - 0, - 299, - 1562, - 1, - 0, - 0, - 0, - 301, - 1571, - 1, - 0, - 0, - 0, - 303, - 1576, - 1, - 0, - 0, - 0, - 305, - 1583, - 1, - 0, - 0, - 0, - 307, - 1589, - 1, - 0, - 0, - 0, - 309, - 1594, - 1, - 0, - 0, - 0, - 311, - 1604, - 1, - 0, - 0, - 0, - 313, - 1609, - 1, - 0, - 0, - 0, - 315, - 1616, - 1, - 0, - 0, - 0, - 317, - 1623, - 1, - 0, - 0, - 0, - 319, - 1629, - 1, - 0, - 0, - 0, - 321, - 1636, - 1, - 0, - 0, - 0, - 323, - 1646, - 1, - 0, - 0, - 0, - 325, - 1651, - 1, - 0, - 0, - 0, - 327, - 1656, - 1, - 0, - 0, - 0, - 329, - 1661, - 1, - 0, - 0, - 0, - 331, - 1669, - 1, - 0, - 0, - 0, - 333, - 1679, - 1, - 0, - 0, - 0, - 335, - 1682, - 1, - 0, - 0, - 0, - 337, - 1686, - 1, - 0, - 0, - 0, - 339, - 1693, - 1, - 0, - 0, - 0, - 341, - 1702, - 1, - 0, - 0, - 0, - 343, - 1707, - 1, - 0, - 0, - 0, - 345, - 1716, - 1, - 0, - 0, - 0, - 347, - 1720, - 1, - 0, - 0, - 0, - 349, - 1725, - 1, - 0, - 0, - 0, - 351, - 1735, - 1, - 0, - 0, - 0, - 353, - 1741, - 1, - 0, - 0, - 0, - 355, - 1748, - 1, - 0, - 0, - 0, - 357, - 1752, - 1, - 0, - 0, - 0, - 359, - 1758, - 1, - 0, - 0, - 0, - 361, - 1763, - 1, - 0, - 0, - 0, - 363, - 1770, - 1, - 0, - 0, - 0, - 365, - 1775, - 1, - 0, - 0, - 0, - 367, - 1782, - 1, - 0, - 0, - 0, - 369, - 1788, - 1, - 0, - 0, - 0, - 371, - 1793, - 1, - 0, - 0, - 0, - 373, - 1798, - 1, - 0, - 0, - 0, - 375, - 1804, - 1, - 0, - 0, - 0, - 377, - 1811, - 1, - 0, - 0, - 0, - 379, - 1826, - 1, - 0, - 0, - 0, - 381, - 1828, - 1, - 0, - 0, - 0, - 383, - 1834, - 1, - 0, - 0, - 0, - 385, - 1869, - 1, - 0, - 0, - 0, - 387, - 1911, - 1, - 0, - 0, - 0, - 389, - 1989, - 1, - 0, - 0, - 0, - 391, - 1991, - 1, - 0, - 0, - 0, - 393, - 1998, - 1, - 0, - 0, - 0, - 395, - 2002, - 1, - 0, - 0, - 0, - 397, - 2009, - 1, - 0, - 0, - 0, - 399, - 2022, - 1, - 0, - 0, - 0, - 401, - 2035, - 1, - 0, - 0, - 0, - 403, - 2037, - 1, - 0, - 0, - 0, - 405, - 2039, - 1, - 0, - 0, - 0, - 407, - 2041, - 1, - 0, - 0, - 0, - 409, - 2043, - 1, - 0, - 0, - 0, - 411, - 2045, - 1, - 0, - 0, - 0, - 413, - 2047, - 1, - 0, - 0, - 0, - 415, - 2049, - 1, - 0, - 0, - 0, - 417, - 2051, - 1, - 0, - 0, - 0, - 419, - 2053, - 1, - 0, - 0, - 0, - 421, - 2055, - 1, - 0, - 0, - 0, - 423, - 2057, - 1, - 0, - 0, - 0, - 425, - 2059, - 1, - 0, - 0, - 0, - 427, - 2061, - 1, - 0, - 0, - 0, - 429, - 2063, - 1, - 0, - 0, - 0, - 431, - 2065, - 1, - 0, - 0, - 0, - 433, - 2067, - 1, - 0, - 0, - 0, - 435, - 2069, - 1, - 0, - 0, - 0, - 437, - 2071, - 1, - 0, - 0, - 0, - 439, - 2073, - 1, - 0, - 0, - 0, - 441, - 2075, - 1, - 0, - 0, - 0, - 443, - 2077, - 1, - 0, - 0, - 0, - 445, - 2079, - 1, - 0, - 0, - 0, - 447, - 2081, - 1, - 0, - 0, - 0, - 449, - 2083, - 1, - 0, - 0, - 0, - 451, - 2085, - 1, - 0, - 0, - 0, - 453, - 2087, - 1, - 0, - 0, - 0, - 455, - 2089, - 1, - 0, - 0, - 0, - 457, - 2091, - 1, - 0, - 0, - 0, - 459, - 2093, - 1, - 0, - 0, - 0, - 461, - 2095, - 1, - 0, - 0, - 0, - 463, - 2098, - 1, - 0, - 0, - 0, - 465, - 2100, - 1, - 0, - 0, - 0, - 467, - 2102, - 1, - 0, - 0, - 0, - 469, - 2104, - 1, - 0, - 0, - 0, - 471, - 2106, - 1, - 0, - 0, - 0, - 473, - 2108, - 1, - 0, - 0, - 0, - 475, - 2111, - 1, - 0, - 0, - 0, - 477, - 2113, - 1, - 0, - 0, - 0, - 479, - 2115, - 1, - 0, - 0, - 0, - 481, - 2117, - 1, - 0, - 0, - 0, - 483, - 2120, - 1, - 0, - 0, - 0, - 485, - 2122, - 1, - 0, - 0, - 0, - 487, - 2125, - 1, - 0, - 0, - 0, - 489, - 2127, - 1, - 0, - 0, - 0, - 491, - 2129, - 1, - 0, - 0, - 0, - 493, - 2132, - 1, - 0, - 0, - 0, - 495, - 2136, - 1, - 0, - 0, - 0, - 497, - 2138, - 1, - 0, - 0, - 0, - 499, - 2140, - 1, - 0, - 0, - 0, - 501, - 2142, - 1, - 0, - 0, - 0, - 503, - 2145, - 1, - 0, - 0, - 0, - 505, - 2151, - 1, - 0, - 0, - 0, - 507, - 2153, - 1, - 0, - 0, - 0, - 509, - 2157, - 1, - 0, - 0, - 0, - 511, - 2160, - 1, - 0, - 0, - 0, - 513, - 2163, - 1, - 0, - 0, - 0, - 515, - 2165, - 1, - 0, - 0, - 0, - 517, - 2167, - 1, - 0, - 0, - 0, - 519, - 2169, - 1, - 0, - 0, - 0, - 521, - 2171, - 1, - 0, - 0, - 0, - 523, - 2173, - 1, - 0, - 0, - 0, - 525, - 2175, - 1, - 0, - 0, - 0, - 527, - 2178, - 1, - 0, - 0, - 0, - 529, - 2180, - 1, - 0, - 0, - 0, - 531, - 2182, - 1, - 0, - 0, - 0, - 533, - 2184, - 1, - 0, - 0, - 0, - 535, - 2186, - 1, - 0, - 0, - 0, - 537, - 2188, - 1, - 0, - 0, - 0, - 539, - 2190, - 1, - 0, - 0, - 0, - 541, - 2204, - 1, - 0, - 0, - 0, - 543, - 2218, - 1, - 0, - 0, - 0, - 545, - 546, - 3, - 401, - 200, - 0, - 546, - 547, - 3, - 407, - 203, - 0, - 547, - 548, - 3, - 407, - 203, - 0, - 548, - 2, - 1, - 0, - 0, - 0, - 549, - 550, - 3, - 401, - 200, - 0, - 550, - 551, - 3, - 411, - 205, - 0, - 551, - 552, - 3, - 439, - 219, - 0, - 552, - 553, - 3, - 409, - 204, - 0, - 553, - 554, - 3, - 435, - 217, - 0, - 554, - 4, - 1, - 0, - 0, - 0, - 555, - 556, - 3, - 401, - 200, - 0, - 556, - 557, - 3, - 423, - 211, - 0, - 557, - 558, - 3, - 417, - 208, - 0, - 558, - 559, - 3, - 401, - 200, - 0, - 559, - 560, - 3, - 437, - 218, - 0, - 560, - 6, - 1, - 0, - 0, - 0, - 561, - 562, - 3, - 401, - 200, - 0, - 562, - 563, - 3, - 423, - 211, - 0, - 563, - 564, - 3, - 423, - 211, - 0, - 564, - 8, - 1, - 0, - 0, - 0, - 565, - 566, - 3, - 401, - 200, - 0, - 566, - 567, - 3, - 423, - 211, - 0, - 567, - 568, - 3, - 439, - 219, - 0, - 568, - 569, - 3, - 409, - 204, - 0, - 569, - 570, - 3, - 435, - 217, - 0, - 570, - 10, - 1, - 0, - 0, - 0, - 571, - 572, - 3, - 401, - 200, - 0, - 572, - 573, - 3, - 427, - 213, - 0, - 573, - 574, - 3, - 407, - 203, - 0, - 574, - 12, - 1, - 0, - 0, - 0, - 575, - 576, - 3, - 401, - 200, - 0, - 576, - 577, - 3, - 427, - 213, - 0, - 577, - 578, - 3, - 439, - 219, - 0, - 578, - 579, - 3, - 417, - 208, - 0, - 579, - 14, - 1, - 0, - 0, - 0, - 580, - 581, - 3, - 401, - 200, - 0, - 581, - 582, - 3, - 427, - 213, - 0, - 582, - 583, - 3, - 449, - 224, - 0, - 583, - 16, - 1, - 0, - 0, - 0, - 584, - 585, - 3, - 401, - 200, - 0, - 585, - 586, - 3, - 435, - 217, - 0, - 586, - 587, - 3, - 435, - 217, - 0, - 587, - 588, - 3, - 401, - 200, - 0, - 588, - 589, - 3, - 449, - 224, - 0, - 589, - 18, - 1, - 0, - 0, - 0, - 590, - 591, - 3, - 401, - 200, - 0, - 591, - 592, - 3, - 437, - 218, - 0, - 592, - 20, - 1, - 0, - 0, - 0, - 593, - 594, - 3, - 401, - 200, - 0, - 594, - 595, - 3, - 437, - 218, - 0, - 595, - 596, - 3, - 405, - 202, - 0, - 596, - 608, - 1, - 0, - 0, - 0, - 597, - 598, - 3, - 401, - 200, - 0, - 598, - 599, - 3, - 437, - 218, - 0, - 599, - 600, - 3, - 405, - 202, - 0, - 600, - 601, - 3, - 409, - 204, - 0, - 601, - 602, - 3, - 427, - 213, - 0, - 602, - 603, - 3, - 407, - 203, - 0, - 603, - 604, - 3, - 417, - 208, - 0, - 604, - 605, - 3, - 427, - 213, - 0, - 605, - 606, - 3, - 413, - 206, - 0, - 606, - 608, - 1, - 0, - 0, - 0, - 607, - 593, - 1, - 0, - 0, - 0, - 607, - 597, - 1, - 0, - 0, - 0, - 608, - 22, - 1, - 0, - 0, - 0, - 609, - 610, - 3, - 401, - 200, - 0, - 610, - 611, - 3, - 437, - 218, - 0, - 611, - 612, - 3, - 429, - 214, - 0, - 612, - 613, - 3, - 411, - 205, - 0, - 613, - 24, - 1, - 0, - 0, - 0, - 614, - 615, - 3, - 401, - 200, - 0, - 615, - 616, - 3, - 437, - 218, - 0, - 616, - 617, - 3, - 439, - 219, - 0, - 617, - 26, - 1, - 0, - 0, - 0, - 618, - 619, - 3, - 401, - 200, - 0, - 619, - 620, - 3, - 437, - 218, - 0, - 620, - 621, - 3, - 449, - 224, - 0, - 621, - 622, - 3, - 427, - 213, - 0, - 622, - 623, - 3, - 405, - 202, - 0, - 623, - 28, - 1, - 0, - 0, - 0, - 624, - 625, - 3, - 401, - 200, - 0, - 625, - 626, - 3, - 439, - 219, - 0, - 626, - 627, - 3, - 439, - 219, - 0, - 627, - 628, - 3, - 401, - 200, - 0, - 628, - 629, - 3, - 405, - 202, - 0, - 629, - 630, - 3, - 415, - 207, - 0, - 630, - 30, - 1, - 0, - 0, - 0, - 631, - 632, - 3, - 403, - 201, - 0, - 632, - 633, - 3, - 409, - 204, - 0, - 633, - 634, - 3, - 439, - 219, - 0, - 634, - 635, - 3, - 445, - 222, - 0, - 635, - 636, - 3, - 409, - 204, - 0, - 636, - 637, - 3, - 409, - 204, - 0, - 637, - 638, - 3, - 427, - 213, - 0, - 638, - 32, - 1, - 0, - 0, - 0, - 639, - 640, - 3, - 403, - 201, - 0, - 640, - 641, - 3, - 429, - 214, - 0, - 641, - 642, - 3, - 439, - 219, - 0, - 642, - 643, - 3, - 415, - 207, - 0, - 643, - 34, - 1, - 0, - 0, - 0, - 644, - 645, - 3, - 403, - 201, - 0, - 645, - 646, - 3, - 449, - 224, - 0, - 646, - 36, - 1, - 0, - 0, - 0, - 647, - 648, - 3, - 405, - 202, - 0, - 648, - 649, - 3, - 401, - 200, - 0, - 649, - 650, - 3, - 437, - 218, - 0, - 650, - 651, - 3, - 409, - 204, - 0, - 651, - 38, - 1, - 0, - 0, - 0, - 652, - 653, - 3, - 405, - 202, - 0, - 653, - 654, - 3, - 401, - 200, - 0, - 654, - 655, - 3, - 437, - 218, - 0, - 655, - 656, - 3, - 439, - 219, - 0, - 656, - 40, - 1, - 0, - 0, - 0, - 657, - 658, - 3, - 405, - 202, - 0, - 658, - 659, - 3, - 415, - 207, - 0, - 659, - 660, - 3, - 409, - 204, - 0, - 660, - 661, - 3, - 405, - 202, - 0, - 661, - 662, - 3, - 421, - 210, - 0, - 662, - 42, - 1, - 0, - 0, - 0, - 663, - 664, - 3, - 405, - 202, - 0, - 664, - 665, - 3, - 423, - 211, - 0, - 665, - 666, - 3, - 409, - 204, - 0, - 666, - 667, - 3, - 401, - 200, - 0, - 667, - 668, - 3, - 435, - 217, - 0, - 668, - 44, - 1, - 0, - 0, - 0, - 669, - 670, - 3, - 405, - 202, - 0, - 670, - 671, - 3, - 423, - 211, - 0, - 671, - 672, - 3, - 441, - 220, - 0, - 672, - 673, - 3, - 437, - 218, - 0, - 673, - 674, - 3, - 439, - 219, - 0, - 674, - 675, - 3, - 409, - 204, - 0, - 675, - 676, - 3, - 435, - 217, - 0, - 676, - 46, - 1, - 0, - 0, - 0, - 677, - 678, - 3, - 405, - 202, - 0, - 678, - 679, - 3, - 429, - 214, - 0, - 679, - 680, - 3, - 407, - 203, - 0, - 680, - 681, - 3, - 409, - 204, - 0, - 681, - 682, - 3, - 405, - 202, - 0, - 682, - 48, - 1, - 0, - 0, - 0, - 683, - 684, - 3, - 405, - 202, - 0, - 684, - 685, - 3, - 429, - 214, - 0, - 685, - 686, - 3, - 415, - 207, - 0, - 686, - 687, - 3, - 429, - 214, - 0, - 687, - 688, - 3, - 435, - 217, - 0, - 688, - 689, - 3, - 439, - 219, - 0, - 689, - 50, - 1, - 0, - 0, - 0, - 690, - 691, - 3, - 405, - 202, - 0, - 691, - 692, - 3, - 429, - 214, - 0, - 692, - 693, - 3, - 423, - 211, - 0, - 693, - 694, - 3, - 423, - 211, - 0, - 694, - 695, - 3, - 401, - 200, - 0, - 695, - 696, - 3, - 439, - 219, - 0, - 696, - 697, - 3, - 409, - 204, - 0, - 697, - 52, - 1, - 0, - 0, - 0, - 698, - 699, - 3, - 405, - 202, - 0, - 699, - 700, - 3, - 429, - 214, - 0, - 700, - 701, - 3, - 423, - 211, - 0, - 701, - 702, - 3, - 441, - 220, - 0, - 702, - 703, - 3, - 425, - 212, - 0, - 703, - 704, - 3, - 427, - 213, - 0, - 704, - 54, - 1, - 0, - 0, - 0, - 705, - 706, - 3, - 405, - 202, - 0, - 706, - 707, - 3, - 429, - 214, - 0, - 707, - 708, - 3, - 425, - 212, - 0, - 708, - 709, - 3, - 425, - 212, - 0, - 709, - 710, - 3, - 409, - 204, - 0, - 710, - 711, - 3, - 427, - 213, - 0, - 711, - 712, - 3, - 439, - 219, - 0, - 712, - 56, - 1, - 0, - 0, - 0, - 713, - 714, - 3, - 405, - 202, - 0, - 714, - 715, - 3, - 429, - 214, - 0, - 715, - 716, - 3, - 427, - 213, - 0, - 716, - 717, - 3, - 437, - 218, - 0, - 717, - 718, - 3, - 439, - 219, - 0, - 718, - 719, - 3, - 435, - 217, - 0, - 719, - 720, - 3, - 401, - 200, - 0, - 720, - 721, - 3, - 417, - 208, - 0, - 721, - 722, - 3, - 427, - 213, - 0, - 722, - 723, - 3, - 439, - 219, - 0, - 723, - 58, - 1, - 0, - 0, - 0, - 724, - 725, - 3, - 405, - 202, - 0, - 725, - 726, - 3, - 435, - 217, - 0, - 726, - 727, - 3, - 409, - 204, - 0, - 727, - 728, - 3, - 401, - 200, - 0, - 728, - 729, - 3, - 439, - 219, - 0, - 729, - 730, - 3, - 409, - 204, - 0, - 730, - 60, - 1, - 0, - 0, - 0, - 731, - 732, - 3, - 405, - 202, - 0, - 732, - 733, - 3, - 435, - 217, - 0, - 733, - 734, - 3, - 429, - 214, - 0, - 734, - 735, - 3, - 437, - 218, - 0, - 735, - 736, - 3, - 437, - 218, - 0, - 736, - 62, - 1, - 0, - 0, - 0, - 737, - 738, - 3, - 405, - 202, - 0, - 738, - 739, - 3, - 441, - 220, - 0, - 739, - 740, - 3, - 403, - 201, - 0, - 740, - 741, - 3, - 409, - 204, - 0, - 741, - 64, - 1, - 0, - 0, - 0, - 742, - 743, - 3, - 405, - 202, - 0, - 743, - 744, - 3, - 441, - 220, - 0, - 744, - 745, - 3, - 435, - 217, - 0, - 745, - 746, - 3, - 435, - 217, - 0, - 746, - 747, - 3, - 409, - 204, - 0, - 747, - 748, - 3, - 427, - 213, - 0, - 748, - 749, - 3, - 439, - 219, - 0, - 749, - 66, - 1, - 0, - 0, - 0, - 750, - 751, - 3, - 407, - 203, - 0, - 751, - 752, - 3, - 401, - 200, - 0, - 752, - 753, - 3, - 439, - 219, - 0, - 753, - 754, - 3, - 401, - 200, - 0, - 754, - 755, - 3, - 403, - 201, - 0, - 755, - 756, - 3, - 401, - 200, - 0, - 756, - 757, - 3, - 437, - 218, - 0, - 757, - 758, - 3, - 409, - 204, - 0, - 758, - 68, - 1, - 0, - 0, - 0, - 759, - 760, - 3, - 407, - 203, - 0, - 760, - 761, - 3, - 401, - 200, - 0, - 761, - 762, - 3, - 439, - 219, - 0, - 762, - 763, - 3, - 401, - 200, - 0, - 763, - 764, - 3, - 403, - 201, - 0, - 764, - 765, - 3, - 401, - 200, - 0, - 765, - 766, - 3, - 437, - 218, - 0, - 766, - 767, - 3, - 409, - 204, - 0, - 767, - 768, - 3, - 437, - 218, - 0, - 768, - 70, - 1, - 0, - 0, - 0, - 769, - 770, - 3, - 407, - 203, - 0, - 770, - 771, - 3, - 401, - 200, - 0, - 771, - 772, - 3, - 439, - 219, - 0, - 772, - 773, - 3, - 409, - 204, - 0, - 773, - 72, - 1, - 0, - 0, - 0, - 774, - 775, - 3, - 407, - 203, - 0, - 775, - 776, - 3, - 401, - 200, - 0, - 776, - 777, - 3, - 449, - 224, - 0, - 777, - 74, - 1, - 0, - 0, - 0, - 778, - 779, - 3, - 407, - 203, - 0, - 779, - 780, - 3, - 409, - 204, - 0, - 780, - 781, - 3, - 407, - 203, - 0, - 781, - 782, - 3, - 441, - 220, - 0, - 782, - 783, - 3, - 431, - 215, - 0, - 783, - 784, - 3, - 423, - 211, - 0, - 784, - 785, - 3, - 417, - 208, - 0, - 785, - 786, - 3, - 405, - 202, - 0, - 786, - 787, - 3, - 401, - 200, - 0, - 787, - 788, - 3, - 439, - 219, - 0, - 788, - 789, - 3, - 409, - 204, - 0, - 789, - 76, - 1, - 0, - 0, - 0, - 790, - 791, - 3, - 407, - 203, - 0, - 791, - 792, - 3, - 409, - 204, - 0, - 792, - 793, - 3, - 411, - 205, - 0, - 793, - 794, - 3, - 401, - 200, - 0, - 794, - 795, - 3, - 441, - 220, - 0, - 795, - 796, - 3, - 423, - 211, - 0, - 796, - 797, - 3, - 439, - 219, - 0, - 797, - 78, - 1, - 0, - 0, - 0, - 798, - 799, - 3, - 407, - 203, - 0, - 799, - 800, - 3, - 409, - 204, - 0, - 800, - 801, - 3, - 423, - 211, - 0, - 801, - 802, - 3, - 401, - 200, - 0, - 802, - 803, - 3, - 449, - 224, - 0, - 803, - 80, - 1, - 0, - 0, - 0, - 804, - 805, - 3, - 407, - 203, - 0, - 805, - 806, - 3, - 409, - 204, - 0, - 806, - 807, - 3, - 423, - 211, - 0, - 807, - 808, - 3, - 409, - 204, - 0, - 808, - 809, - 3, - 439, - 219, - 0, - 809, - 810, - 3, - 409, - 204, - 0, - 810, - 82, - 1, - 0, - 0, - 0, - 811, - 812, - 3, - 407, - 203, - 0, - 812, - 813, - 3, - 409, - 204, - 0, - 813, - 814, - 3, - 437, - 218, - 0, - 814, - 815, - 3, - 405, - 202, - 0, - 815, - 84, - 1, - 0, - 0, - 0, - 816, - 817, - 3, - 407, - 203, - 0, - 817, - 818, - 3, - 409, - 204, - 0, - 818, - 819, - 3, - 437, - 218, - 0, - 819, - 820, - 3, - 405, - 202, - 0, - 820, - 821, - 3, - 409, - 204, - 0, - 821, - 822, - 3, - 427, - 213, - 0, - 822, - 823, - 3, - 407, - 203, - 0, - 823, - 824, - 3, - 417, - 208, - 0, - 824, - 825, - 3, - 427, - 213, - 0, - 825, - 826, - 3, - 413, - 206, - 0, - 826, - 86, - 1, - 0, - 0, - 0, - 827, - 828, - 3, - 407, - 203, - 0, - 828, - 829, - 3, - 409, - 204, - 0, - 829, - 830, - 3, - 437, - 218, - 0, - 830, - 831, - 3, - 405, - 202, - 0, - 831, - 832, - 3, - 435, - 217, - 0, - 832, - 833, - 3, - 417, - 208, - 0, - 833, - 834, - 3, - 403, - 201, - 0, - 834, - 835, - 3, - 409, - 204, - 0, - 835, - 88, - 1, - 0, - 0, - 0, - 836, - 837, - 3, - 407, - 203, - 0, - 837, - 838, - 3, - 409, - 204, - 0, - 838, - 839, - 3, - 439, - 219, - 0, - 839, - 840, - 3, - 401, - 200, - 0, - 840, - 841, - 3, - 405, - 202, - 0, - 841, - 842, - 3, - 415, - 207, - 0, - 842, - 90, - 1, - 0, - 0, - 0, - 843, - 844, - 3, - 407, - 203, - 0, - 844, - 845, - 3, - 417, - 208, - 0, - 845, - 846, - 3, - 405, - 202, - 0, - 846, - 847, - 3, - 439, - 219, - 0, - 847, - 848, - 3, - 417, - 208, - 0, - 848, - 849, - 3, - 429, - 214, - 0, - 849, - 850, - 3, - 427, - 213, - 0, - 850, - 851, - 3, - 401, - 200, - 0, - 851, - 852, - 3, - 435, - 217, - 0, - 852, - 853, - 3, - 417, - 208, - 0, - 853, - 854, - 3, - 409, - 204, - 0, - 854, - 855, - 3, - 437, - 218, - 0, - 855, - 92, - 1, - 0, - 0, - 0, - 856, - 857, - 3, - 407, - 203, - 0, - 857, - 858, - 3, - 417, - 208, - 0, - 858, - 859, - 3, - 405, - 202, - 0, - 859, - 860, - 3, - 439, - 219, - 0, - 860, - 861, - 3, - 417, - 208, - 0, - 861, - 862, - 3, - 429, - 214, - 0, - 862, - 863, - 3, - 427, - 213, - 0, - 863, - 864, - 3, - 401, - 200, - 0, - 864, - 865, - 3, - 435, - 217, - 0, - 865, - 866, - 3, - 449, - 224, - 0, - 866, - 94, - 1, - 0, - 0, - 0, - 867, - 868, - 3, - 407, - 203, - 0, - 868, - 869, - 3, - 417, - 208, - 0, - 869, - 870, - 3, - 437, - 218, - 0, - 870, - 871, - 3, - 421, - 210, - 0, - 871, - 96, - 1, - 0, - 0, - 0, - 872, - 873, - 3, - 407, - 203, - 0, - 873, - 874, - 3, - 417, - 208, - 0, - 874, - 875, - 3, - 437, - 218, - 0, - 875, - 876, - 3, - 439, - 219, - 0, - 876, - 877, - 3, - 417, - 208, - 0, - 877, - 878, - 3, - 427, - 213, - 0, - 878, - 879, - 3, - 405, - 202, - 0, - 879, - 880, - 3, - 439, - 219, - 0, - 880, - 98, - 1, - 0, - 0, - 0, - 881, - 882, - 3, - 407, - 203, - 0, - 882, - 883, - 3, - 417, - 208, - 0, - 883, - 884, - 3, - 437, - 218, - 0, - 884, - 885, - 3, - 439, - 219, - 0, - 885, - 886, - 3, - 435, - 217, - 0, - 886, - 887, - 3, - 417, - 208, - 0, - 887, - 888, - 3, - 403, - 201, - 0, - 888, - 889, - 3, - 441, - 220, - 0, - 889, - 890, - 3, - 439, - 219, - 0, - 890, - 891, - 3, - 409, - 204, - 0, - 891, - 892, - 3, - 407, - 203, - 0, - 892, - 100, - 1, - 0, - 0, - 0, - 893, - 894, - 3, - 407, - 203, - 0, - 894, - 895, - 3, - 435, - 217, - 0, - 895, - 896, - 3, - 429, - 214, - 0, - 896, - 897, - 3, - 431, - 215, - 0, - 897, - 102, - 1, - 0, - 0, - 0, - 898, - 899, - 3, - 409, - 204, - 0, - 899, - 900, - 3, - 423, - 211, - 0, - 900, - 901, - 3, - 437, - 218, - 0, - 901, - 902, - 3, - 409, - 204, - 0, - 902, - 104, - 1, - 0, - 0, - 0, - 903, - 904, - 3, - 409, - 204, - 0, - 904, - 905, - 3, - 427, - 213, - 0, - 905, - 906, - 3, - 407, - 203, - 0, - 906, - 106, - 1, - 0, - 0, - 0, - 907, - 908, - 3, - 409, - 204, - 0, - 908, - 909, - 3, - 427, - 213, - 0, - 909, - 910, - 3, - 413, - 206, - 0, - 910, - 911, - 3, - 417, - 208, - 0, - 911, - 912, - 3, - 427, - 213, - 0, - 912, - 913, - 3, - 409, - 204, - 0, - 913, - 108, - 1, - 0, - 0, - 0, - 914, - 915, - 3, - 409, - 204, - 0, - 915, - 916, - 3, - 443, - 221, - 0, - 916, - 917, - 3, - 409, - 204, - 0, - 917, - 918, - 3, - 427, - 213, - 0, - 918, - 919, - 3, - 439, - 219, - 0, - 919, - 920, - 3, - 437, - 218, - 0, - 920, - 110, - 1, - 0, - 0, - 0, - 921, - 922, - 3, - 409, - 204, - 0, - 922, - 923, - 3, - 447, - 223, - 0, - 923, - 924, - 3, - 417, - 208, - 0, - 924, - 925, - 3, - 437, - 218, - 0, - 925, - 926, - 3, - 439, - 219, - 0, - 926, - 927, - 3, - 437, - 218, - 0, - 927, - 112, - 1, - 0, - 0, - 0, - 928, - 929, - 3, - 409, - 204, - 0, - 929, - 930, - 3, - 447, - 223, - 0, - 930, - 931, - 3, - 431, - 215, - 0, - 931, - 932, - 3, - 423, - 211, - 0, - 932, - 933, - 3, - 401, - 200, - 0, - 933, - 934, - 3, - 417, - 208, - 0, - 934, - 935, - 3, - 427, - 213, - 0, - 935, - 114, - 1, - 0, - 0, - 0, - 936, - 937, - 3, - 409, - 204, - 0, - 937, - 938, - 3, - 447, - 223, - 0, - 938, - 939, - 3, - 431, - 215, - 0, - 939, - 940, - 3, - 435, - 217, - 0, - 940, - 941, - 3, - 409, - 204, - 0, - 941, - 942, - 3, - 437, - 218, - 0, - 942, - 943, - 3, - 437, - 218, - 0, - 943, - 944, - 3, - 417, - 208, - 0, - 944, - 945, - 3, - 429, - 214, - 0, - 945, - 946, - 3, - 427, - 213, - 0, - 946, - 116, - 1, - 0, - 0, - 0, - 947, - 948, - 3, - 409, - 204, - 0, - 948, - 949, - 3, - 447, - 223, - 0, - 949, - 950, - 3, - 439, - 219, - 0, - 950, - 951, - 3, - 435, - 217, - 0, - 951, - 952, - 3, - 401, - 200, - 0, - 952, - 953, - 3, - 405, - 202, - 0, - 953, - 954, - 3, - 439, - 219, - 0, - 954, - 118, - 1, - 0, - 0, - 0, - 955, - 956, - 3, - 411, - 205, - 0, - 956, - 957, - 3, - 409, - 204, - 0, - 957, - 958, - 3, - 439, - 219, - 0, - 958, - 959, - 3, - 405, - 202, - 0, - 959, - 960, - 3, - 415, - 207, - 0, - 960, - 961, - 3, - 409, - 204, - 0, - 961, - 962, - 3, - 437, - 218, - 0, - 962, - 120, - 1, - 0, - 0, - 0, - 963, - 964, - 3, - 411, - 205, - 0, - 964, - 965, - 3, - 417, - 208, - 0, - 965, - 966, - 3, - 427, - 213, - 0, - 966, - 967, - 3, - 401, - 200, - 0, - 967, - 968, - 3, - 423, - 211, - 0, - 968, - 122, - 1, - 0, - 0, - 0, - 969, - 970, - 3, - 411, - 205, - 0, - 970, - 971, - 3, - 417, - 208, - 0, - 971, - 972, - 3, - 435, - 217, - 0, - 972, - 973, - 3, - 437, - 218, - 0, - 973, - 974, - 3, - 439, - 219, - 0, - 974, - 124, - 1, - 0, - 0, - 0, - 975, - 976, - 3, - 411, - 205, - 0, - 976, - 977, - 3, - 423, - 211, - 0, - 977, - 978, - 3, - 441, - 220, - 0, - 978, - 979, - 3, - 437, - 218, - 0, - 979, - 980, - 3, - 415, - 207, - 0, - 980, - 126, - 1, - 0, - 0, - 0, - 981, - 982, - 3, - 411, - 205, - 0, - 982, - 983, - 3, - 429, - 214, - 0, - 983, - 984, - 3, - 423, - 211, - 0, - 984, - 985, - 3, - 423, - 211, - 0, - 985, - 986, - 3, - 429, - 214, - 0, - 986, - 987, - 3, - 445, - 222, - 0, - 987, - 988, - 3, - 417, - 208, - 0, - 988, - 989, - 3, - 427, - 213, - 0, - 989, - 990, - 3, - 413, - 206, - 0, - 990, - 128, - 1, - 0, - 0, - 0, - 991, - 992, - 3, - 411, - 205, - 0, - 992, - 993, - 3, - 429, - 214, - 0, - 993, - 994, - 3, - 435, - 217, - 0, - 994, - 130, - 1, - 0, - 0, - 0, - 995, - 996, - 3, - 411, - 205, - 0, - 996, - 997, - 3, - 429, - 214, - 0, - 997, - 998, - 3, - 435, - 217, - 0, - 998, - 999, - 3, - 425, - 212, - 0, - 999, - 1000, - 3, - 401, - 200, - 0, - 1000, - 1001, - 3, - 439, - 219, - 0, - 1001, - 132, - 1, - 0, - 0, - 0, - 1002, - 1003, - 3, - 411, - 205, - 0, - 1003, - 1004, - 3, - 435, - 217, - 0, - 1004, - 1005, - 3, - 409, - 204, - 0, - 1005, - 1006, - 3, - 409, - 204, - 0, - 1006, - 1007, - 3, - 451, - 225, - 0, - 1007, - 1008, - 3, - 409, - 204, - 0, - 1008, - 134, - 1, - 0, - 0, - 0, - 1009, - 1010, - 3, - 411, - 205, - 0, - 1010, - 1011, - 3, - 435, - 217, - 0, - 1011, - 1012, - 3, - 429, - 214, - 0, - 1012, - 1013, - 3, - 425, - 212, - 0, - 1013, - 136, - 1, - 0, - 0, - 0, - 1014, - 1015, - 3, - 411, - 205, - 0, - 1015, - 1016, - 3, - 441, - 220, - 0, - 1016, - 1017, - 3, - 423, - 211, - 0, - 1017, - 1018, - 3, - 423, - 211, - 0, - 1018, - 138, - 1, - 0, - 0, - 0, - 1019, - 1020, - 3, - 411, - 205, - 0, - 1020, - 1021, - 3, - 441, - 220, - 0, - 1021, - 1022, - 3, - 427, - 213, - 0, - 1022, - 1023, - 3, - 405, - 202, - 0, - 1023, - 1024, - 3, - 439, - 219, - 0, - 1024, - 1025, - 3, - 417, - 208, - 0, - 1025, - 1026, - 3, - 429, - 214, - 0, - 1026, - 1027, - 3, - 427, - 213, - 0, - 1027, - 140, - 1, - 0, - 0, - 0, - 1028, - 1029, - 3, - 413, - 206, - 0, - 1029, - 1030, - 3, - 423, - 211, - 0, - 1030, - 1031, - 3, - 429, - 214, - 0, - 1031, - 1032, - 3, - 403, - 201, - 0, - 1032, - 1033, - 3, - 401, - 200, - 0, - 1033, - 1034, - 3, - 423, - 211, - 0, - 1034, - 142, - 1, - 0, - 0, - 0, - 1035, - 1036, - 3, - 413, - 206, - 0, - 1036, - 1037, - 3, - 435, - 217, - 0, - 1037, - 1038, - 3, - 401, - 200, - 0, - 1038, - 1039, - 3, - 427, - 213, - 0, - 1039, - 1040, - 3, - 441, - 220, - 0, - 1040, - 1041, - 3, - 423, - 211, - 0, - 1041, - 1042, - 3, - 401, - 200, - 0, - 1042, - 1043, - 3, - 435, - 217, - 0, - 1043, - 1044, - 3, - 417, - 208, - 0, - 1044, - 1045, - 3, - 439, - 219, - 0, - 1045, - 1046, - 3, - 449, - 224, - 0, - 1046, - 144, - 1, - 0, - 0, - 0, - 1047, - 1048, - 3, - 413, - 206, - 0, - 1048, - 1049, - 3, - 435, - 217, - 0, - 1049, - 1050, - 3, - 429, - 214, - 0, - 1050, - 1051, - 3, - 441, - 220, - 0, - 1051, - 1052, - 3, - 431, - 215, - 0, - 1052, - 146, - 1, - 0, - 0, - 0, - 1053, - 1054, - 3, - 415, - 207, - 0, - 1054, - 1055, - 3, - 401, - 200, - 0, - 1055, - 1056, - 3, - 443, - 221, - 0, - 1056, - 1057, - 3, - 417, - 208, - 0, - 1057, - 1058, - 3, - 427, - 213, - 0, - 1058, - 1059, - 3, - 413, - 206, - 0, - 1059, - 148, - 1, - 0, - 0, - 0, - 1060, - 1061, - 3, - 415, - 207, - 0, - 1061, - 1062, - 3, - 417, - 208, - 0, - 1062, - 1063, - 3, - 409, - 204, - 0, - 1063, - 1064, - 3, - 435, - 217, - 0, - 1064, - 1065, - 3, - 401, - 200, - 0, - 1065, - 1066, - 3, - 435, - 217, - 0, - 1066, - 1067, - 3, - 405, - 202, - 0, - 1067, - 1068, - 3, - 415, - 207, - 0, - 1068, - 1069, - 3, - 417, - 208, - 0, - 1069, - 1070, - 3, - 405, - 202, - 0, - 1070, - 1071, - 3, - 401, - 200, - 0, - 1071, - 1072, - 3, - 423, - 211, - 0, - 1072, - 150, - 1, - 0, - 0, - 0, - 1073, - 1074, - 3, - 415, - 207, - 0, - 1074, - 1075, - 3, - 429, - 214, - 0, - 1075, - 1076, - 3, - 441, - 220, - 0, - 1076, - 1077, - 3, - 435, - 217, - 0, - 1077, - 152, - 1, - 0, - 0, - 0, - 1078, - 1079, - 3, - 417, - 208, - 0, - 1079, - 1080, - 3, - 407, - 203, - 0, - 1080, - 154, - 1, - 0, - 0, - 0, - 1081, - 1082, - 3, - 417, - 208, - 0, - 1082, - 1083, - 3, - 411, - 205, - 0, - 1083, - 156, - 1, - 0, - 0, - 0, - 1084, - 1085, - 3, - 417, - 208, - 0, - 1085, - 1086, - 3, - 423, - 211, - 0, - 1086, - 1087, - 3, - 417, - 208, - 0, - 1087, - 1088, - 3, - 421, - 210, - 0, - 1088, - 1089, - 3, - 409, - 204, - 0, - 1089, - 158, - 1, - 0, - 0, - 0, - 1090, - 1091, - 3, - 417, - 208, - 0, - 1091, - 1092, - 3, - 427, - 213, - 0, - 1092, - 160, - 1, - 0, - 0, - 0, - 1093, - 1094, - 3, - 417, - 208, - 0, - 1094, - 1095, - 3, - 427, - 213, - 0, - 1095, - 1096, - 3, - 407, - 203, - 0, - 1096, - 1097, - 3, - 409, - 204, - 0, - 1097, - 1098, - 3, - 447, - 223, - 0, - 1098, - 162, - 1, - 0, - 0, - 0, - 1099, - 1100, - 3, - 417, - 208, - 0, - 1100, - 1101, - 3, - 427, - 213, - 0, - 1101, - 1102, - 3, - 411, - 205, - 0, - 1102, - 1113, - 1, - 0, - 0, - 0, - 1103, - 1104, - 3, - 417, - 208, - 0, - 1104, - 1105, - 3, - 427, - 213, - 0, - 1105, - 1106, - 3, - 411, - 205, - 0, - 1106, - 1107, - 3, - 417, - 208, - 0, - 1107, - 1108, - 3, - 427, - 213, - 0, - 1108, - 1109, - 3, - 417, - 208, - 0, - 1109, - 1110, - 3, - 439, - 219, - 0, - 1110, - 1111, - 3, - 449, - 224, - 0, - 1111, - 1113, - 1, - 0, - 0, - 0, - 1112, - 1099, - 1, - 0, - 0, - 0, - 1112, - 1103, - 1, - 0, - 0, - 0, - 1113, - 164, - 1, - 0, - 0, - 0, - 1114, - 1115, - 3, - 417, - 208, - 0, - 1115, - 1116, - 3, - 427, - 213, - 0, - 1116, - 1117, - 3, - 419, - 209, - 0, - 1117, - 1118, - 3, - 409, - 204, - 0, - 1118, - 1119, - 3, - 405, - 202, - 0, - 1119, - 1120, - 3, - 439, - 219, - 0, - 1120, - 1121, - 3, - 417, - 208, - 0, - 1121, - 1122, - 3, - 443, - 221, - 0, - 1122, - 1123, - 3, - 409, - 204, - 0, - 1123, - 166, - 1, - 0, - 0, - 0, - 1124, - 1125, - 3, - 417, - 208, - 0, - 1125, - 1126, - 3, - 427, - 213, - 0, - 1126, - 1127, - 3, - 427, - 213, - 0, - 1127, - 1128, - 3, - 409, - 204, - 0, - 1128, - 1129, - 3, - 435, - 217, - 0, - 1129, - 168, - 1, - 0, - 0, - 0, - 1130, - 1131, - 3, - 417, - 208, - 0, - 1131, - 1132, - 3, - 427, - 213, - 0, - 1132, - 1133, - 3, - 437, - 218, - 0, - 1133, - 1134, - 3, - 409, - 204, - 0, - 1134, - 1135, - 3, - 435, - 217, - 0, - 1135, - 1136, - 3, - 439, - 219, - 0, - 1136, - 170, - 1, - 0, - 0, - 0, - 1137, - 1138, - 3, - 417, - 208, - 0, - 1138, - 1139, - 3, - 427, - 213, - 0, - 1139, - 1140, - 3, - 439, - 219, - 0, - 1140, - 1141, - 3, - 409, - 204, - 0, - 1141, - 1142, - 3, - 435, - 217, - 0, - 1142, - 1143, - 3, - 443, - 221, - 0, - 1143, - 1144, - 3, - 401, - 200, - 0, - 1144, - 1145, - 3, - 423, - 211, - 0, - 1145, - 172, - 1, - 0, - 0, - 0, - 1146, - 1147, - 3, - 417, - 208, - 0, - 1147, - 1148, - 3, - 427, - 213, - 0, - 1148, - 1149, - 3, - 439, - 219, - 0, - 1149, - 1150, - 3, - 429, - 214, - 0, - 1150, - 174, - 1, - 0, - 0, - 0, - 1151, - 1152, - 3, - 417, - 208, - 0, - 1152, - 1153, - 3, - 437, - 218, - 0, - 1153, - 176, - 1, - 0, - 0, - 0, - 1154, - 1155, - 3, - 417, - 208, - 0, - 1155, - 1156, - 3, - 437, - 218, - 0, - 1156, - 1157, - 3, - 537, - 268, - 0, - 1157, - 1158, - 3, - 429, - 214, - 0, - 1158, - 1159, - 3, - 403, - 201, - 0, - 1159, - 1160, - 3, - 419, - 209, - 0, - 1160, - 1161, - 3, - 409, - 204, - 0, - 1161, - 1162, - 3, - 405, - 202, - 0, - 1162, - 1163, - 3, - 439, - 219, - 0, - 1163, - 1164, - 3, - 537, - 268, - 0, - 1164, - 1165, - 3, - 417, - 208, - 0, - 1165, - 1166, - 3, - 407, - 203, - 0, - 1166, - 178, - 1, - 0, - 0, - 0, - 1167, - 1168, - 3, - 419, - 209, - 0, - 1168, - 1169, - 3, - 429, - 214, - 0, - 1169, - 1170, - 3, - 417, - 208, - 0, - 1170, - 1171, - 3, - 427, - 213, - 0, - 1171, - 180, - 1, - 0, - 0, - 0, - 1172, - 1173, - 3, - 421, - 210, - 0, - 1173, - 1174, - 3, - 409, - 204, - 0, - 1174, - 1175, - 3, - 449, - 224, - 0, - 1175, - 182, - 1, - 0, - 0, - 0, - 1176, - 1177, - 3, - 421, - 210, - 0, - 1177, - 1178, - 3, - 417, - 208, - 0, - 1178, - 1179, - 3, - 423, - 211, - 0, - 1179, - 1180, - 3, - 423, - 211, - 0, - 1180, - 184, - 1, - 0, - 0, - 0, - 1181, - 1182, - 3, - 423, - 211, - 0, - 1182, - 1183, - 3, - 401, - 200, - 0, - 1183, - 1184, - 3, - 437, - 218, - 0, - 1184, - 1185, - 3, - 439, - 219, - 0, - 1185, - 186, - 1, - 0, - 0, - 0, - 1186, - 1187, - 3, - 423, - 211, - 0, - 1187, - 1188, - 3, - 401, - 200, - 0, - 1188, - 1189, - 3, - 449, - 224, - 0, - 1189, - 1190, - 3, - 429, - 214, - 0, - 1190, - 1191, - 3, - 441, - 220, - 0, - 1191, - 1192, - 3, - 439, - 219, - 0, - 1192, - 188, - 1, - 0, - 0, - 0, - 1193, - 1194, - 3, - 423, - 211, - 0, - 1194, - 1195, - 3, - 409, - 204, - 0, - 1195, - 1196, - 3, - 401, - 200, - 0, - 1196, - 1197, - 3, - 407, - 203, - 0, - 1197, - 1198, - 3, - 417, - 208, - 0, - 1198, - 1199, - 3, - 427, - 213, - 0, - 1199, - 1200, - 3, - 413, - 206, - 0, - 1200, - 190, - 1, - 0, - 0, - 0, - 1201, - 1202, - 3, - 423, - 211, - 0, - 1202, - 1203, - 3, - 409, - 204, - 0, - 1203, - 1204, - 3, - 411, - 205, - 0, - 1204, - 1205, - 3, - 439, - 219, - 0, - 1205, - 192, - 1, - 0, - 0, - 0, - 1206, - 1207, - 3, - 423, - 211, - 0, - 1207, - 1208, - 3, - 417, - 208, - 0, - 1208, - 1209, - 3, - 411, - 205, - 0, - 1209, - 1210, - 3, - 409, - 204, - 0, - 1210, - 1211, - 3, - 439, - 219, - 0, - 1211, - 1212, - 3, - 417, - 208, - 0, - 1212, - 1213, - 3, - 425, - 212, - 0, - 1213, - 1214, - 3, - 409, - 204, - 0, - 1214, - 194, - 1, - 0, - 0, - 0, - 1215, - 1216, - 3, - 423, - 211, - 0, - 1216, - 1217, - 3, - 417, - 208, - 0, - 1217, - 1218, - 3, - 421, - 210, - 0, - 1218, - 1219, - 3, - 409, - 204, - 0, - 1219, - 196, - 1, - 0, - 0, - 0, - 1220, - 1221, - 3, - 423, - 211, - 0, - 1221, - 1222, - 3, - 417, - 208, - 0, - 1222, - 1223, - 3, - 425, - 212, - 0, - 1223, - 1224, - 3, - 417, - 208, - 0, - 1224, - 1225, - 3, - 439, - 219, - 0, - 1225, - 198, - 1, - 0, - 0, - 0, - 1226, - 1227, - 3, - 423, - 211, - 0, - 1227, - 1228, - 3, - 417, - 208, - 0, - 1228, - 1229, - 3, - 443, - 221, - 0, - 1229, - 1230, - 3, - 409, - 204, - 0, - 1230, - 200, - 1, - 0, - 0, - 0, - 1231, - 1232, - 3, - 423, - 211, - 0, - 1232, - 1233, - 3, - 429, - 214, - 0, - 1233, - 1234, - 3, - 405, - 202, - 0, - 1234, - 1235, - 3, - 401, - 200, - 0, - 1235, - 1236, - 3, - 423, - 211, - 0, - 1236, - 202, - 1, - 0, - 0, - 0, - 1237, - 1238, - 3, - 423, - 211, - 0, - 1238, - 1239, - 3, - 429, - 214, - 0, - 1239, - 1240, - 3, - 413, - 206, - 0, - 1240, - 1241, - 3, - 437, - 218, - 0, - 1241, - 204, - 1, - 0, - 0, - 0, - 1242, - 1243, - 3, - 425, - 212, - 0, - 1243, - 1244, - 3, - 401, - 200, - 0, - 1244, - 1245, - 3, - 439, - 219, - 0, - 1245, - 1246, - 3, - 409, - 204, - 0, - 1246, - 1247, - 3, - 435, - 217, - 0, - 1247, - 1248, - 3, - 417, - 208, - 0, - 1248, - 1249, - 3, - 401, - 200, - 0, - 1249, - 1250, - 3, - 423, - 211, - 0, - 1250, - 1251, - 3, - 417, - 208, - 0, - 1251, - 1252, - 3, - 451, - 225, - 0, - 1252, - 1253, - 3, - 409, - 204, - 0, - 1253, - 206, - 1, - 0, - 0, - 0, - 1254, - 1255, - 3, - 425, - 212, - 0, - 1255, - 1256, - 3, - 401, - 200, - 0, - 1256, - 1257, - 3, - 439, - 219, - 0, - 1257, - 1258, - 3, - 409, - 204, - 0, - 1258, - 1259, - 3, - 435, - 217, - 0, - 1259, - 1260, - 3, - 417, - 208, - 0, - 1260, - 1261, - 3, - 401, - 200, - 0, - 1261, - 1262, - 3, - 423, - 211, - 0, - 1262, - 1263, - 3, - 417, - 208, - 0, - 1263, - 1264, - 3, - 451, - 225, - 0, - 1264, - 1265, - 3, - 409, - 204, - 0, - 1265, - 1266, - 3, - 407, - 203, - 0, - 1266, - 208, - 1, - 0, - 0, - 0, - 1267, - 1268, - 3, - 425, - 212, - 0, - 1268, - 1269, - 3, - 401, - 200, - 0, - 1269, - 1270, - 3, - 447, - 223, - 0, - 1270, - 210, - 1, - 0, - 0, - 0, - 1271, - 1272, - 3, - 425, - 212, - 0, - 1272, - 1273, - 3, - 409, - 204, - 0, - 1273, - 1274, - 3, - 435, - 217, - 0, - 1274, - 1275, - 3, - 413, - 206, - 0, - 1275, - 1276, - 3, - 409, - 204, - 0, - 1276, - 1277, - 3, - 437, - 218, - 0, - 1277, - 212, - 1, - 0, - 0, - 0, - 1278, - 1279, - 3, - 425, - 212, - 0, - 1279, - 1280, - 3, - 417, - 208, - 0, - 1280, - 1281, - 3, - 427, - 213, - 0, - 1281, - 214, - 1, - 0, - 0, - 0, - 1282, - 1283, - 3, - 425, - 212, - 0, - 1283, - 1284, - 3, - 417, - 208, - 0, - 1284, - 1285, - 3, - 427, - 213, - 0, - 1285, - 1286, - 3, - 441, - 220, - 0, - 1286, - 1287, - 3, - 439, - 219, - 0, - 1287, - 1288, - 3, - 409, - 204, - 0, - 1288, - 216, - 1, - 0, - 0, - 0, - 1289, - 1290, - 3, - 425, - 212, - 0, - 1290, - 1291, - 3, - 429, - 214, - 0, - 1291, - 1292, - 3, - 407, - 203, - 0, - 1292, - 1293, - 3, - 417, - 208, - 0, - 1293, - 1294, - 3, - 411, - 205, - 0, - 1294, - 1295, - 3, - 449, - 224, - 0, - 1295, - 218, - 1, - 0, - 0, - 0, - 1296, - 1297, - 3, - 425, - 212, - 0, - 1297, - 1298, - 3, - 429, - 214, - 0, - 1298, - 1299, - 3, - 427, - 213, - 0, - 1299, - 1300, - 3, - 439, - 219, - 0, - 1300, - 1301, - 3, - 415, - 207, - 0, - 1301, - 220, - 1, - 0, - 0, - 0, - 1302, - 1303, - 3, - 425, - 212, - 0, - 1303, - 1304, - 3, - 429, - 214, - 0, - 1304, - 1305, - 3, - 443, - 221, - 0, - 1305, - 1306, - 3, - 409, - 204, - 0, - 1306, - 222, - 1, - 0, - 0, - 0, - 1307, - 1308, - 3, - 425, - 212, - 0, - 1308, - 1309, - 3, - 441, - 220, - 0, - 1309, - 1310, - 3, - 439, - 219, - 0, - 1310, - 1311, - 3, - 401, - 200, - 0, - 1311, - 1312, - 3, - 439, - 219, - 0, - 1312, - 1313, - 3, - 417, - 208, - 0, - 1313, - 1314, - 3, - 429, - 214, - 0, - 1314, - 1315, - 3, - 427, - 213, - 0, - 1315, - 224, - 1, - 0, - 0, - 0, - 1316, - 1317, - 3, - 427, - 213, - 0, - 1317, - 1318, - 3, - 401, - 200, - 0, - 1318, - 1319, - 3, - 427, - 213, - 0, - 1319, - 226, - 1, - 0, - 0, - 0, - 1320, - 1321, - 3, - 427, - 213, - 0, - 1321, - 1322, - 3, - 429, - 214, - 0, - 1322, - 228, - 1, - 0, - 0, - 0, - 1323, - 1324, - 3, - 427, - 213, - 0, - 1324, - 1325, - 3, - 429, - 214, - 0, - 1325, - 1326, - 3, - 439, - 219, - 0, - 1326, - 230, - 1, - 0, - 0, - 0, - 1327, - 1328, - 3, - 427, - 213, - 0, - 1328, - 1329, - 3, - 441, - 220, - 0, - 1329, - 1330, - 3, - 423, - 211, - 0, - 1330, - 1331, - 3, - 423, - 211, - 0, - 1331, - 232, - 1, - 0, - 0, - 0, - 1332, - 1333, - 3, - 427, - 213, - 0, - 1333, - 1334, - 3, - 441, - 220, - 0, - 1334, - 1335, - 3, - 423, - 211, - 0, - 1335, - 1336, - 3, - 423, - 211, - 0, - 1336, - 1337, - 3, - 437, - 218, - 0, - 1337, - 234, - 1, - 0, - 0, - 0, - 1338, - 1339, - 3, - 429, - 214, - 0, - 1339, - 1340, - 3, - 411, - 205, - 0, - 1340, - 1341, - 3, - 411, - 205, - 0, - 1341, - 1342, - 3, - 437, - 218, - 0, - 1342, - 1343, - 3, - 409, - 204, - 0, - 1343, - 1344, - 3, - 439, - 219, - 0, - 1344, - 236, - 1, - 0, - 0, - 0, - 1345, - 1346, - 3, - 429, - 214, - 0, - 1346, - 1347, - 3, - 427, - 213, - 0, - 1347, - 238, - 1, - 0, - 0, - 0, - 1348, - 1349, - 3, - 429, - 214, - 0, - 1349, - 1350, - 3, - 431, - 215, - 0, - 1350, - 1351, - 3, - 439, - 219, - 0, - 1351, - 1352, - 3, - 417, - 208, - 0, - 1352, - 1353, - 3, - 425, - 212, - 0, - 1353, - 1354, - 3, - 417, - 208, - 0, - 1354, - 1355, - 3, - 451, - 225, - 0, - 1355, - 1356, - 3, - 409, - 204, - 0, - 1356, - 240, - 1, - 0, - 0, - 0, - 1357, - 1358, - 3, - 429, - 214, - 0, - 1358, - 1359, - 3, - 435, - 217, - 0, - 1359, - 242, - 1, - 0, - 0, - 0, - 1360, - 1361, - 3, - 429, - 214, - 0, - 1361, - 1362, - 3, - 435, - 217, - 0, - 1362, - 1363, - 3, - 407, - 203, - 0, - 1363, - 1364, - 3, - 409, - 204, - 0, - 1364, - 1365, - 3, - 435, - 217, - 0, - 1365, - 244, - 1, - 0, - 0, - 0, - 1366, - 1367, - 3, - 429, - 214, - 0, - 1367, - 1368, - 3, - 441, - 220, - 0, - 1368, - 1369, - 3, - 439, - 219, - 0, - 1369, - 1370, - 3, - 409, - 204, - 0, - 1370, - 1371, - 3, - 435, - 217, - 0, - 1371, - 246, - 1, - 0, - 0, - 0, - 1372, - 1373, - 3, - 429, - 214, - 0, - 1373, - 1374, - 3, - 441, - 220, - 0, - 1374, - 1375, - 3, - 439, - 219, - 0, - 1375, - 1376, - 3, - 411, - 205, - 0, - 1376, - 1377, - 3, - 417, - 208, - 0, - 1377, - 1378, - 3, - 423, - 211, - 0, - 1378, - 1379, - 3, - 409, - 204, - 0, - 1379, - 248, - 1, - 0, - 0, - 0, - 1380, - 1381, - 3, - 429, - 214, - 0, - 1381, - 1382, - 3, - 443, - 221, - 0, - 1382, - 1383, - 3, - 409, - 204, - 0, - 1383, - 1384, - 3, - 435, - 217, - 0, - 1384, - 250, - 1, - 0, - 0, - 0, - 1385, - 1386, - 3, - 431, - 215, - 0, - 1386, - 1387, - 3, - 401, - 200, - 0, - 1387, - 1388, - 3, - 435, - 217, - 0, - 1388, - 1389, - 3, - 439, - 219, - 0, - 1389, - 1390, - 3, - 417, - 208, - 0, - 1390, - 1391, - 3, - 439, - 219, - 0, - 1391, - 1392, - 3, - 417, - 208, - 0, - 1392, - 1393, - 3, - 429, - 214, - 0, - 1393, - 1394, - 3, - 427, - 213, - 0, - 1394, - 252, - 1, - 0, - 0, - 0, - 1395, - 1396, - 3, - 431, - 215, - 0, - 1396, - 1397, - 3, - 429, - 214, - 0, - 1397, - 1398, - 3, - 431, - 215, - 0, - 1398, - 1399, - 3, - 441, - 220, - 0, - 1399, - 1400, - 3, - 423, - 211, - 0, - 1400, - 1401, - 3, - 401, - 200, - 0, - 1401, - 1402, - 3, - 439, - 219, - 0, - 1402, - 1403, - 3, - 409, - 204, - 0, - 1403, - 254, - 1, - 0, - 0, - 0, - 1404, - 1405, - 3, - 431, - 215, - 0, - 1405, - 1406, - 3, - 435, - 217, - 0, - 1406, - 1407, - 3, - 409, - 204, - 0, - 1407, - 1408, - 3, - 405, - 202, - 0, - 1408, - 1409, - 3, - 409, - 204, - 0, - 1409, - 1410, - 3, - 407, - 203, - 0, - 1410, - 1411, - 3, - 417, - 208, - 0, - 1411, - 1412, - 3, - 427, - 213, - 0, - 1412, - 1413, - 3, - 413, - 206, - 0, - 1413, - 256, - 1, - 0, - 0, - 0, - 1414, - 1415, - 3, - 431, - 215, - 0, - 1415, - 1416, - 3, - 435, - 217, - 0, - 1416, - 1417, - 3, - 409, - 204, - 0, - 1417, - 1418, - 3, - 445, - 222, - 0, - 1418, - 1419, - 3, - 415, - 207, - 0, - 1419, - 1420, - 3, - 409, - 204, - 0, - 1420, - 1421, - 3, - 435, - 217, - 0, - 1421, - 1422, - 3, - 409, - 204, - 0, - 1422, - 258, - 1, - 0, - 0, - 0, - 1423, - 1424, - 3, - 431, - 215, - 0, - 1424, - 1425, - 3, - 435, - 217, - 0, - 1425, - 1426, - 3, - 417, - 208, - 0, - 1426, - 1427, - 3, - 425, - 212, - 0, - 1427, - 1428, - 3, - 401, - 200, - 0, - 1428, - 1429, - 3, - 435, - 217, - 0, - 1429, - 1430, - 3, - 449, - 224, - 0, - 1430, - 260, - 1, - 0, - 0, - 0, - 1431, - 1432, - 3, - 431, - 215, - 0, - 1432, - 1433, - 3, - 435, - 217, - 0, - 1433, - 1434, - 3, - 429, - 214, - 0, - 1434, - 1435, - 3, - 419, - 209, - 0, - 1435, - 1436, - 3, - 409, - 204, - 0, - 1436, - 1437, - 3, - 405, - 202, - 0, - 1437, - 1438, - 3, - 439, - 219, - 0, - 1438, - 1439, - 3, - 417, - 208, - 0, - 1439, - 1440, - 3, - 429, - 214, - 0, - 1440, - 1441, - 3, - 427, - 213, - 0, - 1441, - 262, - 1, - 0, - 0, - 0, - 1442, - 1443, - 3, - 433, - 216, - 0, - 1443, - 1444, - 3, - 441, - 220, - 0, - 1444, - 1445, - 3, - 401, - 200, - 0, - 1445, - 1446, - 3, - 435, - 217, - 0, - 1446, - 1447, - 3, - 439, - 219, - 0, - 1447, - 1448, - 3, - 409, - 204, - 0, - 1448, - 1449, - 3, - 435, - 217, - 0, - 1449, - 264, - 1, - 0, - 0, - 0, - 1450, - 1451, - 3, - 435, - 217, - 0, - 1451, - 1452, - 3, - 401, - 200, - 0, - 1452, - 1453, - 3, - 427, - 213, - 0, - 1453, - 1454, - 3, - 413, - 206, - 0, - 1454, - 1455, - 3, - 409, - 204, - 0, - 1455, - 266, - 1, - 0, - 0, - 0, - 1456, - 1457, - 3, - 435, - 217, - 0, - 1457, - 1458, - 3, - 409, - 204, - 0, - 1458, - 1459, - 3, - 423, - 211, - 0, - 1459, - 1460, - 3, - 429, - 214, - 0, - 1460, - 1461, - 3, - 401, - 200, - 0, - 1461, - 1462, - 3, - 407, - 203, - 0, - 1462, - 268, - 1, - 0, - 0, - 0, - 1463, - 1464, - 3, - 435, - 217, - 0, - 1464, - 1465, - 3, - 409, - 204, - 0, - 1465, - 1466, - 3, - 425, - 212, - 0, - 1466, - 1467, - 3, - 429, - 214, - 0, - 1467, - 1468, - 3, - 443, - 221, - 0, - 1468, - 1469, - 3, - 409, - 204, - 0, - 1469, - 270, - 1, - 0, - 0, - 0, - 1470, - 1471, - 3, - 435, - 217, - 0, - 1471, - 1472, - 3, - 409, - 204, - 0, - 1472, - 1473, - 3, - 427, - 213, - 0, - 1473, - 1474, - 3, - 401, - 200, - 0, - 1474, - 1475, - 3, - 425, - 212, - 0, - 1475, - 1476, - 3, - 409, - 204, - 0, - 1476, - 272, - 1, - 0, - 0, - 0, - 1477, - 1478, - 3, - 435, - 217, - 0, - 1478, - 1479, - 3, - 409, - 204, - 0, - 1479, - 1480, - 3, - 431, - 215, - 0, - 1480, - 1481, - 3, - 423, - 211, - 0, - 1481, - 1482, - 3, - 401, - 200, - 0, - 1482, - 1483, - 3, - 405, - 202, - 0, - 1483, - 1484, - 3, - 409, - 204, - 0, - 1484, - 274, - 1, - 0, - 0, - 0, - 1485, - 1486, - 3, - 435, - 217, - 0, - 1486, - 1487, - 3, - 409, - 204, - 0, - 1487, - 1488, - 3, - 431, - 215, - 0, - 1488, - 1489, - 3, - 423, - 211, - 0, - 1489, - 1490, - 3, - 417, - 208, - 0, - 1490, - 1491, - 3, - 405, - 202, - 0, - 1491, - 1492, - 3, - 401, - 200, - 0, - 1492, - 276, - 1, - 0, - 0, - 0, - 1493, - 1494, - 3, - 435, - 217, - 0, - 1494, - 1495, - 3, - 409, - 204, - 0, - 1495, - 1496, - 3, - 431, - 215, - 0, - 1496, - 1497, - 3, - 423, - 211, - 0, - 1497, - 1498, - 3, - 417, - 208, - 0, - 1498, - 1499, - 3, - 405, - 202, - 0, - 1499, - 1500, - 3, - 401, - 200, - 0, - 1500, - 1501, - 3, - 439, - 219, - 0, - 1501, - 1502, - 3, - 409, - 204, - 0, - 1502, - 1503, - 3, - 407, - 203, - 0, - 1503, - 278, - 1, - 0, - 0, - 0, - 1504, - 1505, - 3, - 435, - 217, - 0, - 1505, - 1506, - 3, - 417, - 208, - 0, - 1506, - 1507, - 3, - 413, - 206, - 0, - 1507, - 1508, - 3, - 415, - 207, - 0, - 1508, - 1509, - 3, - 439, - 219, - 0, - 1509, - 280, - 1, - 0, - 0, - 0, - 1510, - 1511, - 3, - 435, - 217, - 0, - 1511, - 1512, - 3, - 429, - 214, - 0, - 1512, - 1513, - 3, - 423, - 211, - 0, - 1513, - 1514, - 3, - 423, - 211, - 0, - 1514, - 1515, - 3, - 441, - 220, - 0, - 1515, - 1516, - 3, - 431, - 215, - 0, - 1516, - 282, - 1, - 0, - 0, - 0, - 1517, - 1518, - 3, - 435, - 217, - 0, - 1518, - 1519, - 3, - 429, - 214, - 0, - 1519, - 1520, - 3, - 445, - 222, - 0, - 1520, - 284, - 1, - 0, - 0, - 0, - 1521, - 1522, - 3, - 435, - 217, - 0, - 1522, - 1523, - 3, - 429, - 214, - 0, - 1523, - 1524, - 3, - 445, - 222, - 0, - 1524, - 1525, - 3, - 437, - 218, - 0, - 1525, - 286, - 1, - 0, - 0, - 0, - 1526, - 1527, - 3, - 437, - 218, - 0, - 1527, - 1528, - 3, - 401, - 200, - 0, - 1528, - 1529, - 3, - 425, - 212, - 0, - 1529, - 1530, - 3, - 431, - 215, - 0, - 1530, - 1531, - 3, - 423, - 211, - 0, - 1531, - 1532, - 3, - 409, - 204, - 0, - 1532, - 288, - 1, - 0, - 0, - 0, - 1533, - 1534, - 3, - 437, - 218, - 0, - 1534, - 1535, - 3, - 409, - 204, - 0, - 1535, - 1536, - 3, - 405, - 202, - 0, - 1536, - 1537, - 3, - 429, - 214, - 0, - 1537, - 1538, - 3, - 427, - 213, - 0, - 1538, - 1539, - 3, - 407, - 203, - 0, - 1539, - 290, - 1, - 0, - 0, - 0, - 1540, - 1541, - 3, - 437, - 218, - 0, - 1541, - 1542, - 3, - 409, - 204, - 0, - 1542, - 1543, - 3, - 423, - 211, - 0, - 1543, - 1544, - 3, - 409, - 204, - 0, - 1544, - 1545, - 3, - 405, - 202, - 0, - 1545, - 1546, - 3, - 439, - 219, - 0, - 1546, - 292, - 1, - 0, - 0, - 0, - 1547, - 1548, - 3, - 437, - 218, - 0, - 1548, - 1549, - 3, - 409, - 204, - 0, - 1549, - 1550, - 3, - 425, - 212, - 0, - 1550, - 1551, - 3, - 417, - 208, - 0, - 1551, - 294, - 1, - 0, - 0, - 0, - 1552, - 1553, - 3, - 437, - 218, - 0, - 1553, - 1554, - 3, - 409, - 204, - 0, - 1554, - 1555, - 3, - 427, - 213, - 0, - 1555, - 1556, - 3, - 407, - 203, - 0, - 1556, - 1557, - 3, - 437, - 218, - 0, - 1557, - 296, - 1, - 0, - 0, - 0, - 1558, - 1559, - 3, - 437, - 218, - 0, - 1559, - 1560, - 3, - 409, - 204, - 0, - 1560, - 1561, - 3, - 439, - 219, - 0, - 1561, - 298, - 1, - 0, - 0, - 0, - 1562, - 1563, - 3, - 437, - 218, - 0, - 1563, - 1564, - 3, - 409, - 204, - 0, - 1564, - 1565, - 3, - 439, - 219, - 0, - 1565, - 1566, - 3, - 439, - 219, - 0, - 1566, - 1567, - 3, - 417, - 208, - 0, - 1567, - 1568, - 3, - 427, - 213, - 0, - 1568, - 1569, - 3, - 413, - 206, - 0, - 1569, - 1570, - 3, - 437, - 218, - 0, - 1570, - 300, - 1, - 0, - 0, - 0, - 1571, - 1572, - 3, - 437, - 218, - 0, - 1572, - 1573, - 3, - 415, - 207, - 0, - 1573, - 1574, - 3, - 429, - 214, - 0, - 1574, - 1575, - 3, - 445, - 222, - 0, - 1575, - 302, - 1, - 0, - 0, - 0, - 1576, - 1577, - 3, - 437, - 218, - 0, - 1577, - 1578, - 3, - 429, - 214, - 0, - 1578, - 1579, - 3, - 441, - 220, - 0, - 1579, - 1580, - 3, - 435, - 217, - 0, - 1580, - 1581, - 3, - 405, - 202, - 0, - 1581, - 1582, - 3, - 409, - 204, - 0, - 1582, - 304, - 1, - 0, - 0, - 0, - 1583, - 1584, - 3, - 437, - 218, - 0, - 1584, - 1585, - 3, - 439, - 219, - 0, - 1585, - 1586, - 3, - 401, - 200, - 0, - 1586, - 1587, - 3, - 435, - 217, - 0, - 1587, - 1588, - 3, - 439, - 219, - 0, - 1588, - 306, - 1, - 0, - 0, - 0, - 1589, - 1590, - 3, - 437, - 218, - 0, - 1590, - 1591, - 3, - 439, - 219, - 0, - 1591, - 1592, - 3, - 429, - 214, - 0, - 1592, - 1593, - 3, - 431, - 215, - 0, - 1593, - 308, - 1, - 0, - 0, - 0, - 1594, - 1595, - 3, - 437, - 218, - 0, - 1595, - 1596, - 3, - 441, - 220, - 0, - 1596, - 1597, - 3, - 403, - 201, - 0, - 1597, - 1598, - 3, - 437, - 218, - 0, - 1598, - 1599, - 3, - 439, - 219, - 0, - 1599, - 1600, - 3, - 435, - 217, - 0, - 1600, - 1601, - 3, - 417, - 208, - 0, - 1601, - 1602, - 3, - 427, - 213, - 0, - 1602, - 1603, - 3, - 413, - 206, - 0, - 1603, - 310, - 1, - 0, - 0, - 0, - 1604, - 1605, - 3, - 437, - 218, - 0, - 1605, - 1606, - 3, - 449, - 224, - 0, - 1606, - 1607, - 3, - 427, - 213, - 0, - 1607, - 1608, - 3, - 405, - 202, - 0, - 1608, - 312, - 1, - 0, - 0, - 0, - 1609, - 1610, - 3, - 437, - 218, - 0, - 1610, - 1611, - 3, - 449, - 224, - 0, - 1611, - 1612, - 3, - 427, - 213, - 0, - 1612, - 1613, - 3, - 439, - 219, - 0, - 1613, - 1614, - 3, - 401, - 200, - 0, - 1614, - 1615, - 3, - 447, - 223, - 0, - 1615, - 314, - 1, - 0, - 0, - 0, - 1616, - 1617, - 3, - 437, - 218, - 0, - 1617, - 1618, - 3, - 449, - 224, - 0, - 1618, - 1619, - 3, - 437, - 218, - 0, - 1619, - 1620, - 3, - 439, - 219, - 0, - 1620, - 1621, - 3, - 409, - 204, - 0, - 1621, - 1622, - 3, - 425, - 212, - 0, - 1622, - 316, - 1, - 0, - 0, - 0, - 1623, - 1624, - 3, - 439, - 219, - 0, - 1624, - 1625, - 3, - 401, - 200, - 0, - 1625, - 1626, - 3, - 403, - 201, - 0, - 1626, - 1627, - 3, - 423, - 211, - 0, - 1627, - 1628, - 3, - 409, - 204, - 0, - 1628, - 318, - 1, - 0, - 0, - 0, - 1629, - 1630, - 3, - 439, - 219, - 0, - 1630, - 1631, - 3, - 401, - 200, - 0, - 1631, - 1632, - 3, - 403, - 201, - 0, - 1632, - 1633, - 3, - 423, - 211, - 0, - 1633, - 1634, - 3, - 409, - 204, - 0, - 1634, - 1635, - 3, - 437, - 218, - 0, - 1635, - 320, - 1, - 0, - 0, - 0, - 1636, - 1637, - 3, - 439, - 219, - 0, - 1637, - 1638, - 3, - 409, - 204, - 0, - 1638, - 1639, - 3, - 425, - 212, - 0, - 1639, - 1640, - 3, - 431, - 215, - 0, - 1640, - 1641, - 3, - 429, - 214, - 0, - 1641, - 1642, - 3, - 435, - 217, - 0, - 1642, - 1643, - 3, - 401, - 200, - 0, - 1643, - 1644, - 3, - 435, - 217, - 0, - 1644, - 1645, - 3, - 449, - 224, - 0, - 1645, - 322, - 1, - 0, - 0, - 0, - 1646, - 1647, - 3, - 439, - 219, - 0, - 1647, - 1648, - 3, - 409, - 204, - 0, - 1648, - 1649, - 3, - 437, - 218, - 0, - 1649, - 1650, - 3, - 439, - 219, - 0, - 1650, - 324, - 1, - 0, - 0, - 0, - 1651, - 1652, - 3, - 439, - 219, - 0, - 1652, - 1653, - 3, - 415, - 207, - 0, - 1653, - 1654, - 3, - 409, - 204, - 0, - 1654, - 1655, - 3, - 427, - 213, - 0, - 1655, - 326, - 1, - 0, - 0, - 0, - 1656, - 1657, - 3, - 439, - 219, - 0, - 1657, - 1658, - 3, - 417, - 208, - 0, - 1658, - 1659, - 3, - 409, - 204, - 0, - 1659, - 1660, - 3, - 437, - 218, - 0, - 1660, - 328, - 1, - 0, - 0, - 0, - 1661, - 1662, - 3, - 439, - 219, - 0, - 1662, - 1663, - 3, - 417, - 208, - 0, - 1663, - 1664, - 3, - 425, - 212, - 0, - 1664, - 1665, - 3, - 409, - 204, - 0, - 1665, - 1666, - 3, - 429, - 214, - 0, - 1666, - 1667, - 3, - 441, - 220, - 0, - 1667, - 1668, - 3, - 439, - 219, - 0, - 1668, - 330, - 1, - 0, - 0, - 0, - 1669, - 1670, - 3, - 439, - 219, - 0, - 1670, - 1671, - 3, - 417, - 208, - 0, - 1671, - 1672, - 3, - 425, - 212, - 0, - 1672, - 1673, - 3, - 409, - 204, - 0, - 1673, - 1674, - 3, - 437, - 218, - 0, - 1674, - 1675, - 3, - 439, - 219, - 0, - 1675, - 1676, - 3, - 401, - 200, - 0, - 1676, - 1677, - 3, - 425, - 212, - 0, - 1677, - 1678, - 3, - 431, - 215, - 0, - 1678, - 332, - 1, - 0, - 0, - 0, - 1679, - 1680, - 3, - 439, - 219, - 0, - 1680, - 1681, - 3, - 429, - 214, - 0, - 1681, - 334, - 1, - 0, - 0, - 0, - 1682, - 1683, - 3, - 439, - 219, - 0, - 1683, - 1684, - 3, - 429, - 214, - 0, - 1684, - 1685, - 3, - 431, - 215, - 0, - 1685, - 336, - 1, - 0, - 0, - 0, - 1686, - 1687, - 3, - 439, - 219, - 0, - 1687, - 1688, - 3, - 429, - 214, - 0, - 1688, - 1689, - 3, - 439, - 219, - 0, - 1689, - 1690, - 3, - 401, - 200, - 0, - 1690, - 1691, - 3, - 423, - 211, - 0, - 1691, - 1692, - 3, - 437, - 218, - 0, - 1692, - 338, - 1, - 0, - 0, - 0, - 1693, - 1694, - 3, - 439, - 219, - 0, - 1694, - 1695, - 3, - 435, - 217, - 0, - 1695, - 1696, - 3, - 401, - 200, - 0, - 1696, - 1697, - 3, - 417, - 208, - 0, - 1697, - 1698, - 3, - 423, - 211, - 0, - 1698, - 1699, - 3, - 417, - 208, - 0, - 1699, - 1700, - 3, - 427, - 213, - 0, - 1700, - 1701, - 3, - 413, - 206, - 0, - 1701, - 340, - 1, - 0, - 0, - 0, - 1702, - 1703, - 3, - 439, - 219, - 0, - 1703, - 1704, - 3, - 435, - 217, - 0, - 1704, - 1705, - 3, - 417, - 208, - 0, - 1705, - 1706, - 3, - 425, - 212, - 0, - 1706, - 342, - 1, - 0, - 0, - 0, - 1707, - 1708, - 3, - 439, - 219, - 0, - 1708, - 1709, - 3, - 435, - 217, - 0, - 1709, - 1710, - 3, - 441, - 220, - 0, - 1710, - 1711, - 3, - 427, - 213, - 0, - 1711, - 1712, - 3, - 405, - 202, - 0, - 1712, - 1713, - 3, - 401, - 200, - 0, - 1713, - 1714, - 3, - 439, - 219, - 0, - 1714, - 1715, - 3, - 409, - 204, - 0, - 1715, - 344, - 1, - 0, - 0, - 0, - 1716, - 1717, - 3, - 439, - 219, - 0, - 1717, - 1718, - 3, - 439, - 219, - 0, - 1718, - 1719, - 3, - 423, - 211, - 0, - 1719, - 346, - 1, - 0, - 0, - 0, - 1720, - 1721, - 3, - 439, - 219, - 0, - 1721, - 1722, - 3, - 449, - 224, - 0, - 1722, - 1723, - 3, - 431, - 215, - 0, - 1723, - 1724, - 3, - 409, - 204, - 0, - 1724, - 348, - 1, - 0, - 0, - 0, - 1725, - 1726, - 3, - 441, - 220, - 0, - 1726, - 1727, - 3, - 427, - 213, - 0, - 1727, - 1728, - 3, - 403, - 201, - 0, - 1728, - 1729, - 3, - 429, - 214, - 0, - 1729, - 1730, - 3, - 441, - 220, - 0, - 1730, - 1731, - 3, - 427, - 213, - 0, - 1731, - 1732, - 3, - 407, - 203, - 0, - 1732, - 1733, - 3, - 409, - 204, - 0, - 1733, - 1734, - 3, - 407, - 203, - 0, - 1734, - 350, - 1, - 0, - 0, - 0, - 1735, - 1736, - 3, - 441, - 220, - 0, - 1736, - 1737, - 3, - 427, - 213, - 0, - 1737, - 1738, - 3, - 417, - 208, - 0, - 1738, - 1739, - 3, - 429, - 214, - 0, - 1739, - 1740, - 3, - 427, - 213, - 0, - 1740, - 352, - 1, - 0, - 0, - 0, - 1741, - 1742, - 3, - 441, - 220, - 0, - 1742, - 1743, - 3, - 431, - 215, - 0, - 1743, - 1744, - 3, - 407, - 203, - 0, - 1744, - 1745, - 3, - 401, - 200, - 0, - 1745, - 1746, - 3, - 439, - 219, - 0, - 1746, - 1747, - 3, - 409, - 204, - 0, - 1747, - 354, - 1, - 0, - 0, - 0, - 1748, - 1749, - 3, - 441, - 220, - 0, - 1749, - 1750, - 3, - 437, - 218, - 0, - 1750, - 1751, - 3, - 409, - 204, - 0, - 1751, - 356, - 1, - 0, - 0, - 0, - 1752, - 1753, - 3, - 441, - 220, - 0, - 1753, - 1754, - 3, - 437, - 218, - 0, - 1754, - 1755, - 3, - 417, - 208, - 0, - 1755, - 1756, - 3, - 427, - 213, - 0, - 1756, - 1757, - 3, - 413, - 206, - 0, - 1757, - 358, - 1, - 0, - 0, - 0, - 1758, - 1759, - 3, - 441, - 220, - 0, - 1759, - 1760, - 3, - 441, - 220, - 0, - 1760, - 1761, - 3, - 417, - 208, - 0, - 1761, - 1762, - 3, - 407, - 203, - 0, - 1762, - 360, - 1, - 0, - 0, - 0, - 1763, - 1764, - 3, - 443, - 221, - 0, - 1764, - 1765, - 3, - 401, - 200, - 0, - 1765, - 1766, - 3, - 423, - 211, - 0, - 1766, - 1767, - 3, - 441, - 220, - 0, - 1767, - 1768, - 3, - 409, - 204, - 0, - 1768, - 1769, - 3, - 437, - 218, - 0, - 1769, - 362, - 1, - 0, - 0, - 0, - 1770, - 1771, - 3, - 443, - 221, - 0, - 1771, - 1772, - 3, - 417, - 208, - 0, - 1772, - 1773, - 3, - 409, - 204, - 0, - 1773, - 1774, - 3, - 445, - 222, - 0, - 1774, - 364, - 1, - 0, - 0, - 0, - 1775, - 1776, - 3, - 443, - 221, - 0, - 1776, - 1777, - 3, - 429, - 214, - 0, - 1777, - 1778, - 3, - 423, - 211, - 0, - 1778, - 1779, - 3, - 441, - 220, - 0, - 1779, - 1780, - 3, - 425, - 212, - 0, - 1780, - 1781, - 3, - 409, - 204, - 0, - 1781, - 366, - 1, - 0, - 0, - 0, - 1782, - 1783, - 3, - 445, - 222, - 0, - 1783, - 1784, - 3, - 401, - 200, - 0, - 1784, - 1785, - 3, - 439, - 219, - 0, - 1785, - 1786, - 3, - 405, - 202, - 0, - 1786, - 1787, - 3, - 415, - 207, - 0, - 1787, - 368, - 1, - 0, - 0, - 0, - 1788, - 1789, - 3, - 445, - 222, - 0, - 1789, - 1790, - 3, - 409, - 204, - 0, - 1790, - 1791, - 3, - 409, - 204, - 0, - 1791, - 1792, - 3, - 421, - 210, - 0, - 1792, - 370, - 1, - 0, - 0, - 0, - 1793, - 1794, - 3, - 445, - 222, - 0, - 1794, - 1795, - 3, - 415, - 207, - 0, - 1795, - 1796, - 3, - 409, - 204, - 0, - 1796, - 1797, - 3, - 427, - 213, - 0, - 1797, - 372, - 1, - 0, - 0, - 0, - 1798, - 1799, - 3, - 445, - 222, - 0, - 1799, - 1800, - 3, - 415, - 207, - 0, - 1800, - 1801, - 3, - 409, - 204, - 0, - 1801, - 1802, - 3, - 435, - 217, - 0, - 1802, - 1803, - 3, - 409, - 204, - 0, - 1803, - 374, - 1, - 0, - 0, - 0, - 1804, - 1805, - 3, - 445, - 222, - 0, - 1805, - 1806, - 3, - 417, - 208, - 0, - 1806, - 1807, - 3, - 427, - 213, - 0, - 1807, - 1808, - 3, - 407, - 203, - 0, - 1808, - 1809, - 3, - 429, - 214, - 0, - 1809, - 1810, - 3, - 445, - 222, - 0, - 1810, - 376, - 1, - 0, - 0, - 0, - 1811, - 1812, - 3, - 445, - 222, - 0, - 1812, - 1813, - 3, - 417, - 208, - 0, - 1813, - 1814, - 3, - 439, - 219, - 0, - 1814, - 1815, - 3, - 415, - 207, - 0, - 1815, - 378, - 1, - 0, - 0, - 0, - 1816, - 1817, - 3, - 449, - 224, - 0, - 1817, - 1818, - 3, - 409, - 204, - 0, - 1818, - 1819, - 3, - 401, - 200, - 0, - 1819, - 1820, - 3, - 435, - 217, - 0, - 1820, - 1827, - 1, - 0, - 0, - 0, - 1821, - 1822, - 3, - 449, - 224, - 0, - 1822, - 1823, - 3, - 449, - 224, - 0, - 1823, - 1824, - 3, - 449, - 224, - 0, - 1824, - 1825, - 3, - 449, - 224, - 0, - 1825, - 1827, - 1, - 0, - 0, - 0, - 1826, - 1816, - 1, - 0, - 0, - 0, - 1826, - 1821, - 1, - 0, - 0, - 0, - 1827, - 380, - 1, - 0, - 0, - 0, - 1828, - 1829, - 5, - 102, - 0, - 0, - 1829, - 1830, - 5, - 97, - 0, - 0, - 1830, - 1831, - 5, - 108, - 0, - 0, - 1831, - 1832, - 5, - 115, - 0, - 0, - 1832, - 1833, - 5, - 101, - 0, - 0, - 1833, - 382, - 1, - 0, - 0, - 0, - 1834, - 1835, - 5, - 116, - 0, - 0, - 1835, - 1836, - 5, - 114, - 0, - 0, - 1836, - 1837, - 5, - 117, - 0, - 0, - 1837, - 1838, - 5, - 101, - 0, - 0, - 1838, - 384, - 1, - 0, - 0, - 0, - 1839, - 1840, - 3, - 467, - 233, - 0, - 1840, - 1841, - 3, - 403, - 201, - 0, - 1841, - 1870, - 1, - 0, - 0, - 0, - 1842, - 1843, - 3, - 467, - 233, - 0, - 1843, - 1844, - 3, - 411, - 205, - 0, - 1844, - 1870, - 1, - 0, - 0, - 0, - 1845, - 1846, - 3, - 467, - 233, - 0, - 1846, - 1847, - 3, - 435, - 217, - 0, - 1847, - 1870, - 1, - 0, - 0, - 0, - 1848, - 1849, - 3, - 467, - 233, - 0, - 1849, - 1850, - 3, - 427, - 213, - 0, - 1850, - 1870, - 1, - 0, - 0, - 0, - 1851, - 1852, - 3, - 467, - 233, - 0, - 1852, - 1853, - 3, - 439, - 219, - 0, - 1853, - 1870, - 1, - 0, - 0, - 0, - 1854, - 1855, - 3, - 467, - 233, - 0, - 1855, - 1856, - 5, - 48, - 0, - 0, - 1856, - 1870, - 1, - 0, - 0, - 0, - 1857, - 1858, - 3, - 467, - 233, - 0, - 1858, - 1859, - 3, - 401, - 200, - 0, - 1859, - 1870, - 1, - 0, - 0, - 0, - 1860, - 1861, - 3, - 467, - 233, - 0, - 1861, - 1862, - 3, - 443, - 221, - 0, - 1862, - 1870, - 1, - 0, - 0, - 0, - 1863, - 1864, - 3, - 467, - 233, - 0, - 1864, - 1865, - 3, - 467, - 233, - 0, - 1865, - 1870, - 1, - 0, - 0, - 0, - 1866, - 1867, - 3, - 467, - 233, - 0, - 1867, - 1868, - 3, - 521, - 260, - 0, - 1868, - 1870, - 1, - 0, - 0, - 0, - 1869, - 1839, - 1, - 0, - 0, - 0, - 1869, - 1842, - 1, - 0, - 0, - 0, - 1869, - 1845, - 1, - 0, - 0, - 0, - 1869, - 1848, - 1, - 0, - 0, - 0, - 1869, - 1851, - 1, - 0, - 0, - 0, - 1869, - 1854, - 1, - 0, - 0, - 0, - 1869, - 1857, - 1, - 0, - 0, - 0, - 1869, - 1860, - 1, - 0, - 0, - 0, - 1869, - 1863, - 1, - 0, - 0, - 0, - 1869, - 1866, - 1, - 0, - 0, - 0, - 1870, - 386, - 1, - 0, - 0, - 0, - 1871, - 1875, - 3, - 453, - 226, - 0, - 1872, - 1875, - 3, - 537, - 268, - 0, - 1873, - 1875, - 3, - 477, - 238, - 0, - 1874, - 1871, - 1, - 0, - 0, - 0, - 1874, - 1872, - 1, - 0, - 0, - 0, - 1874, - 1873, - 1, - 0, - 0, - 0, - 1875, - 1882, - 1, - 0, - 0, - 0, - 1876, - 1881, - 3, - 453, - 226, - 0, - 1877, - 1881, - 3, - 537, - 268, - 0, - 1878, - 1881, - 3, - 457, - 228, - 0, - 1879, - 1881, - 3, - 477, - 238, - 0, - 1880, - 1876, - 1, - 0, - 0, - 0, - 1880, - 1877, - 1, - 0, - 0, - 0, - 1880, - 1878, - 1, - 0, - 0, - 0, - 1880, - 1879, - 1, - 0, - 0, - 0, - 1881, - 1884, - 1, - 0, - 0, - 0, - 1882, - 1880, - 1, - 0, - 0, - 0, - 1882, - 1883, - 1, - 0, - 0, - 0, - 1883, - 1912, - 1, - 0, - 0, - 0, - 1884, - 1882, - 1, - 0, - 0, - 0, - 1885, - 1893, - 3, - 465, - 232, - 0, - 1886, - 1892, - 8, - 0, - 0, - 0, - 1887, - 1892, - 3, - 385, - 192, - 0, - 1888, - 1889, - 3, - 465, - 232, - 0, - 1889, - 1890, - 3, - 465, - 232, - 0, - 1890, - 1892, - 1, - 0, - 0, - 0, - 1891, - 1886, - 1, - 0, - 0, - 0, - 1891, - 1887, - 1, - 0, - 0, - 0, - 1891, - 1888, - 1, - 0, - 0, - 0, - 1892, - 1895, - 1, - 0, - 0, - 0, - 1893, - 1891, - 1, - 0, - 0, - 0, - 1893, - 1894, - 1, - 0, - 0, - 0, - 1894, - 1896, - 1, - 0, - 0, - 0, - 1895, - 1893, - 1, - 0, - 0, - 0, - 1896, - 1897, - 3, - 465, - 232, - 0, - 1897, - 1912, - 1, - 0, - 0, - 0, - 1898, - 1906, - 3, - 519, - 259, - 0, - 1899, - 1905, - 8, - 1, - 0, - 0, - 1900, - 1905, - 3, - 385, - 192, - 0, - 1901, - 1902, - 3, - 519, - 259, - 0, - 1902, - 1903, - 3, - 519, - 259, - 0, - 1903, - 1905, - 1, - 0, - 0, - 0, - 1904, - 1899, - 1, - 0, - 0, - 0, - 1904, - 1900, - 1, - 0, - 0, - 0, - 1904, - 1901, - 1, - 0, - 0, - 0, - 1905, - 1908, - 1, - 0, - 0, - 0, - 1906, - 1904, - 1, - 0, - 0, - 0, - 1906, - 1907, - 1, - 0, - 0, - 0, - 1907, - 1909, - 1, - 0, - 0, - 0, - 1908, - 1906, - 1, - 0, - 0, - 0, - 1909, - 1910, - 3, - 519, - 259, - 0, - 1910, - 1912, - 1, - 0, - 0, - 0, - 1911, - 1874, - 1, - 0, - 0, - 0, - 1911, - 1885, - 1, - 0, - 0, - 0, - 1911, - 1898, - 1, - 0, - 0, - 0, - 1912, - 388, - 1, - 0, - 0, - 0, - 1913, - 1914, - 3, - 395, - 197, - 0, - 1914, - 1918, - 3, - 479, - 239, - 0, - 1915, - 1917, - 3, - 459, - 229, - 0, - 1916, - 1915, - 1, - 0, - 0, - 0, - 1917, - 1920, - 1, - 0, - 0, - 0, - 1918, - 1916, - 1, - 0, - 0, - 0, - 1918, - 1919, - 1, - 0, - 0, - 0, - 1919, - 1923, - 1, - 0, - 0, - 0, - 1920, - 1918, - 1, - 0, - 0, - 0, - 1921, - 1924, - 3, - 431, - 215, - 0, - 1922, - 1924, - 3, - 409, - 204, - 0, - 1923, - 1921, - 1, - 0, - 0, - 0, - 1923, - 1922, - 1, - 0, - 0, - 0, - 1924, - 1927, - 1, - 0, - 0, - 0, - 1925, - 1928, - 3, - 515, - 257, - 0, - 1926, - 1928, - 3, - 475, - 237, - 0, - 1927, - 1925, - 1, - 0, - 0, - 0, - 1927, - 1926, - 1, - 0, - 0, - 0, - 1927, - 1928, - 1, - 0, - 0, - 0, - 1928, - 1930, - 1, - 0, - 0, - 0, - 1929, - 1931, - 3, - 457, - 228, - 0, - 1930, - 1929, - 1, - 0, - 0, - 0, - 1931, - 1932, - 1, - 0, - 0, - 0, - 1932, - 1930, - 1, - 0, - 0, - 0, - 1932, - 1933, - 1, - 0, - 0, - 0, - 1933, - 1990, - 1, - 0, - 0, - 0, - 1934, - 1937, - 3, - 395, - 197, - 0, - 1935, - 1938, - 3, - 431, - 215, - 0, - 1936, - 1938, - 3, - 409, - 204, - 0, - 1937, - 1935, - 1, - 0, - 0, - 0, - 1937, - 1936, - 1, - 0, - 0, - 0, - 1938, - 1941, - 1, - 0, - 0, - 0, - 1939, - 1942, - 3, - 515, - 257, - 0, - 1940, - 1942, - 3, - 475, - 237, - 0, - 1941, - 1939, - 1, - 0, - 0, - 0, - 1941, - 1940, - 1, - 0, - 0, - 0, - 1941, - 1942, - 1, - 0, - 0, - 0, - 1942, - 1944, - 1, - 0, - 0, - 0, - 1943, - 1945, - 3, - 457, - 228, - 0, - 1944, - 1943, - 1, - 0, - 0, - 0, - 1945, - 1946, - 1, - 0, - 0, - 0, - 1946, - 1944, - 1, - 0, - 0, - 0, - 1946, - 1947, - 1, - 0, - 0, - 0, - 1947, - 1990, - 1, - 0, - 0, - 0, - 1948, - 1949, - 3, - 393, - 196, - 0, - 1949, - 1953, - 3, - 479, - 239, - 0, - 1950, - 1952, - 3, - 457, - 228, - 0, - 1951, - 1950, - 1, - 0, - 0, - 0, - 1952, - 1955, - 1, - 0, - 0, - 0, - 1953, - 1951, - 1, - 0, - 0, - 0, - 1953, - 1954, - 1, - 0, - 0, - 0, - 1954, - 1956, - 1, - 0, - 0, - 0, - 1955, - 1953, - 1, - 0, - 0, - 0, - 1956, - 1959, - 3, - 409, - 204, - 0, - 1957, - 1960, - 3, - 515, - 257, - 0, - 1958, - 1960, - 3, - 475, - 237, - 0, - 1959, - 1957, - 1, - 0, - 0, - 0, - 1959, - 1958, - 1, - 0, - 0, - 0, - 1959, - 1960, - 1, - 0, - 0, - 0, - 1960, - 1962, - 1, - 0, - 0, - 0, - 1961, - 1963, - 3, - 457, - 228, - 0, - 1962, - 1961, - 1, - 0, - 0, - 0, - 1963, - 1964, - 1, - 0, - 0, - 0, - 1964, - 1962, - 1, - 0, - 0, - 0, - 1964, - 1965, - 1, - 0, - 0, - 0, - 1965, - 1990, - 1, - 0, - 0, - 0, - 1966, - 1967, - 3, - 479, - 239, - 0, - 1967, - 1968, - 3, - 393, - 196, - 0, - 1968, - 1971, - 3, - 409, - 204, - 0, - 1969, - 1972, - 3, - 515, - 257, - 0, - 1970, - 1972, - 3, - 475, - 237, - 0, - 1971, - 1969, - 1, - 0, - 0, - 0, - 1971, - 1970, - 1, - 0, - 0, - 0, - 1971, - 1972, - 1, - 0, - 0, - 0, - 1972, - 1974, - 1, - 0, - 0, - 0, - 1973, - 1975, - 3, - 457, - 228, - 0, - 1974, - 1973, - 1, - 0, - 0, - 0, - 1975, - 1976, - 1, - 0, - 0, - 0, - 1976, - 1974, - 1, - 0, - 0, - 0, - 1976, - 1977, - 1, - 0, - 0, - 0, - 1977, - 1990, - 1, - 0, - 0, - 0, - 1978, - 1979, - 3, - 393, - 196, - 0, - 1979, - 1982, - 3, - 409, - 204, - 0, - 1980, - 1983, - 3, - 515, - 257, - 0, - 1981, - 1983, - 3, - 475, - 237, - 0, - 1982, - 1980, - 1, - 0, - 0, - 0, - 1982, - 1981, - 1, - 0, - 0, - 0, - 1982, - 1983, - 1, - 0, - 0, - 0, - 1983, - 1985, - 1, - 0, - 0, - 0, - 1984, - 1986, - 3, - 457, - 228, - 0, - 1985, - 1984, - 1, - 0, - 0, - 0, - 1986, - 1987, - 1, - 0, - 0, - 0, - 1987, - 1985, - 1, - 0, - 0, - 0, - 1987, - 1988, - 1, - 0, - 0, - 0, - 1988, - 1990, - 1, - 0, - 0, - 0, - 1989, - 1913, - 1, - 0, - 0, - 0, - 1989, - 1934, - 1, - 0, - 0, - 0, - 1989, - 1948, - 1, - 0, - 0, - 0, - 1989, - 1966, - 1, - 0, - 0, - 0, - 1989, - 1978, - 1, - 0, - 0, - 0, - 1990, - 390, - 1, - 0, - 0, - 0, - 1991, - 1993, - 5, - 48, - 0, - 0, - 1992, - 1994, - 3, - 455, - 227, - 0, - 1993, - 1992, - 1, - 0, - 0, - 0, - 1994, - 1995, - 1, - 0, - 0, - 0, - 1995, - 1993, - 1, - 0, - 0, - 0, - 1995, - 1996, - 1, - 0, - 0, - 0, - 1996, - 392, - 1, - 0, - 0, - 0, - 1997, - 1999, - 3, - 457, - 228, - 0, - 1998, - 1997, - 1, - 0, - 0, - 0, - 1999, - 2000, - 1, - 0, - 0, - 0, - 2000, - 1998, - 1, - 0, - 0, - 0, - 2000, - 2001, - 1, - 0, - 0, - 0, - 2001, - 394, - 1, - 0, - 0, - 0, - 2002, - 2003, - 5, - 48, - 0, - 0, - 2003, - 2005, - 3, - 447, - 223, - 0, - 2004, - 2006, - 3, - 459, - 229, - 0, - 2005, - 2004, - 1, - 0, - 0, - 0, - 2006, - 2007, - 1, - 0, - 0, - 0, - 2007, - 2005, - 1, - 0, - 0, - 0, - 2007, - 2008, - 1, - 0, - 0, - 0, - 2008, - 396, - 1, - 0, - 0, - 0, - 2009, - 2017, - 3, - 521, - 260, - 0, - 2010, - 2016, - 8, - 2, - 0, - 0, - 2011, - 2016, - 3, - 385, - 192, - 0, - 2012, - 2013, - 3, - 521, - 260, - 0, - 2013, - 2014, - 3, - 521, - 260, - 0, - 2014, - 2016, - 1, - 0, - 0, - 0, - 2015, - 2010, - 1, - 0, - 0, - 0, - 2015, - 2011, - 1, - 0, - 0, - 0, - 2015, - 2012, - 1, - 0, - 0, - 0, - 2016, - 2019, - 1, - 0, - 0, - 0, - 2017, - 2015, - 1, - 0, - 0, - 0, - 2017, - 2018, - 1, - 0, - 0, - 0, - 2018, - 2020, - 1, - 0, - 0, - 0, - 2019, - 2017, - 1, - 0, - 0, - 0, - 2020, - 2021, - 3, - 521, - 260, - 0, - 2021, - 398, - 1, - 0, - 0, - 0, - 2022, - 2030, - 3, - 495, - 247, - 0, - 2023, - 2029, - 8, - 3, - 0, - 0, - 2024, - 2029, - 3, - 385, - 192, - 0, - 2025, - 2026, - 3, - 495, - 247, - 0, - 2026, - 2027, - 3, - 495, - 247, - 0, - 2027, - 2029, - 1, - 0, - 0, - 0, - 2028, - 2023, - 1, - 0, - 0, - 0, - 2028, - 2024, - 1, - 0, - 0, - 0, - 2028, - 2025, - 1, - 0, - 0, - 0, - 2029, - 2032, - 1, - 0, - 0, - 0, - 2030, - 2028, - 1, - 0, - 0, - 0, - 2030, - 2031, - 1, - 0, - 0, - 0, - 2031, - 2033, - 1, - 0, - 0, - 0, - 2032, - 2030, - 1, - 0, - 0, - 0, - 2033, - 2034, - 3, - 527, - 263, - 0, - 2034, - 400, - 1, - 0, - 0, - 0, - 2035, - 2036, - 7, - 4, - 0, - 0, - 2036, - 402, - 1, - 0, - 0, - 0, - 2037, - 2038, - 7, - 5, - 0, - 0, - 2038, - 404, - 1, - 0, - 0, - 0, - 2039, - 2040, - 7, - 6, - 0, - 0, - 2040, - 406, - 1, - 0, - 0, - 0, - 2041, - 2042, - 7, - 7, - 0, - 0, - 2042, - 408, - 1, - 0, - 0, - 0, - 2043, - 2044, - 7, - 8, - 0, - 0, - 2044, - 410, - 1, - 0, - 0, - 0, - 2045, - 2046, - 7, - 9, - 0, - 0, - 2046, - 412, - 1, - 0, - 0, - 0, - 2047, - 2048, - 7, - 10, - 0, - 0, - 2048, - 414, - 1, - 0, - 0, - 0, - 2049, - 2050, - 7, - 11, - 0, - 0, - 2050, - 416, - 1, - 0, - 0, - 0, - 2051, - 2052, - 7, - 12, - 0, - 0, - 2052, - 418, - 1, - 0, - 0, - 0, - 2053, - 2054, - 7, - 13, - 0, - 0, - 2054, - 420, - 1, - 0, - 0, - 0, - 2055, - 2056, - 7, - 14, - 0, - 0, - 2056, - 422, - 1, - 0, - 0, - 0, - 2057, - 2058, - 7, - 15, - 0, - 0, - 2058, - 424, - 1, - 0, - 0, - 0, - 2059, - 2060, - 7, - 16, - 0, - 0, - 2060, - 426, - 1, - 0, - 0, - 0, - 2061, - 2062, - 7, - 17, - 0, - 0, - 2062, - 428, - 1, - 0, - 0, - 0, - 2063, - 2064, - 7, - 18, - 0, - 0, - 2064, - 430, - 1, - 0, - 0, - 0, - 2065, - 2066, - 7, - 19, - 0, - 0, - 2066, - 432, - 1, - 0, - 0, - 0, - 2067, - 2068, - 7, - 20, - 0, - 0, - 2068, - 434, - 1, - 0, - 0, - 0, - 2069, - 2070, - 7, - 21, - 0, - 0, - 2070, - 436, - 1, - 0, - 0, - 0, - 2071, - 2072, - 7, - 22, - 0, - 0, - 2072, - 438, - 1, - 0, - 0, - 0, - 2073, - 2074, - 7, - 23, - 0, - 0, - 2074, - 440, - 1, - 0, - 0, - 0, - 2075, - 2076, - 7, - 24, - 0, - 0, - 2076, - 442, - 1, - 0, - 0, - 0, - 2077, - 2078, - 7, - 25, - 0, - 0, - 2078, - 444, - 1, - 0, - 0, - 0, - 2079, - 2080, - 7, - 26, - 0, - 0, - 2080, - 446, - 1, - 0, - 0, - 0, - 2081, - 2082, - 7, - 27, - 0, - 0, - 2082, - 448, - 1, - 0, - 0, - 0, - 2083, - 2084, - 7, - 28, - 0, - 0, - 2084, - 450, - 1, - 0, - 0, - 0, - 2085, - 2086, - 7, - 29, - 0, - 0, - 2086, - 452, - 1, - 0, - 0, - 0, - 2087, - 2088, - 7, - 30, - 0, - 0, - 2088, - 454, - 1, - 0, - 0, - 0, - 2089, - 2090, - 7, - 31, - 0, - 0, - 2090, - 456, - 1, - 0, - 0, - 0, - 2091, - 2092, - 7, - 32, - 0, - 0, - 2092, - 458, - 1, - 0, - 0, - 0, - 2093, - 2094, - 7, - 33, - 0, - 0, - 2094, - 460, - 1, - 0, - 0, - 0, - 2095, - 2096, - 5, - 45, - 0, - 0, - 2096, - 2097, - 5, - 62, - 0, - 0, - 2097, - 462, - 1, - 0, - 0, - 0, - 2098, - 2099, - 5, - 42, - 0, - 0, - 2099, - 464, - 1, - 0, - 0, - 0, - 2100, - 2101, - 5, - 96, - 0, - 0, - 2101, - 466, - 1, - 0, - 0, - 0, - 2102, - 2103, - 5, - 92, - 0, - 0, - 2103, - 468, - 1, - 0, - 0, - 0, - 2104, - 2105, - 5, - 58, - 0, - 0, - 2105, - 470, - 1, - 0, - 0, - 0, - 2106, - 2107, - 5, - 44, - 0, - 0, - 2107, - 472, - 1, - 0, - 0, - 0, - 2108, - 2109, - 5, - 124, - 0, - 0, - 2109, - 2110, - 5, - 124, - 0, - 0, - 2110, - 474, - 1, - 0, - 0, - 0, - 2111, - 2112, - 5, - 45, - 0, - 0, - 2112, - 476, - 1, - 0, - 0, - 0, - 2113, - 2114, - 5, - 36, - 0, - 0, - 2114, - 478, - 1, - 0, - 0, - 0, - 2115, - 2116, - 5, - 46, - 0, - 0, - 2116, - 480, - 1, - 0, - 0, - 0, - 2117, - 2118, - 5, - 61, - 0, - 0, - 2118, - 2119, - 5, - 61, - 0, - 0, - 2119, - 482, - 1, - 0, - 0, - 0, - 2120, - 2121, - 5, - 61, - 0, - 0, - 2121, - 484, - 1, - 0, - 0, - 0, - 2122, - 2123, - 5, - 62, - 0, - 0, - 2123, - 2124, - 5, - 61, - 0, - 0, - 2124, - 486, - 1, - 0, - 0, - 0, - 2125, - 2126, - 5, - 62, - 0, - 0, - 2126, - 488, - 1, - 0, - 0, - 0, - 2127, - 2128, - 5, - 35, - 0, - 0, - 2128, - 490, - 1, - 0, - 0, - 0, - 2129, - 2130, - 5, - 126, - 0, - 0, - 2130, - 2131, - 5, - 42, - 0, - 0, - 2131, - 492, - 1, - 0, - 0, - 0, - 2132, - 2133, - 5, - 61, - 0, - 0, - 2133, - 2134, - 5, - 126, - 0, - 0, - 2134, - 2135, - 5, - 42, - 0, - 0, - 2135, - 494, - 1, - 0, - 0, - 0, - 2136, - 2137, - 5, - 123, - 0, - 0, - 2137, - 496, - 1, - 0, - 0, - 0, - 2138, - 2139, - 5, - 91, - 0, - 0, - 2139, - 498, - 1, - 0, - 0, - 0, - 2140, - 2141, - 5, - 40, - 0, - 0, - 2141, - 500, - 1, - 0, - 0, - 0, - 2142, - 2143, - 5, - 60, - 0, - 0, - 2143, - 2144, - 5, - 61, - 0, - 0, - 2144, - 502, - 1, - 0, - 0, - 0, - 2145, - 2146, - 5, - 60, - 0, - 0, - 2146, - 504, - 1, - 0, - 0, - 0, - 2147, - 2148, - 5, - 33, - 0, - 0, - 2148, - 2152, - 5, - 61, - 0, - 0, - 2149, - 2150, - 5, - 60, - 0, - 0, - 2150, - 2152, - 5, - 62, - 0, - 0, - 2151, - 2147, - 1, - 0, - 0, - 0, - 2151, - 2149, - 1, - 0, - 0, - 0, - 2152, - 506, - 1, - 0, - 0, - 0, - 2153, - 2154, - 5, - 33, - 0, - 0, - 2154, - 2155, - 5, - 126, - 0, - 0, - 2155, - 2156, - 5, - 42, - 0, - 0, - 2156, - 508, - 1, - 0, - 0, - 0, - 2157, - 2158, - 5, - 33, - 0, - 0, - 2158, - 2159, - 5, - 126, - 0, - 0, - 2159, - 510, - 1, - 0, - 0, - 0, - 2160, - 2161, - 5, - 63, - 0, - 0, - 2161, - 2162, - 5, - 63, - 0, - 0, - 2162, - 512, - 1, - 0, - 0, - 0, - 2163, - 2164, - 5, - 37, - 0, - 0, - 2164, - 514, - 1, - 0, - 0, - 0, - 2165, - 2166, - 5, - 43, - 0, - 0, - 2166, - 516, - 1, - 0, - 0, - 0, - 2167, - 2168, - 5, - 63, - 0, - 0, - 2168, - 518, - 1, - 0, - 0, - 0, - 2169, - 2170, - 5, - 34, - 0, - 0, - 2170, - 520, - 1, - 0, - 0, - 0, - 2171, - 2172, - 5, - 39, - 0, - 0, - 2172, - 522, - 1, - 0, - 0, - 0, - 2173, - 2174, - 5, - 126, - 0, - 0, - 2174, - 524, - 1, - 0, - 0, - 0, - 2175, - 2176, - 5, - 61, - 0, - 0, - 2176, - 2177, - 5, - 126, - 0, - 0, - 2177, - 526, - 1, - 0, - 0, - 0, - 2178, - 2179, - 5, - 125, - 0, - 0, - 2179, - 528, - 1, - 0, - 0, - 0, - 2180, - 2181, - 5, - 93, - 0, - 0, - 2181, - 530, - 1, - 0, - 0, - 0, - 2182, - 2183, - 5, - 41, - 0, - 0, - 2183, - 532, - 1, - 0, - 0, - 0, - 2184, - 2185, - 5, - 59, - 0, - 0, - 2185, - 534, - 1, - 0, - 0, - 0, - 2186, - 2187, - 5, - 47, - 0, - 0, - 2187, - 536, - 1, - 0, - 0, - 0, - 2188, - 2189, - 5, - 95, - 0, - 0, - 2189, - 538, - 1, - 0, - 0, - 0, - 2190, - 2191, - 5, - 47, - 0, - 0, - 2191, - 2192, - 5, - 42, - 0, - 0, - 2192, - 2196, - 1, - 0, - 0, - 0, - 2193, - 2195, - 9, - 0, - 0, - 0, - 2194, - 2193, - 1, - 0, - 0, - 0, - 2195, - 2198, - 1, - 0, - 0, - 0, - 2196, - 2197, - 1, - 0, - 0, - 0, - 2196, - 2194, - 1, - 0, - 0, - 0, - 2197, - 2199, - 1, - 0, - 0, - 0, - 2198, - 2196, - 1, - 0, - 0, - 0, - 2199, - 2200, - 5, - 42, - 0, - 0, - 2200, - 2201, - 5, - 47, - 0, - 0, - 2201, - 2202, - 1, - 0, - 0, - 0, - 2202, - 2203, - 6, - 269, - 0, - 0, - 2203, - 540, - 1, - 0, - 0, - 0, - 2204, - 2205, - 5, - 45, - 0, - 0, - 2205, - 2206, - 5, - 45, - 0, - 0, - 2206, - 2210, - 1, - 0, - 0, - 0, - 2207, - 2209, - 8, - 34, - 0, - 0, - 2208, - 2207, - 1, - 0, - 0, - 0, - 2209, - 2212, - 1, - 0, - 0, - 0, - 2210, - 2208, - 1, - 0, - 0, - 0, - 2210, - 2211, - 1, - 0, - 0, - 0, - 2211, - 2214, - 1, - 0, - 0, - 0, - 2212, - 2210, - 1, - 0, - 0, - 0, - 2213, - 2215, - 7, - 35, - 0, - 0, - 2214, - 2213, - 1, - 0, - 0, - 0, - 2215, - 2216, - 1, - 0, - 0, - 0, - 2216, - 2217, - 6, - 270, - 0, - 0, - 2217, - 542, - 1, - 0, - 0, - 0, - 2218, - 2219, - 7, - 36, - 0, - 0, - 2219, - 2220, - 1, - 0, - 0, - 0, - 2220, - 2221, - 6, - 271, - 1, - 0, - 2221, - 544, - 1, - 0, - 0, - 0, - 39, - 0, - 607, - 1112, - 1826, - 1869, - 1874, - 1880, - 1882, - 1891, - 1893, - 1904, - 1906, - 1911, - 1918, - 1923, - 1927, - 1932, - 1937, - 1941, - 1946, - 1953, - 1959, - 1964, - 1971, - 1976, - 1982, - 1987, - 1989, - 1995, - 2000, - 2007, - 2015, - 2017, - 2028, - 2030, - 2151, - 2196, - 2210, - 2214, - 2, - 6, - 0, - 0, - 0, - 1, - 0, + 4,0,242,2222,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7, + 5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12, + 2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19, + 7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25, + 2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32, + 7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38, + 2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45, + 7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51, + 2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58, + 7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64, + 2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71, + 7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77, + 2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84, + 7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90, + 2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97, + 7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103, + 7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108, + 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114, + 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119, + 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125, + 7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130, + 2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136, + 7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141, + 2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147, + 7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152, + 2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, + 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163, + 2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169, + 7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174, + 2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180, + 7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185, + 2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191, + 7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196, + 2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202, + 7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207, + 2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213, + 7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218, + 2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224, + 7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229, + 2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, + 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240, + 2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246, + 7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251, + 2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257, + 7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262, + 2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268, + 7,268,2,269,7,269,2,270,7,270,2,271,7,271,1,0,1,0,1,0,1,0,1,1,1, + 1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,4,1, + 4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1, + 7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1, + 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,608,8,10,1, + 11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1, + 13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1, + 15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1, + 18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1, + 20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1, + 22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1, + 24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1, + 26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1, + 28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1, + 29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1, + 31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1, + 33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1, + 34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1, + 37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1, + 38,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1, + 40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,42,1, + 42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1, + 43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1, + 45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1, + 46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1, + 47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1, + 49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1, + 50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,53,1, + 53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1, + 55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1, + 56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1, + 58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1, + 59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1, + 61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1, + 63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1, + 65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1, + 67,1,67,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1, + 69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1, + 71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1, + 72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1, + 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1, + 75,1,76,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1, + 79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1, + 81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,3,81,1113,8,81,1,82,1, + 82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1, + 83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1, + 85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1, + 88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1, + 89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1, + 91,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1, + 94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1, + 96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1, + 97,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100, + 1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,102, + 1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102, + 1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, + 1,103,1,103,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105, + 1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107, + 1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109, + 1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112, + 1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115, + 1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117, + 1,117,1,117,1,117,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119, + 1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,121,1,121,1,121,1,121, + 1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123, + 1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,125, + 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126, + 1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, + 1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132, + 1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133, + 1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135, + 1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136, + 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138, + 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139, + 1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141, + 1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143, + 1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144, + 1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146, + 1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148, + 1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150, + 1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,152, + 1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155, + 1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,157, + 1,157,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158, + 1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160, + 1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161, + 1,161,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163, + 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165, + 1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,167, + 1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,169, + 1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170, + 1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, + 1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,174,1,174, + 1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,175,1,175,1,175, + 1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,177, + 1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,178,1,179,1,179, + 1,179,1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,181, + 1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,182,1,182, + 1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184, + 1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,186, + 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188, + 1,188,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189, + 3,189,1827,8,189,1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191, + 1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 3,192,1870,8,192,1,193,1,193,1,193,3,193,1875,8,193,1,193,1,193, + 1,193,1,193,5,193,1881,8,193,10,193,12,193,1884,9,193,1,193,1,193, + 1,193,1,193,1,193,1,193,5,193,1892,8,193,10,193,12,193,1895,9,193, + 1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,5,193,1905,8,193, + 10,193,12,193,1908,9,193,1,193,1,193,3,193,1912,8,193,1,194,1,194, + 1,194,5,194,1917,8,194,10,194,12,194,1920,9,194,1,194,1,194,3,194, + 1924,8,194,1,194,1,194,3,194,1928,8,194,1,194,4,194,1931,8,194,11, + 194,12,194,1932,1,194,1,194,1,194,3,194,1938,8,194,1,194,1,194,3, + 194,1942,8,194,1,194,4,194,1945,8,194,11,194,12,194,1946,1,194,1, + 194,1,194,5,194,1952,8,194,10,194,12,194,1955,9,194,1,194,1,194, + 1,194,3,194,1960,8,194,1,194,4,194,1963,8,194,11,194,12,194,1964, + 1,194,1,194,1,194,1,194,1,194,3,194,1972,8,194,1,194,4,194,1975, + 8,194,11,194,12,194,1976,1,194,1,194,1,194,1,194,3,194,1983,8,194, + 1,194,4,194,1986,8,194,11,194,12,194,1987,3,194,1990,8,194,1,195, + 1,195,4,195,1994,8,195,11,195,12,195,1995,1,196,4,196,1999,8,196, + 11,196,12,196,2000,1,197,1,197,1,197,4,197,2006,8,197,11,197,12, + 197,2007,1,198,1,198,1,198,1,198,1,198,1,198,5,198,2016,8,198,10, + 198,12,198,2019,9,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199, + 1,199,5,199,2029,8,199,10,199,12,199,2032,9,199,1,199,1,199,1,200, + 1,200,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,205,1,205, + 1,206,1,206,1,207,1,207,1,208,1,208,1,209,1,209,1,210,1,210,1,211, + 1,211,1,212,1,212,1,213,1,213,1,214,1,214,1,215,1,215,1,216,1,216, + 1,217,1,217,1,218,1,218,1,219,1,219,1,220,1,220,1,221,1,221,1,222, + 1,222,1,223,1,223,1,224,1,224,1,225,1,225,1,226,1,226,1,227,1,227, + 1,228,1,228,1,229,1,229,1,230,1,230,1,230,1,231,1,231,1,232,1,232, + 1,233,1,233,1,234,1,234,1,235,1,235,1,236,1,236,1,236,1,237,1,237, + 1,238,1,238,1,239,1,239,1,240,1,240,1,240,1,241,1,241,1,242,1,242, + 1,242,1,243,1,243,1,244,1,244,1,245,1,245,1,245,1,246,1,246,1,246, + 1,246,1,247,1,247,1,248,1,248,1,249,1,249,1,250,1,250,1,250,1,251, + 1,251,1,252,1,252,1,252,1,252,3,252,2152,8,252,1,253,1,253,1,253, + 1,253,1,254,1,254,1,254,1,255,1,255,1,255,1,256,1,256,1,257,1,257, + 1,258,1,258,1,259,1,259,1,260,1,260,1,261,1,261,1,262,1,262,1,262, + 1,263,1,263,1,264,1,264,1,265,1,265,1,266,1,266,1,267,1,267,1,268, + 1,268,1,269,1,269,1,269,1,269,5,269,2195,8,269,10,269,12,269,2198, + 9,269,1,269,1,269,1,269,1,269,1,269,1,270,1,270,1,270,1,270,5,270, + 2209,8,270,10,270,12,270,2212,9,270,1,270,3,270,2215,8,270,1,270, + 1,270,1,271,1,271,1,271,1,271,1,2196,0,272,1,1,3,2,5,3,7,4,9,5,11, + 6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17, + 35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28, + 57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39, + 79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50, + 101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119, + 60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69, + 139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157, + 79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88, + 177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195, + 98,197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106, + 213,107,215,108,217,109,219,110,221,111,223,112,225,113,227,114, + 229,115,231,116,233,117,235,118,237,119,239,120,241,121,243,122, + 245,123,247,124,249,125,251,126,253,127,255,128,257,129,259,130, + 261,131,263,132,265,133,267,134,269,135,271,136,273,137,275,138, + 277,139,279,140,281,141,283,142,285,143,287,144,289,145,291,146, + 293,147,295,148,297,149,299,150,301,151,303,152,305,153,307,154, + 309,155,311,156,313,157,315,158,317,159,319,160,321,161,323,162, + 325,163,327,164,329,165,331,166,333,167,335,168,337,169,339,170, + 341,171,343,172,345,173,347,174,349,175,351,176,353,177,355,178, + 357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,186, + 373,187,375,188,377,189,379,190,381,191,383,192,385,193,387,194, + 389,195,391,196,393,197,395,198,397,199,399,200,401,0,403,0,405, + 0,407,0,409,0,411,0,413,0,415,0,417,0,419,0,421,0,423,0,425,0,427, + 0,429,0,431,0,433,0,435,0,437,0,439,0,441,0,443,0,445,0,447,0,449, + 0,451,0,453,0,455,0,457,0,459,0,461,201,463,202,465,203,467,204, + 469,205,471,206,473,207,475,208,477,209,479,210,481,211,483,212, + 485,213,487,214,489,215,491,216,493,217,495,218,497,219,499,220, + 501,221,503,222,505,223,507,224,509,225,511,226,513,227,515,228, + 517,229,519,230,521,231,523,232,525,233,527,234,529,235,531,236, + 533,237,535,238,537,239,539,240,541,241,543,242,1,0,37,2,0,92,92, + 96,96,2,0,34,34,92,92,2,0,39,39,92,92,2,0,92,92,125,125,2,0,65,65, + 97,97,2,0,66,66,98,98,2,0,67,67,99,99,2,0,68,68,100,100,2,0,69,69, + 101,101,2,0,70,70,102,102,2,0,71,71,103,103,2,0,72,72,104,104,2, + 0,73,73,105,105,2,0,74,74,106,106,2,0,75,75,107,107,2,0,76,76,108, + 108,2,0,77,77,109,109,2,0,78,78,110,110,2,0,79,79,111,111,2,0,80, + 80,112,112,2,0,81,81,113,113,2,0,82,82,114,114,2,0,83,83,115,115, + 2,0,84,84,116,116,2,0,85,85,117,117,2,0,86,86,118,118,2,0,87,87, + 119,119,2,0,88,88,120,120,2,0,89,89,121,121,2,0,90,90,122,122,2, + 0,65,90,97,122,1,0,48,55,1,0,48,57,3,0,48,57,65,70,97,102,2,0,10, + 10,13,13,2,1,10,10,13,13,2,0,9,13,32,32,2252,0,1,1,0,0,0,0,3,1,0, + 0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0, + 0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0, + 0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0, + 0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0, + 0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0, + 0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0, + 0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0, + 0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0, + 0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0, + 0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0, + 0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113, + 1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0, + 0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1, + 0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0, + 141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0, + 0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159, + 1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0, + 0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1, + 0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0, + 187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0, + 0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205, + 1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0, + 0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1, + 0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0, + 233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0, + 0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251, + 1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0, + 0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1, + 0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0, + 279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0, + 0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297, + 1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0, + 0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1, + 0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0, + 325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0, + 0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343, + 1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0, + 0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1, + 0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0, + 371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0, + 0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389, + 1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0, + 0,399,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0,467,1, + 0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,0, + 477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485,1,0, + 0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0,0,495, + 1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1,0,0,0, + 0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0,513,1, + 0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0,0,0,0, + 523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531,1,0, + 0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0,0,541, + 1,0,0,0,0,543,1,0,0,0,1,545,1,0,0,0,3,549,1,0,0,0,5,555,1,0,0,0, + 7,561,1,0,0,0,9,565,1,0,0,0,11,571,1,0,0,0,13,575,1,0,0,0,15,580, + 1,0,0,0,17,584,1,0,0,0,19,590,1,0,0,0,21,607,1,0,0,0,23,609,1,0, + 0,0,25,614,1,0,0,0,27,618,1,0,0,0,29,624,1,0,0,0,31,631,1,0,0,0, + 33,639,1,0,0,0,35,644,1,0,0,0,37,647,1,0,0,0,39,652,1,0,0,0,41,657, + 1,0,0,0,43,663,1,0,0,0,45,669,1,0,0,0,47,677,1,0,0,0,49,683,1,0, + 0,0,51,690,1,0,0,0,53,698,1,0,0,0,55,705,1,0,0,0,57,713,1,0,0,0, + 59,724,1,0,0,0,61,731,1,0,0,0,63,737,1,0,0,0,65,742,1,0,0,0,67,750, + 1,0,0,0,69,759,1,0,0,0,71,769,1,0,0,0,73,774,1,0,0,0,75,778,1,0, + 0,0,77,790,1,0,0,0,79,798,1,0,0,0,81,804,1,0,0,0,83,811,1,0,0,0, + 85,816,1,0,0,0,87,827,1,0,0,0,89,836,1,0,0,0,91,843,1,0,0,0,93,856, + 1,0,0,0,95,867,1,0,0,0,97,872,1,0,0,0,99,881,1,0,0,0,101,893,1,0, + 0,0,103,898,1,0,0,0,105,903,1,0,0,0,107,907,1,0,0,0,109,914,1,0, + 0,0,111,921,1,0,0,0,113,928,1,0,0,0,115,936,1,0,0,0,117,947,1,0, + 0,0,119,955,1,0,0,0,121,963,1,0,0,0,123,969,1,0,0,0,125,975,1,0, + 0,0,127,981,1,0,0,0,129,991,1,0,0,0,131,995,1,0,0,0,133,1002,1,0, + 0,0,135,1009,1,0,0,0,137,1014,1,0,0,0,139,1019,1,0,0,0,141,1028, + 1,0,0,0,143,1035,1,0,0,0,145,1047,1,0,0,0,147,1053,1,0,0,0,149,1060, + 1,0,0,0,151,1073,1,0,0,0,153,1078,1,0,0,0,155,1081,1,0,0,0,157,1084, + 1,0,0,0,159,1090,1,0,0,0,161,1093,1,0,0,0,163,1112,1,0,0,0,165,1114, + 1,0,0,0,167,1124,1,0,0,0,169,1130,1,0,0,0,171,1137,1,0,0,0,173,1146, + 1,0,0,0,175,1151,1,0,0,0,177,1154,1,0,0,0,179,1167,1,0,0,0,181,1172, + 1,0,0,0,183,1176,1,0,0,0,185,1181,1,0,0,0,187,1186,1,0,0,0,189,1193, + 1,0,0,0,191,1201,1,0,0,0,193,1206,1,0,0,0,195,1215,1,0,0,0,197,1220, + 1,0,0,0,199,1226,1,0,0,0,201,1231,1,0,0,0,203,1237,1,0,0,0,205,1242, + 1,0,0,0,207,1254,1,0,0,0,209,1267,1,0,0,0,211,1271,1,0,0,0,213,1278, + 1,0,0,0,215,1282,1,0,0,0,217,1289,1,0,0,0,219,1296,1,0,0,0,221,1302, + 1,0,0,0,223,1307,1,0,0,0,225,1316,1,0,0,0,227,1320,1,0,0,0,229,1323, + 1,0,0,0,231,1327,1,0,0,0,233,1332,1,0,0,0,235,1338,1,0,0,0,237,1345, + 1,0,0,0,239,1348,1,0,0,0,241,1357,1,0,0,0,243,1360,1,0,0,0,245,1366, + 1,0,0,0,247,1372,1,0,0,0,249,1380,1,0,0,0,251,1385,1,0,0,0,253,1395, + 1,0,0,0,255,1404,1,0,0,0,257,1414,1,0,0,0,259,1423,1,0,0,0,261,1431, + 1,0,0,0,263,1442,1,0,0,0,265,1450,1,0,0,0,267,1456,1,0,0,0,269,1463, + 1,0,0,0,271,1470,1,0,0,0,273,1477,1,0,0,0,275,1485,1,0,0,0,277,1493, + 1,0,0,0,279,1504,1,0,0,0,281,1510,1,0,0,0,283,1517,1,0,0,0,285,1521, + 1,0,0,0,287,1526,1,0,0,0,289,1533,1,0,0,0,291,1540,1,0,0,0,293,1547, + 1,0,0,0,295,1552,1,0,0,0,297,1558,1,0,0,0,299,1562,1,0,0,0,301,1571, + 1,0,0,0,303,1576,1,0,0,0,305,1583,1,0,0,0,307,1589,1,0,0,0,309,1594, + 1,0,0,0,311,1604,1,0,0,0,313,1609,1,0,0,0,315,1616,1,0,0,0,317,1623, + 1,0,0,0,319,1629,1,0,0,0,321,1636,1,0,0,0,323,1646,1,0,0,0,325,1651, + 1,0,0,0,327,1656,1,0,0,0,329,1661,1,0,0,0,331,1669,1,0,0,0,333,1679, + 1,0,0,0,335,1682,1,0,0,0,337,1686,1,0,0,0,339,1693,1,0,0,0,341,1702, + 1,0,0,0,343,1707,1,0,0,0,345,1716,1,0,0,0,347,1720,1,0,0,0,349,1725, + 1,0,0,0,351,1735,1,0,0,0,353,1741,1,0,0,0,355,1748,1,0,0,0,357,1752, + 1,0,0,0,359,1758,1,0,0,0,361,1763,1,0,0,0,363,1770,1,0,0,0,365,1775, + 1,0,0,0,367,1782,1,0,0,0,369,1788,1,0,0,0,371,1793,1,0,0,0,373,1798, + 1,0,0,0,375,1804,1,0,0,0,377,1811,1,0,0,0,379,1826,1,0,0,0,381,1828, + 1,0,0,0,383,1834,1,0,0,0,385,1869,1,0,0,0,387,1911,1,0,0,0,389,1989, + 1,0,0,0,391,1991,1,0,0,0,393,1998,1,0,0,0,395,2002,1,0,0,0,397,2009, + 1,0,0,0,399,2022,1,0,0,0,401,2035,1,0,0,0,403,2037,1,0,0,0,405,2039, + 1,0,0,0,407,2041,1,0,0,0,409,2043,1,0,0,0,411,2045,1,0,0,0,413,2047, + 1,0,0,0,415,2049,1,0,0,0,417,2051,1,0,0,0,419,2053,1,0,0,0,421,2055, + 1,0,0,0,423,2057,1,0,0,0,425,2059,1,0,0,0,427,2061,1,0,0,0,429,2063, + 1,0,0,0,431,2065,1,0,0,0,433,2067,1,0,0,0,435,2069,1,0,0,0,437,2071, + 1,0,0,0,439,2073,1,0,0,0,441,2075,1,0,0,0,443,2077,1,0,0,0,445,2079, + 1,0,0,0,447,2081,1,0,0,0,449,2083,1,0,0,0,451,2085,1,0,0,0,453,2087, + 1,0,0,0,455,2089,1,0,0,0,457,2091,1,0,0,0,459,2093,1,0,0,0,461,2095, + 1,0,0,0,463,2098,1,0,0,0,465,2100,1,0,0,0,467,2102,1,0,0,0,469,2104, + 1,0,0,0,471,2106,1,0,0,0,473,2108,1,0,0,0,475,2111,1,0,0,0,477,2113, + 1,0,0,0,479,2115,1,0,0,0,481,2117,1,0,0,0,483,2120,1,0,0,0,485,2122, + 1,0,0,0,487,2125,1,0,0,0,489,2127,1,0,0,0,491,2129,1,0,0,0,493,2132, + 1,0,0,0,495,2136,1,0,0,0,497,2138,1,0,0,0,499,2140,1,0,0,0,501,2142, + 1,0,0,0,503,2145,1,0,0,0,505,2151,1,0,0,0,507,2153,1,0,0,0,509,2157, + 1,0,0,0,511,2160,1,0,0,0,513,2163,1,0,0,0,515,2165,1,0,0,0,517,2167, + 1,0,0,0,519,2169,1,0,0,0,521,2171,1,0,0,0,523,2173,1,0,0,0,525,2175, + 1,0,0,0,527,2178,1,0,0,0,529,2180,1,0,0,0,531,2182,1,0,0,0,533,2184, + 1,0,0,0,535,2186,1,0,0,0,537,2188,1,0,0,0,539,2190,1,0,0,0,541,2204, + 1,0,0,0,543,2218,1,0,0,0,545,546,3,401,200,0,546,547,3,407,203,0, + 547,548,3,407,203,0,548,2,1,0,0,0,549,550,3,401,200,0,550,551,3, + 411,205,0,551,552,3,439,219,0,552,553,3,409,204,0,553,554,3,435, + 217,0,554,4,1,0,0,0,555,556,3,401,200,0,556,557,3,423,211,0,557, + 558,3,417,208,0,558,559,3,401,200,0,559,560,3,437,218,0,560,6,1, + 0,0,0,561,562,3,401,200,0,562,563,3,423,211,0,563,564,3,423,211, + 0,564,8,1,0,0,0,565,566,3,401,200,0,566,567,3,423,211,0,567,568, + 3,439,219,0,568,569,3,409,204,0,569,570,3,435,217,0,570,10,1,0,0, + 0,571,572,3,401,200,0,572,573,3,427,213,0,573,574,3,407,203,0,574, + 12,1,0,0,0,575,576,3,401,200,0,576,577,3,427,213,0,577,578,3,439, + 219,0,578,579,3,417,208,0,579,14,1,0,0,0,580,581,3,401,200,0,581, + 582,3,427,213,0,582,583,3,449,224,0,583,16,1,0,0,0,584,585,3,401, + 200,0,585,586,3,435,217,0,586,587,3,435,217,0,587,588,3,401,200, + 0,588,589,3,449,224,0,589,18,1,0,0,0,590,591,3,401,200,0,591,592, + 3,437,218,0,592,20,1,0,0,0,593,594,3,401,200,0,594,595,3,437,218, + 0,595,596,3,405,202,0,596,608,1,0,0,0,597,598,3,401,200,0,598,599, + 3,437,218,0,599,600,3,405,202,0,600,601,3,409,204,0,601,602,3,427, + 213,0,602,603,3,407,203,0,603,604,3,417,208,0,604,605,3,427,213, + 0,605,606,3,413,206,0,606,608,1,0,0,0,607,593,1,0,0,0,607,597,1, + 0,0,0,608,22,1,0,0,0,609,610,3,401,200,0,610,611,3,437,218,0,611, + 612,3,429,214,0,612,613,3,411,205,0,613,24,1,0,0,0,614,615,3,401, + 200,0,615,616,3,437,218,0,616,617,3,439,219,0,617,26,1,0,0,0,618, + 619,3,401,200,0,619,620,3,437,218,0,620,621,3,449,224,0,621,622, + 3,427,213,0,622,623,3,405,202,0,623,28,1,0,0,0,624,625,3,401,200, + 0,625,626,3,439,219,0,626,627,3,439,219,0,627,628,3,401,200,0,628, + 629,3,405,202,0,629,630,3,415,207,0,630,30,1,0,0,0,631,632,3,403, + 201,0,632,633,3,409,204,0,633,634,3,439,219,0,634,635,3,445,222, + 0,635,636,3,409,204,0,636,637,3,409,204,0,637,638,3,427,213,0,638, + 32,1,0,0,0,639,640,3,403,201,0,640,641,3,429,214,0,641,642,3,439, + 219,0,642,643,3,415,207,0,643,34,1,0,0,0,644,645,3,403,201,0,645, + 646,3,449,224,0,646,36,1,0,0,0,647,648,3,405,202,0,648,649,3,401, + 200,0,649,650,3,437,218,0,650,651,3,409,204,0,651,38,1,0,0,0,652, + 653,3,405,202,0,653,654,3,401,200,0,654,655,3,437,218,0,655,656, + 3,439,219,0,656,40,1,0,0,0,657,658,3,405,202,0,658,659,3,415,207, + 0,659,660,3,409,204,0,660,661,3,405,202,0,661,662,3,421,210,0,662, + 42,1,0,0,0,663,664,3,405,202,0,664,665,3,423,211,0,665,666,3,409, + 204,0,666,667,3,401,200,0,667,668,3,435,217,0,668,44,1,0,0,0,669, + 670,3,405,202,0,670,671,3,423,211,0,671,672,3,441,220,0,672,673, + 3,437,218,0,673,674,3,439,219,0,674,675,3,409,204,0,675,676,3,435, + 217,0,676,46,1,0,0,0,677,678,3,405,202,0,678,679,3,429,214,0,679, + 680,3,407,203,0,680,681,3,409,204,0,681,682,3,405,202,0,682,48,1, + 0,0,0,683,684,3,405,202,0,684,685,3,429,214,0,685,686,3,415,207, + 0,686,687,3,429,214,0,687,688,3,435,217,0,688,689,3,439,219,0,689, + 50,1,0,0,0,690,691,3,405,202,0,691,692,3,429,214,0,692,693,3,423, + 211,0,693,694,3,423,211,0,694,695,3,401,200,0,695,696,3,439,219, + 0,696,697,3,409,204,0,697,52,1,0,0,0,698,699,3,405,202,0,699,700, + 3,429,214,0,700,701,3,423,211,0,701,702,3,441,220,0,702,703,3,425, + 212,0,703,704,3,427,213,0,704,54,1,0,0,0,705,706,3,405,202,0,706, + 707,3,429,214,0,707,708,3,425,212,0,708,709,3,425,212,0,709,710, + 3,409,204,0,710,711,3,427,213,0,711,712,3,439,219,0,712,56,1,0,0, + 0,713,714,3,405,202,0,714,715,3,429,214,0,715,716,3,427,213,0,716, + 717,3,437,218,0,717,718,3,439,219,0,718,719,3,435,217,0,719,720, + 3,401,200,0,720,721,3,417,208,0,721,722,3,427,213,0,722,723,3,439, + 219,0,723,58,1,0,0,0,724,725,3,405,202,0,725,726,3,435,217,0,726, + 727,3,409,204,0,727,728,3,401,200,0,728,729,3,439,219,0,729,730, + 3,409,204,0,730,60,1,0,0,0,731,732,3,405,202,0,732,733,3,435,217, + 0,733,734,3,429,214,0,734,735,3,437,218,0,735,736,3,437,218,0,736, + 62,1,0,0,0,737,738,3,405,202,0,738,739,3,441,220,0,739,740,3,403, + 201,0,740,741,3,409,204,0,741,64,1,0,0,0,742,743,3,405,202,0,743, + 744,3,441,220,0,744,745,3,435,217,0,745,746,3,435,217,0,746,747, + 3,409,204,0,747,748,3,427,213,0,748,749,3,439,219,0,749,66,1,0,0, + 0,750,751,3,407,203,0,751,752,3,401,200,0,752,753,3,439,219,0,753, + 754,3,401,200,0,754,755,3,403,201,0,755,756,3,401,200,0,756,757, + 3,437,218,0,757,758,3,409,204,0,758,68,1,0,0,0,759,760,3,407,203, + 0,760,761,3,401,200,0,761,762,3,439,219,0,762,763,3,401,200,0,763, + 764,3,403,201,0,764,765,3,401,200,0,765,766,3,437,218,0,766,767, + 3,409,204,0,767,768,3,437,218,0,768,70,1,0,0,0,769,770,3,407,203, + 0,770,771,3,401,200,0,771,772,3,439,219,0,772,773,3,409,204,0,773, + 72,1,0,0,0,774,775,3,407,203,0,775,776,3,401,200,0,776,777,3,449, + 224,0,777,74,1,0,0,0,778,779,3,407,203,0,779,780,3,409,204,0,780, + 781,3,407,203,0,781,782,3,441,220,0,782,783,3,431,215,0,783,784, + 3,423,211,0,784,785,3,417,208,0,785,786,3,405,202,0,786,787,3,401, + 200,0,787,788,3,439,219,0,788,789,3,409,204,0,789,76,1,0,0,0,790, + 791,3,407,203,0,791,792,3,409,204,0,792,793,3,411,205,0,793,794, + 3,401,200,0,794,795,3,441,220,0,795,796,3,423,211,0,796,797,3,439, + 219,0,797,78,1,0,0,0,798,799,3,407,203,0,799,800,3,409,204,0,800, + 801,3,423,211,0,801,802,3,401,200,0,802,803,3,449,224,0,803,80,1, + 0,0,0,804,805,3,407,203,0,805,806,3,409,204,0,806,807,3,423,211, + 0,807,808,3,409,204,0,808,809,3,439,219,0,809,810,3,409,204,0,810, + 82,1,0,0,0,811,812,3,407,203,0,812,813,3,409,204,0,813,814,3,437, + 218,0,814,815,3,405,202,0,815,84,1,0,0,0,816,817,3,407,203,0,817, + 818,3,409,204,0,818,819,3,437,218,0,819,820,3,405,202,0,820,821, + 3,409,204,0,821,822,3,427,213,0,822,823,3,407,203,0,823,824,3,417, + 208,0,824,825,3,427,213,0,825,826,3,413,206,0,826,86,1,0,0,0,827, + 828,3,407,203,0,828,829,3,409,204,0,829,830,3,437,218,0,830,831, + 3,405,202,0,831,832,3,435,217,0,832,833,3,417,208,0,833,834,3,403, + 201,0,834,835,3,409,204,0,835,88,1,0,0,0,836,837,3,407,203,0,837, + 838,3,409,204,0,838,839,3,439,219,0,839,840,3,401,200,0,840,841, + 3,405,202,0,841,842,3,415,207,0,842,90,1,0,0,0,843,844,3,407,203, + 0,844,845,3,417,208,0,845,846,3,405,202,0,846,847,3,439,219,0,847, + 848,3,417,208,0,848,849,3,429,214,0,849,850,3,427,213,0,850,851, + 3,401,200,0,851,852,3,435,217,0,852,853,3,417,208,0,853,854,3,409, + 204,0,854,855,3,437,218,0,855,92,1,0,0,0,856,857,3,407,203,0,857, + 858,3,417,208,0,858,859,3,405,202,0,859,860,3,439,219,0,860,861, + 3,417,208,0,861,862,3,429,214,0,862,863,3,427,213,0,863,864,3,401, + 200,0,864,865,3,435,217,0,865,866,3,449,224,0,866,94,1,0,0,0,867, + 868,3,407,203,0,868,869,3,417,208,0,869,870,3,437,218,0,870,871, + 3,421,210,0,871,96,1,0,0,0,872,873,3,407,203,0,873,874,3,417,208, + 0,874,875,3,437,218,0,875,876,3,439,219,0,876,877,3,417,208,0,877, + 878,3,427,213,0,878,879,3,405,202,0,879,880,3,439,219,0,880,98,1, + 0,0,0,881,882,3,407,203,0,882,883,3,417,208,0,883,884,3,437,218, + 0,884,885,3,439,219,0,885,886,3,435,217,0,886,887,3,417,208,0,887, + 888,3,403,201,0,888,889,3,441,220,0,889,890,3,439,219,0,890,891, + 3,409,204,0,891,892,3,407,203,0,892,100,1,0,0,0,893,894,3,407,203, + 0,894,895,3,435,217,0,895,896,3,429,214,0,896,897,3,431,215,0,897, + 102,1,0,0,0,898,899,3,409,204,0,899,900,3,423,211,0,900,901,3,437, + 218,0,901,902,3,409,204,0,902,104,1,0,0,0,903,904,3,409,204,0,904, + 905,3,427,213,0,905,906,3,407,203,0,906,106,1,0,0,0,907,908,3,409, + 204,0,908,909,3,427,213,0,909,910,3,413,206,0,910,911,3,417,208, + 0,911,912,3,427,213,0,912,913,3,409,204,0,913,108,1,0,0,0,914,915, + 3,409,204,0,915,916,3,443,221,0,916,917,3,409,204,0,917,918,3,427, + 213,0,918,919,3,439,219,0,919,920,3,437,218,0,920,110,1,0,0,0,921, + 922,3,409,204,0,922,923,3,447,223,0,923,924,3,417,208,0,924,925, + 3,437,218,0,925,926,3,439,219,0,926,927,3,437,218,0,927,112,1,0, + 0,0,928,929,3,409,204,0,929,930,3,447,223,0,930,931,3,431,215,0, + 931,932,3,423,211,0,932,933,3,401,200,0,933,934,3,417,208,0,934, + 935,3,427,213,0,935,114,1,0,0,0,936,937,3,409,204,0,937,938,3,447, + 223,0,938,939,3,431,215,0,939,940,3,435,217,0,940,941,3,409,204, + 0,941,942,3,437,218,0,942,943,3,437,218,0,943,944,3,417,208,0,944, + 945,3,429,214,0,945,946,3,427,213,0,946,116,1,0,0,0,947,948,3,409, + 204,0,948,949,3,447,223,0,949,950,3,439,219,0,950,951,3,435,217, + 0,951,952,3,401,200,0,952,953,3,405,202,0,953,954,3,439,219,0,954, + 118,1,0,0,0,955,956,3,411,205,0,956,957,3,409,204,0,957,958,3,439, + 219,0,958,959,3,405,202,0,959,960,3,415,207,0,960,961,3,409,204, + 0,961,962,3,437,218,0,962,120,1,0,0,0,963,964,3,411,205,0,964,965, + 3,417,208,0,965,966,3,427,213,0,966,967,3,401,200,0,967,968,3,423, + 211,0,968,122,1,0,0,0,969,970,3,411,205,0,970,971,3,417,208,0,971, + 972,3,435,217,0,972,973,3,437,218,0,973,974,3,439,219,0,974,124, + 1,0,0,0,975,976,3,411,205,0,976,977,3,423,211,0,977,978,3,441,220, + 0,978,979,3,437,218,0,979,980,3,415,207,0,980,126,1,0,0,0,981,982, + 3,411,205,0,982,983,3,429,214,0,983,984,3,423,211,0,984,985,3,423, + 211,0,985,986,3,429,214,0,986,987,3,445,222,0,987,988,3,417,208, + 0,988,989,3,427,213,0,989,990,3,413,206,0,990,128,1,0,0,0,991,992, + 3,411,205,0,992,993,3,429,214,0,993,994,3,435,217,0,994,130,1,0, + 0,0,995,996,3,411,205,0,996,997,3,429,214,0,997,998,3,435,217,0, + 998,999,3,425,212,0,999,1000,3,401,200,0,1000,1001,3,439,219,0,1001, + 132,1,0,0,0,1002,1003,3,411,205,0,1003,1004,3,435,217,0,1004,1005, + 3,409,204,0,1005,1006,3,409,204,0,1006,1007,3,451,225,0,1007,1008, + 3,409,204,0,1008,134,1,0,0,0,1009,1010,3,411,205,0,1010,1011,3,435, + 217,0,1011,1012,3,429,214,0,1012,1013,3,425,212,0,1013,136,1,0,0, + 0,1014,1015,3,411,205,0,1015,1016,3,441,220,0,1016,1017,3,423,211, + 0,1017,1018,3,423,211,0,1018,138,1,0,0,0,1019,1020,3,411,205,0,1020, + 1021,3,441,220,0,1021,1022,3,427,213,0,1022,1023,3,405,202,0,1023, + 1024,3,439,219,0,1024,1025,3,417,208,0,1025,1026,3,429,214,0,1026, + 1027,3,427,213,0,1027,140,1,0,0,0,1028,1029,3,413,206,0,1029,1030, + 3,423,211,0,1030,1031,3,429,214,0,1031,1032,3,403,201,0,1032,1033, + 3,401,200,0,1033,1034,3,423,211,0,1034,142,1,0,0,0,1035,1036,3,413, + 206,0,1036,1037,3,435,217,0,1037,1038,3,401,200,0,1038,1039,3,427, + 213,0,1039,1040,3,441,220,0,1040,1041,3,423,211,0,1041,1042,3,401, + 200,0,1042,1043,3,435,217,0,1043,1044,3,417,208,0,1044,1045,3,439, + 219,0,1045,1046,3,449,224,0,1046,144,1,0,0,0,1047,1048,3,413,206, + 0,1048,1049,3,435,217,0,1049,1050,3,429,214,0,1050,1051,3,441,220, + 0,1051,1052,3,431,215,0,1052,146,1,0,0,0,1053,1054,3,415,207,0,1054, + 1055,3,401,200,0,1055,1056,3,443,221,0,1056,1057,3,417,208,0,1057, + 1058,3,427,213,0,1058,1059,3,413,206,0,1059,148,1,0,0,0,1060,1061, + 3,415,207,0,1061,1062,3,417,208,0,1062,1063,3,409,204,0,1063,1064, + 3,435,217,0,1064,1065,3,401,200,0,1065,1066,3,435,217,0,1066,1067, + 3,405,202,0,1067,1068,3,415,207,0,1068,1069,3,417,208,0,1069,1070, + 3,405,202,0,1070,1071,3,401,200,0,1071,1072,3,423,211,0,1072,150, + 1,0,0,0,1073,1074,3,415,207,0,1074,1075,3,429,214,0,1075,1076,3, + 441,220,0,1076,1077,3,435,217,0,1077,152,1,0,0,0,1078,1079,3,417, + 208,0,1079,1080,3,407,203,0,1080,154,1,0,0,0,1081,1082,3,417,208, + 0,1082,1083,3,411,205,0,1083,156,1,0,0,0,1084,1085,3,417,208,0,1085, + 1086,3,423,211,0,1086,1087,3,417,208,0,1087,1088,3,421,210,0,1088, + 1089,3,409,204,0,1089,158,1,0,0,0,1090,1091,3,417,208,0,1091,1092, + 3,427,213,0,1092,160,1,0,0,0,1093,1094,3,417,208,0,1094,1095,3,427, + 213,0,1095,1096,3,407,203,0,1096,1097,3,409,204,0,1097,1098,3,447, + 223,0,1098,162,1,0,0,0,1099,1100,3,417,208,0,1100,1101,3,427,213, + 0,1101,1102,3,411,205,0,1102,1113,1,0,0,0,1103,1104,3,417,208,0, + 1104,1105,3,427,213,0,1105,1106,3,411,205,0,1106,1107,3,417,208, + 0,1107,1108,3,427,213,0,1108,1109,3,417,208,0,1109,1110,3,439,219, + 0,1110,1111,3,449,224,0,1111,1113,1,0,0,0,1112,1099,1,0,0,0,1112, + 1103,1,0,0,0,1113,164,1,0,0,0,1114,1115,3,417,208,0,1115,1116,3, + 427,213,0,1116,1117,3,419,209,0,1117,1118,3,409,204,0,1118,1119, + 3,405,202,0,1119,1120,3,439,219,0,1120,1121,3,417,208,0,1121,1122, + 3,443,221,0,1122,1123,3,409,204,0,1123,166,1,0,0,0,1124,1125,3,417, + 208,0,1125,1126,3,427,213,0,1126,1127,3,427,213,0,1127,1128,3,409, + 204,0,1128,1129,3,435,217,0,1129,168,1,0,0,0,1130,1131,3,417,208, + 0,1131,1132,3,427,213,0,1132,1133,3,437,218,0,1133,1134,3,409,204, + 0,1134,1135,3,435,217,0,1135,1136,3,439,219,0,1136,170,1,0,0,0,1137, + 1138,3,417,208,0,1138,1139,3,427,213,0,1139,1140,3,439,219,0,1140, + 1141,3,409,204,0,1141,1142,3,435,217,0,1142,1143,3,443,221,0,1143, + 1144,3,401,200,0,1144,1145,3,423,211,0,1145,172,1,0,0,0,1146,1147, + 3,417,208,0,1147,1148,3,427,213,0,1148,1149,3,439,219,0,1149,1150, + 3,429,214,0,1150,174,1,0,0,0,1151,1152,3,417,208,0,1152,1153,3,437, + 218,0,1153,176,1,0,0,0,1154,1155,3,417,208,0,1155,1156,3,437,218, + 0,1156,1157,3,537,268,0,1157,1158,3,429,214,0,1158,1159,3,403,201, + 0,1159,1160,3,419,209,0,1160,1161,3,409,204,0,1161,1162,3,405,202, + 0,1162,1163,3,439,219,0,1163,1164,3,537,268,0,1164,1165,3,417,208, + 0,1165,1166,3,407,203,0,1166,178,1,0,0,0,1167,1168,3,419,209,0,1168, + 1169,3,429,214,0,1169,1170,3,417,208,0,1170,1171,3,427,213,0,1171, + 180,1,0,0,0,1172,1173,3,421,210,0,1173,1174,3,409,204,0,1174,1175, + 3,449,224,0,1175,182,1,0,0,0,1176,1177,3,421,210,0,1177,1178,3,417, + 208,0,1178,1179,3,423,211,0,1179,1180,3,423,211,0,1180,184,1,0,0, + 0,1181,1182,3,423,211,0,1182,1183,3,401,200,0,1183,1184,3,437,218, + 0,1184,1185,3,439,219,0,1185,186,1,0,0,0,1186,1187,3,423,211,0,1187, + 1188,3,401,200,0,1188,1189,3,449,224,0,1189,1190,3,429,214,0,1190, + 1191,3,441,220,0,1191,1192,3,439,219,0,1192,188,1,0,0,0,1193,1194, + 3,423,211,0,1194,1195,3,409,204,0,1195,1196,3,401,200,0,1196,1197, + 3,407,203,0,1197,1198,3,417,208,0,1198,1199,3,427,213,0,1199,1200, + 3,413,206,0,1200,190,1,0,0,0,1201,1202,3,423,211,0,1202,1203,3,409, + 204,0,1203,1204,3,411,205,0,1204,1205,3,439,219,0,1205,192,1,0,0, + 0,1206,1207,3,423,211,0,1207,1208,3,417,208,0,1208,1209,3,411,205, + 0,1209,1210,3,409,204,0,1210,1211,3,439,219,0,1211,1212,3,417,208, + 0,1212,1213,3,425,212,0,1213,1214,3,409,204,0,1214,194,1,0,0,0,1215, + 1216,3,423,211,0,1216,1217,3,417,208,0,1217,1218,3,421,210,0,1218, + 1219,3,409,204,0,1219,196,1,0,0,0,1220,1221,3,423,211,0,1221,1222, + 3,417,208,0,1222,1223,3,425,212,0,1223,1224,3,417,208,0,1224,1225, + 3,439,219,0,1225,198,1,0,0,0,1226,1227,3,423,211,0,1227,1228,3,417, + 208,0,1228,1229,3,443,221,0,1229,1230,3,409,204,0,1230,200,1,0,0, + 0,1231,1232,3,423,211,0,1232,1233,3,429,214,0,1233,1234,3,405,202, + 0,1234,1235,3,401,200,0,1235,1236,3,423,211,0,1236,202,1,0,0,0,1237, + 1238,3,423,211,0,1238,1239,3,429,214,0,1239,1240,3,413,206,0,1240, + 1241,3,437,218,0,1241,204,1,0,0,0,1242,1243,3,425,212,0,1243,1244, + 3,401,200,0,1244,1245,3,439,219,0,1245,1246,3,409,204,0,1246,1247, + 3,435,217,0,1247,1248,3,417,208,0,1248,1249,3,401,200,0,1249,1250, + 3,423,211,0,1250,1251,3,417,208,0,1251,1252,3,451,225,0,1252,1253, + 3,409,204,0,1253,206,1,0,0,0,1254,1255,3,425,212,0,1255,1256,3,401, + 200,0,1256,1257,3,439,219,0,1257,1258,3,409,204,0,1258,1259,3,435, + 217,0,1259,1260,3,417,208,0,1260,1261,3,401,200,0,1261,1262,3,423, + 211,0,1262,1263,3,417,208,0,1263,1264,3,451,225,0,1264,1265,3,409, + 204,0,1265,1266,3,407,203,0,1266,208,1,0,0,0,1267,1268,3,425,212, + 0,1268,1269,3,401,200,0,1269,1270,3,447,223,0,1270,210,1,0,0,0,1271, + 1272,3,425,212,0,1272,1273,3,409,204,0,1273,1274,3,435,217,0,1274, + 1275,3,413,206,0,1275,1276,3,409,204,0,1276,1277,3,437,218,0,1277, + 212,1,0,0,0,1278,1279,3,425,212,0,1279,1280,3,417,208,0,1280,1281, + 3,427,213,0,1281,214,1,0,0,0,1282,1283,3,425,212,0,1283,1284,3,417, + 208,0,1284,1285,3,427,213,0,1285,1286,3,441,220,0,1286,1287,3,439, + 219,0,1287,1288,3,409,204,0,1288,216,1,0,0,0,1289,1290,3,425,212, + 0,1290,1291,3,429,214,0,1291,1292,3,407,203,0,1292,1293,3,417,208, + 0,1293,1294,3,411,205,0,1294,1295,3,449,224,0,1295,218,1,0,0,0,1296, + 1297,3,425,212,0,1297,1298,3,429,214,0,1298,1299,3,427,213,0,1299, + 1300,3,439,219,0,1300,1301,3,415,207,0,1301,220,1,0,0,0,1302,1303, + 3,425,212,0,1303,1304,3,429,214,0,1304,1305,3,443,221,0,1305,1306, + 3,409,204,0,1306,222,1,0,0,0,1307,1308,3,425,212,0,1308,1309,3,441, + 220,0,1309,1310,3,439,219,0,1310,1311,3,401,200,0,1311,1312,3,439, + 219,0,1312,1313,3,417,208,0,1313,1314,3,429,214,0,1314,1315,3,427, + 213,0,1315,224,1,0,0,0,1316,1317,3,427,213,0,1317,1318,3,401,200, + 0,1318,1319,3,427,213,0,1319,226,1,0,0,0,1320,1321,3,427,213,0,1321, + 1322,3,429,214,0,1322,228,1,0,0,0,1323,1324,3,427,213,0,1324,1325, + 3,429,214,0,1325,1326,3,439,219,0,1326,230,1,0,0,0,1327,1328,3,427, + 213,0,1328,1329,3,441,220,0,1329,1330,3,423,211,0,1330,1331,3,423, + 211,0,1331,232,1,0,0,0,1332,1333,3,427,213,0,1333,1334,3,441,220, + 0,1334,1335,3,423,211,0,1335,1336,3,423,211,0,1336,1337,3,437,218, + 0,1337,234,1,0,0,0,1338,1339,3,429,214,0,1339,1340,3,411,205,0,1340, + 1341,3,411,205,0,1341,1342,3,437,218,0,1342,1343,3,409,204,0,1343, + 1344,3,439,219,0,1344,236,1,0,0,0,1345,1346,3,429,214,0,1346,1347, + 3,427,213,0,1347,238,1,0,0,0,1348,1349,3,429,214,0,1349,1350,3,431, + 215,0,1350,1351,3,439,219,0,1351,1352,3,417,208,0,1352,1353,3,425, + 212,0,1353,1354,3,417,208,0,1354,1355,3,451,225,0,1355,1356,3,409, + 204,0,1356,240,1,0,0,0,1357,1358,3,429,214,0,1358,1359,3,435,217, + 0,1359,242,1,0,0,0,1360,1361,3,429,214,0,1361,1362,3,435,217,0,1362, + 1363,3,407,203,0,1363,1364,3,409,204,0,1364,1365,3,435,217,0,1365, + 244,1,0,0,0,1366,1367,3,429,214,0,1367,1368,3,441,220,0,1368,1369, + 3,439,219,0,1369,1370,3,409,204,0,1370,1371,3,435,217,0,1371,246, + 1,0,0,0,1372,1373,3,429,214,0,1373,1374,3,441,220,0,1374,1375,3, + 439,219,0,1375,1376,3,411,205,0,1376,1377,3,417,208,0,1377,1378, + 3,423,211,0,1378,1379,3,409,204,0,1379,248,1,0,0,0,1380,1381,3,429, + 214,0,1381,1382,3,443,221,0,1382,1383,3,409,204,0,1383,1384,3,435, + 217,0,1384,250,1,0,0,0,1385,1386,3,431,215,0,1386,1387,3,401,200, + 0,1387,1388,3,435,217,0,1388,1389,3,439,219,0,1389,1390,3,417,208, + 0,1390,1391,3,439,219,0,1391,1392,3,417,208,0,1392,1393,3,429,214, + 0,1393,1394,3,427,213,0,1394,252,1,0,0,0,1395,1396,3,431,215,0,1396, + 1397,3,429,214,0,1397,1398,3,431,215,0,1398,1399,3,441,220,0,1399, + 1400,3,423,211,0,1400,1401,3,401,200,0,1401,1402,3,439,219,0,1402, + 1403,3,409,204,0,1403,254,1,0,0,0,1404,1405,3,431,215,0,1405,1406, + 3,435,217,0,1406,1407,3,409,204,0,1407,1408,3,405,202,0,1408,1409, + 3,409,204,0,1409,1410,3,407,203,0,1410,1411,3,417,208,0,1411,1412, + 3,427,213,0,1412,1413,3,413,206,0,1413,256,1,0,0,0,1414,1415,3,431, + 215,0,1415,1416,3,435,217,0,1416,1417,3,409,204,0,1417,1418,3,445, + 222,0,1418,1419,3,415,207,0,1419,1420,3,409,204,0,1420,1421,3,435, + 217,0,1421,1422,3,409,204,0,1422,258,1,0,0,0,1423,1424,3,431,215, + 0,1424,1425,3,435,217,0,1425,1426,3,417,208,0,1426,1427,3,425,212, + 0,1427,1428,3,401,200,0,1428,1429,3,435,217,0,1429,1430,3,449,224, + 0,1430,260,1,0,0,0,1431,1432,3,431,215,0,1432,1433,3,435,217,0,1433, + 1434,3,429,214,0,1434,1435,3,419,209,0,1435,1436,3,409,204,0,1436, + 1437,3,405,202,0,1437,1438,3,439,219,0,1438,1439,3,417,208,0,1439, + 1440,3,429,214,0,1440,1441,3,427,213,0,1441,262,1,0,0,0,1442,1443, + 3,433,216,0,1443,1444,3,441,220,0,1444,1445,3,401,200,0,1445,1446, + 3,435,217,0,1446,1447,3,439,219,0,1447,1448,3,409,204,0,1448,1449, + 3,435,217,0,1449,264,1,0,0,0,1450,1451,3,435,217,0,1451,1452,3,401, + 200,0,1452,1453,3,427,213,0,1453,1454,3,413,206,0,1454,1455,3,409, + 204,0,1455,266,1,0,0,0,1456,1457,3,435,217,0,1457,1458,3,409,204, + 0,1458,1459,3,423,211,0,1459,1460,3,429,214,0,1460,1461,3,401,200, + 0,1461,1462,3,407,203,0,1462,268,1,0,0,0,1463,1464,3,435,217,0,1464, + 1465,3,409,204,0,1465,1466,3,425,212,0,1466,1467,3,429,214,0,1467, + 1468,3,443,221,0,1468,1469,3,409,204,0,1469,270,1,0,0,0,1470,1471, + 3,435,217,0,1471,1472,3,409,204,0,1472,1473,3,427,213,0,1473,1474, + 3,401,200,0,1474,1475,3,425,212,0,1475,1476,3,409,204,0,1476,272, + 1,0,0,0,1477,1478,3,435,217,0,1478,1479,3,409,204,0,1479,1480,3, + 431,215,0,1480,1481,3,423,211,0,1481,1482,3,401,200,0,1482,1483, + 3,405,202,0,1483,1484,3,409,204,0,1484,274,1,0,0,0,1485,1486,3,435, + 217,0,1486,1487,3,409,204,0,1487,1488,3,431,215,0,1488,1489,3,423, + 211,0,1489,1490,3,417,208,0,1490,1491,3,405,202,0,1491,1492,3,401, + 200,0,1492,276,1,0,0,0,1493,1494,3,435,217,0,1494,1495,3,409,204, + 0,1495,1496,3,431,215,0,1496,1497,3,423,211,0,1497,1498,3,417,208, + 0,1498,1499,3,405,202,0,1499,1500,3,401,200,0,1500,1501,3,439,219, + 0,1501,1502,3,409,204,0,1502,1503,3,407,203,0,1503,278,1,0,0,0,1504, + 1505,3,435,217,0,1505,1506,3,417,208,0,1506,1507,3,413,206,0,1507, + 1508,3,415,207,0,1508,1509,3,439,219,0,1509,280,1,0,0,0,1510,1511, + 3,435,217,0,1511,1512,3,429,214,0,1512,1513,3,423,211,0,1513,1514, + 3,423,211,0,1514,1515,3,441,220,0,1515,1516,3,431,215,0,1516,282, + 1,0,0,0,1517,1518,3,435,217,0,1518,1519,3,429,214,0,1519,1520,3, + 445,222,0,1520,284,1,0,0,0,1521,1522,3,435,217,0,1522,1523,3,429, + 214,0,1523,1524,3,445,222,0,1524,1525,3,437,218,0,1525,286,1,0,0, + 0,1526,1527,3,437,218,0,1527,1528,3,401,200,0,1528,1529,3,425,212, + 0,1529,1530,3,431,215,0,1530,1531,3,423,211,0,1531,1532,3,409,204, + 0,1532,288,1,0,0,0,1533,1534,3,437,218,0,1534,1535,3,409,204,0,1535, + 1536,3,405,202,0,1536,1537,3,429,214,0,1537,1538,3,427,213,0,1538, + 1539,3,407,203,0,1539,290,1,0,0,0,1540,1541,3,437,218,0,1541,1542, + 3,409,204,0,1542,1543,3,423,211,0,1543,1544,3,409,204,0,1544,1545, + 3,405,202,0,1545,1546,3,439,219,0,1546,292,1,0,0,0,1547,1548,3,437, + 218,0,1548,1549,3,409,204,0,1549,1550,3,425,212,0,1550,1551,3,417, + 208,0,1551,294,1,0,0,0,1552,1553,3,437,218,0,1553,1554,3,409,204, + 0,1554,1555,3,427,213,0,1555,1556,3,407,203,0,1556,1557,3,437,218, + 0,1557,296,1,0,0,0,1558,1559,3,437,218,0,1559,1560,3,409,204,0,1560, + 1561,3,439,219,0,1561,298,1,0,0,0,1562,1563,3,437,218,0,1563,1564, + 3,409,204,0,1564,1565,3,439,219,0,1565,1566,3,439,219,0,1566,1567, + 3,417,208,0,1567,1568,3,427,213,0,1568,1569,3,413,206,0,1569,1570, + 3,437,218,0,1570,300,1,0,0,0,1571,1572,3,437,218,0,1572,1573,3,415, + 207,0,1573,1574,3,429,214,0,1574,1575,3,445,222,0,1575,302,1,0,0, + 0,1576,1577,3,437,218,0,1577,1578,3,429,214,0,1578,1579,3,441,220, + 0,1579,1580,3,435,217,0,1580,1581,3,405,202,0,1581,1582,3,409,204, + 0,1582,304,1,0,0,0,1583,1584,3,437,218,0,1584,1585,3,439,219,0,1585, + 1586,3,401,200,0,1586,1587,3,435,217,0,1587,1588,3,439,219,0,1588, + 306,1,0,0,0,1589,1590,3,437,218,0,1590,1591,3,439,219,0,1591,1592, + 3,429,214,0,1592,1593,3,431,215,0,1593,308,1,0,0,0,1594,1595,3,437, + 218,0,1595,1596,3,441,220,0,1596,1597,3,403,201,0,1597,1598,3,437, + 218,0,1598,1599,3,439,219,0,1599,1600,3,435,217,0,1600,1601,3,417, + 208,0,1601,1602,3,427,213,0,1602,1603,3,413,206,0,1603,310,1,0,0, + 0,1604,1605,3,437,218,0,1605,1606,3,449,224,0,1606,1607,3,427,213, + 0,1607,1608,3,405,202,0,1608,312,1,0,0,0,1609,1610,3,437,218,0,1610, + 1611,3,449,224,0,1611,1612,3,427,213,0,1612,1613,3,439,219,0,1613, + 1614,3,401,200,0,1614,1615,3,447,223,0,1615,314,1,0,0,0,1616,1617, + 3,437,218,0,1617,1618,3,449,224,0,1618,1619,3,437,218,0,1619,1620, + 3,439,219,0,1620,1621,3,409,204,0,1621,1622,3,425,212,0,1622,316, + 1,0,0,0,1623,1624,3,439,219,0,1624,1625,3,401,200,0,1625,1626,3, + 403,201,0,1626,1627,3,423,211,0,1627,1628,3,409,204,0,1628,318,1, + 0,0,0,1629,1630,3,439,219,0,1630,1631,3,401,200,0,1631,1632,3,403, + 201,0,1632,1633,3,423,211,0,1633,1634,3,409,204,0,1634,1635,3,437, + 218,0,1635,320,1,0,0,0,1636,1637,3,439,219,0,1637,1638,3,409,204, + 0,1638,1639,3,425,212,0,1639,1640,3,431,215,0,1640,1641,3,429,214, + 0,1641,1642,3,435,217,0,1642,1643,3,401,200,0,1643,1644,3,435,217, + 0,1644,1645,3,449,224,0,1645,322,1,0,0,0,1646,1647,3,439,219,0,1647, + 1648,3,409,204,0,1648,1649,3,437,218,0,1649,1650,3,439,219,0,1650, + 324,1,0,0,0,1651,1652,3,439,219,0,1652,1653,3,415,207,0,1653,1654, + 3,409,204,0,1654,1655,3,427,213,0,1655,326,1,0,0,0,1656,1657,3,439, + 219,0,1657,1658,3,417,208,0,1658,1659,3,409,204,0,1659,1660,3,437, + 218,0,1660,328,1,0,0,0,1661,1662,3,439,219,0,1662,1663,3,417,208, + 0,1663,1664,3,425,212,0,1664,1665,3,409,204,0,1665,1666,3,429,214, + 0,1666,1667,3,441,220,0,1667,1668,3,439,219,0,1668,330,1,0,0,0,1669, + 1670,3,439,219,0,1670,1671,3,417,208,0,1671,1672,3,425,212,0,1672, + 1673,3,409,204,0,1673,1674,3,437,218,0,1674,1675,3,439,219,0,1675, + 1676,3,401,200,0,1676,1677,3,425,212,0,1677,1678,3,431,215,0,1678, + 332,1,0,0,0,1679,1680,3,439,219,0,1680,1681,3,429,214,0,1681,334, + 1,0,0,0,1682,1683,3,439,219,0,1683,1684,3,429,214,0,1684,1685,3, + 431,215,0,1685,336,1,0,0,0,1686,1687,3,439,219,0,1687,1688,3,429, + 214,0,1688,1689,3,439,219,0,1689,1690,3,401,200,0,1690,1691,3,423, + 211,0,1691,1692,3,437,218,0,1692,338,1,0,0,0,1693,1694,3,439,219, + 0,1694,1695,3,435,217,0,1695,1696,3,401,200,0,1696,1697,3,417,208, + 0,1697,1698,3,423,211,0,1698,1699,3,417,208,0,1699,1700,3,427,213, + 0,1700,1701,3,413,206,0,1701,340,1,0,0,0,1702,1703,3,439,219,0,1703, + 1704,3,435,217,0,1704,1705,3,417,208,0,1705,1706,3,425,212,0,1706, + 342,1,0,0,0,1707,1708,3,439,219,0,1708,1709,3,435,217,0,1709,1710, + 3,441,220,0,1710,1711,3,427,213,0,1711,1712,3,405,202,0,1712,1713, + 3,401,200,0,1713,1714,3,439,219,0,1714,1715,3,409,204,0,1715,344, + 1,0,0,0,1716,1717,3,439,219,0,1717,1718,3,439,219,0,1718,1719,3, + 423,211,0,1719,346,1,0,0,0,1720,1721,3,439,219,0,1721,1722,3,449, + 224,0,1722,1723,3,431,215,0,1723,1724,3,409,204,0,1724,348,1,0,0, + 0,1725,1726,3,441,220,0,1726,1727,3,427,213,0,1727,1728,3,403,201, + 0,1728,1729,3,429,214,0,1729,1730,3,441,220,0,1730,1731,3,427,213, + 0,1731,1732,3,407,203,0,1732,1733,3,409,204,0,1733,1734,3,407,203, + 0,1734,350,1,0,0,0,1735,1736,3,441,220,0,1736,1737,3,427,213,0,1737, + 1738,3,417,208,0,1738,1739,3,429,214,0,1739,1740,3,427,213,0,1740, + 352,1,0,0,0,1741,1742,3,441,220,0,1742,1743,3,431,215,0,1743,1744, + 3,407,203,0,1744,1745,3,401,200,0,1745,1746,3,439,219,0,1746,1747, + 3,409,204,0,1747,354,1,0,0,0,1748,1749,3,441,220,0,1749,1750,3,437, + 218,0,1750,1751,3,409,204,0,1751,356,1,0,0,0,1752,1753,3,441,220, + 0,1753,1754,3,437,218,0,1754,1755,3,417,208,0,1755,1756,3,427,213, + 0,1756,1757,3,413,206,0,1757,358,1,0,0,0,1758,1759,3,441,220,0,1759, + 1760,3,441,220,0,1760,1761,3,417,208,0,1761,1762,3,407,203,0,1762, + 360,1,0,0,0,1763,1764,3,443,221,0,1764,1765,3,401,200,0,1765,1766, + 3,423,211,0,1766,1767,3,441,220,0,1767,1768,3,409,204,0,1768,1769, + 3,437,218,0,1769,362,1,0,0,0,1770,1771,3,443,221,0,1771,1772,3,417, + 208,0,1772,1773,3,409,204,0,1773,1774,3,445,222,0,1774,364,1,0,0, + 0,1775,1776,3,443,221,0,1776,1777,3,429,214,0,1777,1778,3,423,211, + 0,1778,1779,3,441,220,0,1779,1780,3,425,212,0,1780,1781,3,409,204, + 0,1781,366,1,0,0,0,1782,1783,3,445,222,0,1783,1784,3,401,200,0,1784, + 1785,3,439,219,0,1785,1786,3,405,202,0,1786,1787,3,415,207,0,1787, + 368,1,0,0,0,1788,1789,3,445,222,0,1789,1790,3,409,204,0,1790,1791, + 3,409,204,0,1791,1792,3,421,210,0,1792,370,1,0,0,0,1793,1794,3,445, + 222,0,1794,1795,3,415,207,0,1795,1796,3,409,204,0,1796,1797,3,427, + 213,0,1797,372,1,0,0,0,1798,1799,3,445,222,0,1799,1800,3,415,207, + 0,1800,1801,3,409,204,0,1801,1802,3,435,217,0,1802,1803,3,409,204, + 0,1803,374,1,0,0,0,1804,1805,3,445,222,0,1805,1806,3,417,208,0,1806, + 1807,3,427,213,0,1807,1808,3,407,203,0,1808,1809,3,429,214,0,1809, + 1810,3,445,222,0,1810,376,1,0,0,0,1811,1812,3,445,222,0,1812,1813, + 3,417,208,0,1813,1814,3,439,219,0,1814,1815,3,415,207,0,1815,378, + 1,0,0,0,1816,1817,3,449,224,0,1817,1818,3,409,204,0,1818,1819,3, + 401,200,0,1819,1820,3,435,217,0,1820,1827,1,0,0,0,1821,1822,3,449, + 224,0,1822,1823,3,449,224,0,1823,1824,3,449,224,0,1824,1825,3,449, + 224,0,1825,1827,1,0,0,0,1826,1816,1,0,0,0,1826,1821,1,0,0,0,1827, + 380,1,0,0,0,1828,1829,5,102,0,0,1829,1830,5,97,0,0,1830,1831,5,108, + 0,0,1831,1832,5,115,0,0,1832,1833,5,101,0,0,1833,382,1,0,0,0,1834, + 1835,5,116,0,0,1835,1836,5,114,0,0,1836,1837,5,117,0,0,1837,1838, + 5,101,0,0,1838,384,1,0,0,0,1839,1840,3,467,233,0,1840,1841,3,403, + 201,0,1841,1870,1,0,0,0,1842,1843,3,467,233,0,1843,1844,3,411,205, + 0,1844,1870,1,0,0,0,1845,1846,3,467,233,0,1846,1847,3,435,217,0, + 1847,1870,1,0,0,0,1848,1849,3,467,233,0,1849,1850,3,427,213,0,1850, + 1870,1,0,0,0,1851,1852,3,467,233,0,1852,1853,3,439,219,0,1853,1870, + 1,0,0,0,1854,1855,3,467,233,0,1855,1856,5,48,0,0,1856,1870,1,0,0, + 0,1857,1858,3,467,233,0,1858,1859,3,401,200,0,1859,1870,1,0,0,0, + 1860,1861,3,467,233,0,1861,1862,3,443,221,0,1862,1870,1,0,0,0,1863, + 1864,3,467,233,0,1864,1865,3,467,233,0,1865,1870,1,0,0,0,1866,1867, + 3,467,233,0,1867,1868,3,521,260,0,1868,1870,1,0,0,0,1869,1839,1, + 0,0,0,1869,1842,1,0,0,0,1869,1845,1,0,0,0,1869,1848,1,0,0,0,1869, + 1851,1,0,0,0,1869,1854,1,0,0,0,1869,1857,1,0,0,0,1869,1860,1,0,0, + 0,1869,1863,1,0,0,0,1869,1866,1,0,0,0,1870,386,1,0,0,0,1871,1875, + 3,453,226,0,1872,1875,3,537,268,0,1873,1875,3,477,238,0,1874,1871, + 1,0,0,0,1874,1872,1,0,0,0,1874,1873,1,0,0,0,1875,1882,1,0,0,0,1876, + 1881,3,453,226,0,1877,1881,3,537,268,0,1878,1881,3,457,228,0,1879, + 1881,3,477,238,0,1880,1876,1,0,0,0,1880,1877,1,0,0,0,1880,1878,1, + 0,0,0,1880,1879,1,0,0,0,1881,1884,1,0,0,0,1882,1880,1,0,0,0,1882, + 1883,1,0,0,0,1883,1912,1,0,0,0,1884,1882,1,0,0,0,1885,1893,3,465, + 232,0,1886,1892,8,0,0,0,1887,1892,3,385,192,0,1888,1889,3,465,232, + 0,1889,1890,3,465,232,0,1890,1892,1,0,0,0,1891,1886,1,0,0,0,1891, + 1887,1,0,0,0,1891,1888,1,0,0,0,1892,1895,1,0,0,0,1893,1891,1,0,0, + 0,1893,1894,1,0,0,0,1894,1896,1,0,0,0,1895,1893,1,0,0,0,1896,1897, + 3,465,232,0,1897,1912,1,0,0,0,1898,1906,3,519,259,0,1899,1905,8, + 1,0,0,1900,1905,3,385,192,0,1901,1902,3,519,259,0,1902,1903,3,519, + 259,0,1903,1905,1,0,0,0,1904,1899,1,0,0,0,1904,1900,1,0,0,0,1904, + 1901,1,0,0,0,1905,1908,1,0,0,0,1906,1904,1,0,0,0,1906,1907,1,0,0, + 0,1907,1909,1,0,0,0,1908,1906,1,0,0,0,1909,1910,3,519,259,0,1910, + 1912,1,0,0,0,1911,1874,1,0,0,0,1911,1885,1,0,0,0,1911,1898,1,0,0, + 0,1912,388,1,0,0,0,1913,1914,3,395,197,0,1914,1918,3,479,239,0,1915, + 1917,3,459,229,0,1916,1915,1,0,0,0,1917,1920,1,0,0,0,1918,1916,1, + 0,0,0,1918,1919,1,0,0,0,1919,1923,1,0,0,0,1920,1918,1,0,0,0,1921, + 1924,3,431,215,0,1922,1924,3,409,204,0,1923,1921,1,0,0,0,1923,1922, + 1,0,0,0,1924,1927,1,0,0,0,1925,1928,3,515,257,0,1926,1928,3,475, + 237,0,1927,1925,1,0,0,0,1927,1926,1,0,0,0,1927,1928,1,0,0,0,1928, + 1930,1,0,0,0,1929,1931,3,457,228,0,1930,1929,1,0,0,0,1931,1932,1, + 0,0,0,1932,1930,1,0,0,0,1932,1933,1,0,0,0,1933,1990,1,0,0,0,1934, + 1937,3,395,197,0,1935,1938,3,431,215,0,1936,1938,3,409,204,0,1937, + 1935,1,0,0,0,1937,1936,1,0,0,0,1938,1941,1,0,0,0,1939,1942,3,515, + 257,0,1940,1942,3,475,237,0,1941,1939,1,0,0,0,1941,1940,1,0,0,0, + 1941,1942,1,0,0,0,1942,1944,1,0,0,0,1943,1945,3,457,228,0,1944,1943, + 1,0,0,0,1945,1946,1,0,0,0,1946,1944,1,0,0,0,1946,1947,1,0,0,0,1947, + 1990,1,0,0,0,1948,1949,3,393,196,0,1949,1953,3,479,239,0,1950,1952, + 3,457,228,0,1951,1950,1,0,0,0,1952,1955,1,0,0,0,1953,1951,1,0,0, + 0,1953,1954,1,0,0,0,1954,1956,1,0,0,0,1955,1953,1,0,0,0,1956,1959, + 3,409,204,0,1957,1960,3,515,257,0,1958,1960,3,475,237,0,1959,1957, + 1,0,0,0,1959,1958,1,0,0,0,1959,1960,1,0,0,0,1960,1962,1,0,0,0,1961, + 1963,3,457,228,0,1962,1961,1,0,0,0,1963,1964,1,0,0,0,1964,1962,1, + 0,0,0,1964,1965,1,0,0,0,1965,1990,1,0,0,0,1966,1967,3,479,239,0, + 1967,1968,3,393,196,0,1968,1971,3,409,204,0,1969,1972,3,515,257, + 0,1970,1972,3,475,237,0,1971,1969,1,0,0,0,1971,1970,1,0,0,0,1971, + 1972,1,0,0,0,1972,1974,1,0,0,0,1973,1975,3,457,228,0,1974,1973,1, + 0,0,0,1975,1976,1,0,0,0,1976,1974,1,0,0,0,1976,1977,1,0,0,0,1977, + 1990,1,0,0,0,1978,1979,3,393,196,0,1979,1982,3,409,204,0,1980,1983, + 3,515,257,0,1981,1983,3,475,237,0,1982,1980,1,0,0,0,1982,1981,1, + 0,0,0,1982,1983,1,0,0,0,1983,1985,1,0,0,0,1984,1986,3,457,228,0, + 1985,1984,1,0,0,0,1986,1987,1,0,0,0,1987,1985,1,0,0,0,1987,1988, + 1,0,0,0,1988,1990,1,0,0,0,1989,1913,1,0,0,0,1989,1934,1,0,0,0,1989, + 1948,1,0,0,0,1989,1966,1,0,0,0,1989,1978,1,0,0,0,1990,390,1,0,0, + 0,1991,1993,5,48,0,0,1992,1994,3,455,227,0,1993,1992,1,0,0,0,1994, + 1995,1,0,0,0,1995,1993,1,0,0,0,1995,1996,1,0,0,0,1996,392,1,0,0, + 0,1997,1999,3,457,228,0,1998,1997,1,0,0,0,1999,2000,1,0,0,0,2000, + 1998,1,0,0,0,2000,2001,1,0,0,0,2001,394,1,0,0,0,2002,2003,5,48,0, + 0,2003,2005,3,447,223,0,2004,2006,3,459,229,0,2005,2004,1,0,0,0, + 2006,2007,1,0,0,0,2007,2005,1,0,0,0,2007,2008,1,0,0,0,2008,396,1, + 0,0,0,2009,2017,3,521,260,0,2010,2016,8,2,0,0,2011,2016,3,385,192, + 0,2012,2013,3,521,260,0,2013,2014,3,521,260,0,2014,2016,1,0,0,0, + 2015,2010,1,0,0,0,2015,2011,1,0,0,0,2015,2012,1,0,0,0,2016,2019, + 1,0,0,0,2017,2015,1,0,0,0,2017,2018,1,0,0,0,2018,2020,1,0,0,0,2019, + 2017,1,0,0,0,2020,2021,3,521,260,0,2021,398,1,0,0,0,2022,2030,3, + 495,247,0,2023,2029,8,3,0,0,2024,2029,3,385,192,0,2025,2026,3,495, + 247,0,2026,2027,3,495,247,0,2027,2029,1,0,0,0,2028,2023,1,0,0,0, + 2028,2024,1,0,0,0,2028,2025,1,0,0,0,2029,2032,1,0,0,0,2030,2028, + 1,0,0,0,2030,2031,1,0,0,0,2031,2033,1,0,0,0,2032,2030,1,0,0,0,2033, + 2034,3,527,263,0,2034,400,1,0,0,0,2035,2036,7,4,0,0,2036,402,1,0, + 0,0,2037,2038,7,5,0,0,2038,404,1,0,0,0,2039,2040,7,6,0,0,2040,406, + 1,0,0,0,2041,2042,7,7,0,0,2042,408,1,0,0,0,2043,2044,7,8,0,0,2044, + 410,1,0,0,0,2045,2046,7,9,0,0,2046,412,1,0,0,0,2047,2048,7,10,0, + 0,2048,414,1,0,0,0,2049,2050,7,11,0,0,2050,416,1,0,0,0,2051,2052, + 7,12,0,0,2052,418,1,0,0,0,2053,2054,7,13,0,0,2054,420,1,0,0,0,2055, + 2056,7,14,0,0,2056,422,1,0,0,0,2057,2058,7,15,0,0,2058,424,1,0,0, + 0,2059,2060,7,16,0,0,2060,426,1,0,0,0,2061,2062,7,17,0,0,2062,428, + 1,0,0,0,2063,2064,7,18,0,0,2064,430,1,0,0,0,2065,2066,7,19,0,0,2066, + 432,1,0,0,0,2067,2068,7,20,0,0,2068,434,1,0,0,0,2069,2070,7,21,0, + 0,2070,436,1,0,0,0,2071,2072,7,22,0,0,2072,438,1,0,0,0,2073,2074, + 7,23,0,0,2074,440,1,0,0,0,2075,2076,7,24,0,0,2076,442,1,0,0,0,2077, + 2078,7,25,0,0,2078,444,1,0,0,0,2079,2080,7,26,0,0,2080,446,1,0,0, + 0,2081,2082,7,27,0,0,2082,448,1,0,0,0,2083,2084,7,28,0,0,2084,450, + 1,0,0,0,2085,2086,7,29,0,0,2086,452,1,0,0,0,2087,2088,7,30,0,0,2088, + 454,1,0,0,0,2089,2090,7,31,0,0,2090,456,1,0,0,0,2091,2092,7,32,0, + 0,2092,458,1,0,0,0,2093,2094,7,33,0,0,2094,460,1,0,0,0,2095,2096, + 5,45,0,0,2096,2097,5,62,0,0,2097,462,1,0,0,0,2098,2099,5,42,0,0, + 2099,464,1,0,0,0,2100,2101,5,96,0,0,2101,466,1,0,0,0,2102,2103,5, + 92,0,0,2103,468,1,0,0,0,2104,2105,5,58,0,0,2105,470,1,0,0,0,2106, + 2107,5,44,0,0,2107,472,1,0,0,0,2108,2109,5,124,0,0,2109,2110,5,124, + 0,0,2110,474,1,0,0,0,2111,2112,5,45,0,0,2112,476,1,0,0,0,2113,2114, + 5,36,0,0,2114,478,1,0,0,0,2115,2116,5,46,0,0,2116,480,1,0,0,0,2117, + 2118,5,61,0,0,2118,2119,5,61,0,0,2119,482,1,0,0,0,2120,2121,5,61, + 0,0,2121,484,1,0,0,0,2122,2123,5,62,0,0,2123,2124,5,61,0,0,2124, + 486,1,0,0,0,2125,2126,5,62,0,0,2126,488,1,0,0,0,2127,2128,5,35,0, + 0,2128,490,1,0,0,0,2129,2130,5,126,0,0,2130,2131,5,42,0,0,2131,492, + 1,0,0,0,2132,2133,5,61,0,0,2133,2134,5,126,0,0,2134,2135,5,42,0, + 0,2135,494,1,0,0,0,2136,2137,5,123,0,0,2137,496,1,0,0,0,2138,2139, + 5,91,0,0,2139,498,1,0,0,0,2140,2141,5,40,0,0,2141,500,1,0,0,0,2142, + 2143,5,60,0,0,2143,2144,5,61,0,0,2144,502,1,0,0,0,2145,2146,5,60, + 0,0,2146,504,1,0,0,0,2147,2148,5,33,0,0,2148,2152,5,61,0,0,2149, + 2150,5,60,0,0,2150,2152,5,62,0,0,2151,2147,1,0,0,0,2151,2149,1,0, + 0,0,2152,506,1,0,0,0,2153,2154,5,33,0,0,2154,2155,5,126,0,0,2155, + 2156,5,42,0,0,2156,508,1,0,0,0,2157,2158,5,33,0,0,2158,2159,5,126, + 0,0,2159,510,1,0,0,0,2160,2161,5,63,0,0,2161,2162,5,63,0,0,2162, + 512,1,0,0,0,2163,2164,5,37,0,0,2164,514,1,0,0,0,2165,2166,5,43,0, + 0,2166,516,1,0,0,0,2167,2168,5,63,0,0,2168,518,1,0,0,0,2169,2170, + 5,34,0,0,2170,520,1,0,0,0,2171,2172,5,39,0,0,2172,522,1,0,0,0,2173, + 2174,5,126,0,0,2174,524,1,0,0,0,2175,2176,5,61,0,0,2176,2177,5,126, + 0,0,2177,526,1,0,0,0,2178,2179,5,125,0,0,2179,528,1,0,0,0,2180,2181, + 5,93,0,0,2181,530,1,0,0,0,2182,2183,5,41,0,0,2183,532,1,0,0,0,2184, + 2185,5,59,0,0,2185,534,1,0,0,0,2186,2187,5,47,0,0,2187,536,1,0,0, + 0,2188,2189,5,95,0,0,2189,538,1,0,0,0,2190,2191,5,47,0,0,2191,2192, + 5,42,0,0,2192,2196,1,0,0,0,2193,2195,9,0,0,0,2194,2193,1,0,0,0,2195, + 2198,1,0,0,0,2196,2197,1,0,0,0,2196,2194,1,0,0,0,2197,2199,1,0,0, + 0,2198,2196,1,0,0,0,2199,2200,5,42,0,0,2200,2201,5,47,0,0,2201,2202, + 1,0,0,0,2202,2203,6,269,0,0,2203,540,1,0,0,0,2204,2205,5,45,0,0, + 2205,2206,5,45,0,0,2206,2210,1,0,0,0,2207,2209,8,34,0,0,2208,2207, + 1,0,0,0,2209,2212,1,0,0,0,2210,2208,1,0,0,0,2210,2211,1,0,0,0,2211, + 2214,1,0,0,0,2212,2210,1,0,0,0,2213,2215,7,35,0,0,2214,2213,1,0, + 0,0,2215,2216,1,0,0,0,2216,2217,6,270,0,0,2217,542,1,0,0,0,2218, + 2219,7,36,0,0,2219,2220,1,0,0,0,2220,2221,6,271,1,0,2221,544,1,0, + 0,0,39,0,607,1112,1826,1869,1874,1880,1882,1891,1893,1904,1906,1911, + 1918,1923,1927,1932,1937,1941,1946,1953,1959,1964,1971,1976,1982, + 1987,1989,1995,2000,2007,2015,2017,2028,2030,2151,2196,2210,2214, + 2,6,0,0,0,1,0 ] - class HogQLLexer(Lexer): atn = ATNDeserializer().deserialize(serializedATN()) - decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] ADD = 1 AFTER = 2 @@ -19092,580 +1149,112 @@ class HogQLLexer(Lexer): SINGLE_LINE_COMMENT = 241 WHITESPACE = 242 - channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"] + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] - modeNames = ["DEFAULT_MODE"] + modeNames = [ "DEFAULT_MODE" ] - literalNames = [ - "", - "'false'", - "'true'", - "'->'", - "'*'", - "'`'", - "'\\'", - "':'", - "','", - "'||'", - "'-'", - "'$'", - "'.'", - "'=='", - "'='", - "'>='", - "'>'", - "'#'", - "'~*'", - "'=~*'", - "'{'", - "'['", - "'('", - "'<='", - "'<'", - "'!~*'", - "'!~'", - "'??'", - "'%'", - "'+'", - "'?'", - "'\"'", - "'''", - "'~'", - "'=~'", - "'}'", - "']'", - "')'", - "';'", - "'/'", - "'_'", - ] + literalNames = [ "", + "'false'", "'true'", "'->'", "'*'", "'`'", "'\\'", "':'", "','", + "'||'", "'-'", "'$'", "'.'", "'=='", "'='", "'>='", "'>'", "'#'", + "'~*'", "'=~*'", "'{'", "'['", "'('", "'<='", "'<'", "'!~*'", + "'!~'", "'??'", "'%'", "'+'", "'?'", "'\"'", "'''", "'~'", "'=~'", + "'}'", "']'", "')'", "';'", "'/'", "'_'" ] - symbolicNames = [ - "", - "ADD", - "AFTER", - "ALIAS", - "ALL", - "ALTER", - "AND", - "ANTI", - "ANY", - "ARRAY", - "AS", - "ASCENDING", - "ASOF", - "AST", - "ASYNC", - "ATTACH", - "BETWEEN", - "BOTH", - "BY", - "CASE", - "CAST", - "CHECK", - "CLEAR", - "CLUSTER", - "CODEC", - "COHORT", - "COLLATE", - "COLUMN", - "COMMENT", - "CONSTRAINT", - "CREATE", - "CROSS", - "CUBE", - "CURRENT", - "DATABASE", - "DATABASES", - "DATE", - "DAY", - "DEDUPLICATE", - "DEFAULT", - "DELAY", - "DELETE", - "DESC", - "DESCENDING", - "DESCRIBE", - "DETACH", - "DICTIONARIES", - "DICTIONARY", - "DISK", - "DISTINCT", - "DISTRIBUTED", - "DROP", - "ELSE", - "END", - "ENGINE", - "EVENTS", - "EXISTS", - "EXPLAIN", - "EXPRESSION", - "EXTRACT", - "FETCHES", - "FINAL", - "FIRST", - "FLUSH", - "FOLLOWING", - "FOR", - "FORMAT", - "FREEZE", - "FROM", - "FULL", - "FUNCTION", - "GLOBAL", - "GRANULARITY", - "GROUP", - "HAVING", - "HIERARCHICAL", - "HOUR", - "ID", - "IF", - "ILIKE", - "IN", - "INDEX", - "INF", - "INJECTIVE", - "INNER", - "INSERT", - "INTERVAL", - "INTO", - "IS", - "IS_OBJECT_ID", - "JOIN", - "KEY", - "KILL", - "LAST", - "LAYOUT", - "LEADING", - "LEFT", - "LIFETIME", - "LIKE", - "LIMIT", - "LIVE", - "LOCAL", - "LOGS", - "MATERIALIZE", - "MATERIALIZED", - "MAX", - "MERGES", - "MIN", - "MINUTE", - "MODIFY", - "MONTH", - "MOVE", - "MUTATION", - "NAN_SQL", - "NO", - "NOT", - "NULL_SQL", - "NULLS", - "OFFSET", - "ON", - "OPTIMIZE", - "OR", - "ORDER", - "OUTER", - "OUTFILE", - "OVER", - "PARTITION", - "POPULATE", - "PRECEDING", - "PREWHERE", - "PRIMARY", - "PROJECTION", - "QUARTER", - "RANGE", - "RELOAD", - "REMOVE", - "RENAME", - "REPLACE", - "REPLICA", - "REPLICATED", - "RIGHT", - "ROLLUP", - "ROW", - "ROWS", - "SAMPLE", - "SECOND", - "SELECT", - "SEMI", - "SENDS", - "SET", - "SETTINGS", - "SHOW", - "SOURCE", - "START", - "STOP", - "SUBSTRING", - "SYNC", - "SYNTAX", - "SYSTEM", - "TABLE", - "TABLES", - "TEMPORARY", - "TEST", - "THEN", - "TIES", - "TIMEOUT", - "TIMESTAMP", - "TO", - "TOP", - "TOTALS", - "TRAILING", - "TRIM", - "TRUNCATE", - "TTL", - "TYPE", - "UNBOUNDED", - "UNION", - "UPDATE", - "USE", - "USING", - "UUID", - "VALUES", - "VIEW", - "VOLUME", - "WATCH", - "WEEK", - "WHEN", - "WHERE", - "WINDOW", - "WITH", - "YEAR", - "JSON_FALSE", - "JSON_TRUE", - "ESCAPE_CHAR", - "IDENTIFIER", - "FLOATING_LITERAL", - "OCTAL_LITERAL", - "DECIMAL_LITERAL", - "HEXADECIMAL_LITERAL", - "STRING_LITERAL", - "PLACEHOLDER", - "ARROW", - "ASTERISK", - "BACKQUOTE", - "BACKSLASH", - "COLON", - "COMMA", - "CONCAT", - "DASH", - "DOLLAR", - "DOT", - "EQ_DOUBLE", - "EQ_SINGLE", - "GT_EQ", - "GT", - "HASH", - "IREGEX_SINGLE", - "IREGEX_DOUBLE", - "LBRACE", - "LBRACKET", - "LPAREN", - "LT_EQ", - "LT", - "NOT_EQ", - "NOT_IREGEX", - "NOT_REGEX", - "NULLISH", - "PERCENT", - "PLUS", - "QUERY", - "QUOTE_DOUBLE", - "QUOTE_SINGLE", - "REGEX_SINGLE", - "REGEX_DOUBLE", - "RBRACE", - "RBRACKET", - "RPAREN", - "SEMICOLON", - "SLASH", - "UNDERSCORE", - "MULTI_LINE_COMMENT", - "SINGLE_LINE_COMMENT", - "WHITESPACE", - ] + symbolicNames = [ "", + "ADD", "AFTER", "ALIAS", "ALL", "ALTER", "AND", "ANTI", "ANY", + "ARRAY", "AS", "ASCENDING", "ASOF", "AST", "ASYNC", "ATTACH", + "BETWEEN", "BOTH", "BY", "CASE", "CAST", "CHECK", "CLEAR", "CLUSTER", + "CODEC", "COHORT", "COLLATE", "COLUMN", "COMMENT", "CONSTRAINT", + "CREATE", "CROSS", "CUBE", "CURRENT", "DATABASE", "DATABASES", + "DATE", "DAY", "DEDUPLICATE", "DEFAULT", "DELAY", "DELETE", + "DESC", "DESCENDING", "DESCRIBE", "DETACH", "DICTIONARIES", + "DICTIONARY", "DISK", "DISTINCT", "DISTRIBUTED", "DROP", "ELSE", + "END", "ENGINE", "EVENTS", "EXISTS", "EXPLAIN", "EXPRESSION", + "EXTRACT", "FETCHES", "FINAL", "FIRST", "FLUSH", "FOLLOWING", + "FOR", "FORMAT", "FREEZE", "FROM", "FULL", "FUNCTION", "GLOBAL", + "GRANULARITY", "GROUP", "HAVING", "HIERARCHICAL", "HOUR", "ID", + "IF", "ILIKE", "IN", "INDEX", "INF", "INJECTIVE", "INNER", "INSERT", + "INTERVAL", "INTO", "IS", "IS_OBJECT_ID", "JOIN", "KEY", "KILL", + "LAST", "LAYOUT", "LEADING", "LEFT", "LIFETIME", "LIKE", "LIMIT", + "LIVE", "LOCAL", "LOGS", "MATERIALIZE", "MATERIALIZED", "MAX", + "MERGES", "MIN", "MINUTE", "MODIFY", "MONTH", "MOVE", "MUTATION", + "NAN_SQL", "NO", "NOT", "NULL_SQL", "NULLS", "OFFSET", "ON", + "OPTIMIZE", "OR", "ORDER", "OUTER", "OUTFILE", "OVER", "PARTITION", + "POPULATE", "PRECEDING", "PREWHERE", "PRIMARY", "PROJECTION", + "QUARTER", "RANGE", "RELOAD", "REMOVE", "RENAME", "REPLACE", + "REPLICA", "REPLICATED", "RIGHT", "ROLLUP", "ROW", "ROWS", "SAMPLE", + "SECOND", "SELECT", "SEMI", "SENDS", "SET", "SETTINGS", "SHOW", + "SOURCE", "START", "STOP", "SUBSTRING", "SYNC", "SYNTAX", "SYSTEM", + "TABLE", "TABLES", "TEMPORARY", "TEST", "THEN", "TIES", "TIMEOUT", + "TIMESTAMP", "TO", "TOP", "TOTALS", "TRAILING", "TRIM", "TRUNCATE", + "TTL", "TYPE", "UNBOUNDED", "UNION", "UPDATE", "USE", "USING", + "UUID", "VALUES", "VIEW", "VOLUME", "WATCH", "WEEK", "WHEN", + "WHERE", "WINDOW", "WITH", "YEAR", "JSON_FALSE", "JSON_TRUE", + "ESCAPE_CHAR", "IDENTIFIER", "FLOATING_LITERAL", "OCTAL_LITERAL", + "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "STRING_LITERAL", + "PLACEHOLDER", "ARROW", "ASTERISK", "BACKQUOTE", "BACKSLASH", + "COLON", "COMMA", "CONCAT", "DASH", "DOLLAR", "DOT", "EQ_DOUBLE", + "EQ_SINGLE", "GT_EQ", "GT", "HASH", "IREGEX_SINGLE", "IREGEX_DOUBLE", + "LBRACE", "LBRACKET", "LPAREN", "LT_EQ", "LT", "NOT_EQ", "NOT_IREGEX", + "NOT_REGEX", "NULLISH", "PERCENT", "PLUS", "QUERY", "QUOTE_DOUBLE", + "QUOTE_SINGLE", "REGEX_SINGLE", "REGEX_DOUBLE", "RBRACE", "RBRACKET", + "RPAREN", "SEMICOLON", "SLASH", "UNDERSCORE", "MULTI_LINE_COMMENT", + "SINGLE_LINE_COMMENT", "WHITESPACE" ] - ruleNames = [ - "ADD", - "AFTER", - "ALIAS", - "ALL", - "ALTER", - "AND", - "ANTI", - "ANY", - "ARRAY", - "AS", - "ASCENDING", - "ASOF", - "AST", - "ASYNC", - "ATTACH", - "BETWEEN", - "BOTH", - "BY", - "CASE", - "CAST", - "CHECK", - "CLEAR", - "CLUSTER", - "CODEC", - "COHORT", - "COLLATE", - "COLUMN", - "COMMENT", - "CONSTRAINT", - "CREATE", - "CROSS", - "CUBE", - "CURRENT", - "DATABASE", - "DATABASES", - "DATE", - "DAY", - "DEDUPLICATE", - "DEFAULT", - "DELAY", - "DELETE", - "DESC", - "DESCENDING", - "DESCRIBE", - "DETACH", - "DICTIONARIES", - "DICTIONARY", - "DISK", - "DISTINCT", - "DISTRIBUTED", - "DROP", - "ELSE", - "END", - "ENGINE", - "EVENTS", - "EXISTS", - "EXPLAIN", - "EXPRESSION", - "EXTRACT", - "FETCHES", - "FINAL", - "FIRST", - "FLUSH", - "FOLLOWING", - "FOR", - "FORMAT", - "FREEZE", - "FROM", - "FULL", - "FUNCTION", - "GLOBAL", - "GRANULARITY", - "GROUP", - "HAVING", - "HIERARCHICAL", - "HOUR", - "ID", - "IF", - "ILIKE", - "IN", - "INDEX", - "INF", - "INJECTIVE", - "INNER", - "INSERT", - "INTERVAL", - "INTO", - "IS", - "IS_OBJECT_ID", - "JOIN", - "KEY", - "KILL", - "LAST", - "LAYOUT", - "LEADING", - "LEFT", - "LIFETIME", - "LIKE", - "LIMIT", - "LIVE", - "LOCAL", - "LOGS", - "MATERIALIZE", - "MATERIALIZED", - "MAX", - "MERGES", - "MIN", - "MINUTE", - "MODIFY", - "MONTH", - "MOVE", - "MUTATION", - "NAN_SQL", - "NO", - "NOT", - "NULL_SQL", - "NULLS", - "OFFSET", - "ON", - "OPTIMIZE", - "OR", - "ORDER", - "OUTER", - "OUTFILE", - "OVER", - "PARTITION", - "POPULATE", - "PRECEDING", - "PREWHERE", - "PRIMARY", - "PROJECTION", - "QUARTER", - "RANGE", - "RELOAD", - "REMOVE", - "RENAME", - "REPLACE", - "REPLICA", - "REPLICATED", - "RIGHT", - "ROLLUP", - "ROW", - "ROWS", - "SAMPLE", - "SECOND", - "SELECT", - "SEMI", - "SENDS", - "SET", - "SETTINGS", - "SHOW", - "SOURCE", - "START", - "STOP", - "SUBSTRING", - "SYNC", - "SYNTAX", - "SYSTEM", - "TABLE", - "TABLES", - "TEMPORARY", - "TEST", - "THEN", - "TIES", - "TIMEOUT", - "TIMESTAMP", - "TO", - "TOP", - "TOTALS", - "TRAILING", - "TRIM", - "TRUNCATE", - "TTL", - "TYPE", - "UNBOUNDED", - "UNION", - "UPDATE", - "USE", - "USING", - "UUID", - "VALUES", - "VIEW", - "VOLUME", - "WATCH", - "WEEK", - "WHEN", - "WHERE", - "WINDOW", - "WITH", - "YEAR", - "JSON_FALSE", - "JSON_TRUE", - "ESCAPE_CHAR", - "IDENTIFIER", - "FLOATING_LITERAL", - "OCTAL_LITERAL", - "DECIMAL_LITERAL", - "HEXADECIMAL_LITERAL", - "STRING_LITERAL", - "PLACEHOLDER", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "LETTER", - "OCT_DIGIT", - "DEC_DIGIT", - "HEX_DIGIT", - "ARROW", - "ASTERISK", - "BACKQUOTE", - "BACKSLASH", - "COLON", - "COMMA", - "CONCAT", - "DASH", - "DOLLAR", - "DOT", - "EQ_DOUBLE", - "EQ_SINGLE", - "GT_EQ", - "GT", - "HASH", - "IREGEX_SINGLE", - "IREGEX_DOUBLE", - "LBRACE", - "LBRACKET", - "LPAREN", - "LT_EQ", - "LT", - "NOT_EQ", - "NOT_IREGEX", - "NOT_REGEX", - "NULLISH", - "PERCENT", - "PLUS", - "QUERY", - "QUOTE_DOUBLE", - "QUOTE_SINGLE", - "REGEX_SINGLE", - "REGEX_DOUBLE", - "RBRACE", - "RBRACKET", - "RPAREN", - "SEMICOLON", - "SLASH", - "UNDERSCORE", - "MULTI_LINE_COMMENT", - "SINGLE_LINE_COMMENT", - "WHITESPACE", - ] + ruleNames = [ "ADD", "AFTER", "ALIAS", "ALL", "ALTER", "AND", "ANTI", + "ANY", "ARRAY", "AS", "ASCENDING", "ASOF", "AST", "ASYNC", + "ATTACH", "BETWEEN", "BOTH", "BY", "CASE", "CAST", "CHECK", + "CLEAR", "CLUSTER", "CODEC", "COHORT", "COLLATE", "COLUMN", + "COMMENT", "CONSTRAINT", "CREATE", "CROSS", "CUBE", "CURRENT", + "DATABASE", "DATABASES", "DATE", "DAY", "DEDUPLICATE", + "DEFAULT", "DELAY", "DELETE", "DESC", "DESCENDING", "DESCRIBE", + "DETACH", "DICTIONARIES", "DICTIONARY", "DISK", "DISTINCT", + "DISTRIBUTED", "DROP", "ELSE", "END", "ENGINE", "EVENTS", + "EXISTS", "EXPLAIN", "EXPRESSION", "EXTRACT", "FETCHES", + "FINAL", "FIRST", "FLUSH", "FOLLOWING", "FOR", "FORMAT", + "FREEZE", "FROM", "FULL", "FUNCTION", "GLOBAL", "GRANULARITY", + "GROUP", "HAVING", "HIERARCHICAL", "HOUR", "ID", "IF", + "ILIKE", "IN", "INDEX", "INF", "INJECTIVE", "INNER", "INSERT", + "INTERVAL", "INTO", "IS", "IS_OBJECT_ID", "JOIN", "KEY", + "KILL", "LAST", "LAYOUT", "LEADING", "LEFT", "LIFETIME", + "LIKE", "LIMIT", "LIVE", "LOCAL", "LOGS", "MATERIALIZE", + "MATERIALIZED", "MAX", "MERGES", "MIN", "MINUTE", "MODIFY", + "MONTH", "MOVE", "MUTATION", "NAN_SQL", "NO", "NOT", "NULL_SQL", + "NULLS", "OFFSET", "ON", "OPTIMIZE", "OR", "ORDER", "OUTER", + "OUTFILE", "OVER", "PARTITION", "POPULATE", "PRECEDING", + "PREWHERE", "PRIMARY", "PROJECTION", "QUARTER", "RANGE", + "RELOAD", "REMOVE", "RENAME", "REPLACE", "REPLICA", "REPLICATED", + "RIGHT", "ROLLUP", "ROW", "ROWS", "SAMPLE", "SECOND", + "SELECT", "SEMI", "SENDS", "SET", "SETTINGS", "SHOW", + "SOURCE", "START", "STOP", "SUBSTRING", "SYNC", "SYNTAX", + "SYSTEM", "TABLE", "TABLES", "TEMPORARY", "TEST", "THEN", + "TIES", "TIMEOUT", "TIMESTAMP", "TO", "TOP", "TOTALS", + "TRAILING", "TRIM", "TRUNCATE", "TTL", "TYPE", "UNBOUNDED", + "UNION", "UPDATE", "USE", "USING", "UUID", "VALUES", "VIEW", + "VOLUME", "WATCH", "WEEK", "WHEN", "WHERE", "WINDOW", + "WITH", "YEAR", "JSON_FALSE", "JSON_TRUE", "ESCAPE_CHAR", + "IDENTIFIER", "FLOATING_LITERAL", "OCTAL_LITERAL", "DECIMAL_LITERAL", + "HEXADECIMAL_LITERAL", "STRING_LITERAL", "PLACEHOLDER", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", + "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", + "W", "X", "Y", "Z", "LETTER", "OCT_DIGIT", "DEC_DIGIT", + "HEX_DIGIT", "ARROW", "ASTERISK", "BACKQUOTE", "BACKSLASH", + "COLON", "COMMA", "CONCAT", "DASH", "DOLLAR", "DOT", "EQ_DOUBLE", + "EQ_SINGLE", "GT_EQ", "GT", "HASH", "IREGEX_SINGLE", "IREGEX_DOUBLE", + "LBRACE", "LBRACKET", "LPAREN", "LT_EQ", "LT", "NOT_EQ", + "NOT_IREGEX", "NOT_REGEX", "NULLISH", "PERCENT", "PLUS", + "QUERY", "QUOTE_DOUBLE", "QUOTE_SINGLE", "REGEX_SINGLE", + "REGEX_DOUBLE", "RBRACE", "RBRACKET", "RPAREN", "SEMICOLON", + "SLASH", "UNDERSCORE", "MULTI_LINE_COMMENT", "SINGLE_LINE_COMMENT", + "WHITESPACE" ] grammarFileName = "HogQLLexer.g4" - def __init__(self, input=None, output: TextIO = sys.stdout): + def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.13.1") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None + + diff --git a/posthog/hogql/grammar/HogQLParser.py b/posthog/hogql/grammar/HogQLParser.py index d8488dfaad76f..7f3b6995ecb50 100644 --- a/posthog/hogql/grammar/HogQLParser.py +++ b/posthog/hogql/grammar/HogQLParser.py @@ -3,9077 +3,492 @@ from antlr4 import * from io import StringIO import sys - if sys.version_info[1] > 5: - from typing import TextIO + from typing import TextIO else: - from typing.io import TextIO - + from typing.io import TextIO def serializedATN(): return [ - 4, - 1, - 242, - 922, - 2, - 0, - 7, - 0, - 2, - 1, - 7, - 1, - 2, - 2, - 7, - 2, - 2, - 3, - 7, - 3, - 2, - 4, - 7, - 4, - 2, - 5, - 7, - 5, - 2, - 6, - 7, - 6, - 2, - 7, - 7, - 7, - 2, - 8, - 7, - 8, - 2, - 9, - 7, - 9, - 2, - 10, - 7, - 10, - 2, - 11, - 7, - 11, - 2, - 12, - 7, - 12, - 2, - 13, - 7, - 13, - 2, - 14, - 7, - 14, - 2, - 15, - 7, - 15, - 2, - 16, - 7, - 16, - 2, - 17, - 7, - 17, - 2, - 18, - 7, - 18, - 2, - 19, - 7, - 19, - 2, - 20, - 7, - 20, - 2, - 21, - 7, - 21, - 2, - 22, - 7, - 22, - 2, - 23, - 7, - 23, - 2, - 24, - 7, - 24, - 2, - 25, - 7, - 25, - 2, - 26, - 7, - 26, - 2, - 27, - 7, - 27, - 2, - 28, - 7, - 28, - 2, - 29, - 7, - 29, - 2, - 30, - 7, - 30, - 2, - 31, - 7, - 31, - 2, - 32, - 7, - 32, - 2, - 33, - 7, - 33, - 2, - 34, - 7, - 34, - 2, - 35, - 7, - 35, - 2, - 36, - 7, - 36, - 2, - 37, - 7, - 37, - 2, - 38, - 7, - 38, - 2, - 39, - 7, - 39, - 2, - 40, - 7, - 40, - 2, - 41, - 7, - 41, - 2, - 42, - 7, - 42, - 2, - 43, - 7, - 43, - 2, - 44, - 7, - 44, - 2, - 45, - 7, - 45, - 2, - 46, - 7, - 46, - 2, - 47, - 7, - 47, - 2, - 48, - 7, - 48, - 2, - 49, - 7, - 49, - 2, - 50, - 7, - 50, - 2, - 51, - 7, - 51, - 2, - 52, - 7, - 52, - 2, - 53, - 7, - 53, - 2, - 54, - 7, - 54, - 2, - 55, - 7, - 55, - 2, - 56, - 7, - 56, - 2, - 57, - 7, - 57, - 2, - 58, - 7, - 58, - 1, - 0, - 1, - 0, - 3, - 0, - 121, - 8, - 0, - 1, - 0, - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 5, - 1, - 129, - 8, - 1, - 10, - 1, - 12, - 1, - 132, - 9, - 1, - 1, - 2, - 1, - 2, - 1, - 2, - 1, - 2, - 1, - 2, - 3, - 2, - 139, - 8, - 2, - 1, - 3, - 3, - 3, - 142, - 8, - 3, - 1, - 3, - 1, - 3, - 3, - 3, - 146, - 8, - 3, - 1, - 3, - 3, - 3, - 149, - 8, - 3, - 1, - 3, - 1, - 3, - 3, - 3, - 153, - 8, - 3, - 1, - 3, - 3, - 3, - 156, - 8, - 3, - 1, - 3, - 3, - 3, - 159, - 8, - 3, - 1, - 3, - 3, - 3, - 162, - 8, - 3, - 1, - 3, - 3, - 3, - 165, - 8, - 3, - 1, - 3, - 1, - 3, - 3, - 3, - 169, - 8, - 3, - 1, - 3, - 1, - 3, - 3, - 3, - 173, - 8, - 3, - 1, - 3, - 3, - 3, - 176, - 8, - 3, - 1, - 3, - 3, - 3, - 179, - 8, - 3, - 1, - 3, - 3, - 3, - 182, - 8, - 3, - 1, - 3, - 1, - 3, - 3, - 3, - 186, - 8, - 3, - 1, - 3, - 3, - 3, - 189, - 8, - 3, - 1, - 4, - 1, - 4, - 1, - 4, - 1, - 5, - 1, - 5, - 1, - 5, - 1, - 5, - 3, - 5, - 198, - 8, - 5, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 7, - 3, - 7, - 204, - 8, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 7, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 1, - 8, - 5, - 8, - 223, - 8, - 8, - 10, - 8, - 12, - 8, - 226, - 9, - 8, - 1, - 9, - 1, - 9, - 1, - 9, - 1, - 10, - 1, - 10, - 1, - 10, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 11, - 1, - 11, - 3, - 11, - 242, - 8, - 11, - 1, - 12, - 1, - 12, - 1, - 12, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 13, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 14, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 3, - 15, - 259, - 8, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 3, - 15, - 265, - 8, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 3, - 15, - 271, - 8, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 1, - 15, - 3, - 15, - 282, - 8, - 15, - 3, - 15, - 284, - 8, - 15, - 1, - 16, - 1, - 16, - 1, - 16, - 1, - 17, - 1, - 17, - 1, - 17, - 1, - 18, - 1, - 18, - 1, - 18, - 3, - 18, - 295, - 8, - 18, - 1, - 18, - 3, - 18, - 298, - 8, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 3, - 18, - 304, - 8, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 3, - 18, - 312, - 8, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 1, - 18, - 5, - 18, - 318, - 8, - 18, - 10, - 18, - 12, - 18, - 321, - 9, - 18, - 1, - 19, - 3, - 19, - 324, - 8, - 19, - 1, - 19, - 1, - 19, - 1, - 19, - 3, - 19, - 329, - 8, - 19, - 1, - 19, - 3, - 19, - 332, - 8, - 19, - 1, - 19, - 3, - 19, - 335, - 8, - 19, - 1, - 19, - 1, - 19, - 3, - 19, - 339, - 8, - 19, - 1, - 19, - 1, - 19, - 3, - 19, - 343, - 8, - 19, - 1, - 19, - 3, - 19, - 346, - 8, - 19, - 3, - 19, - 348, - 8, - 19, - 1, - 19, - 3, - 19, - 351, - 8, - 19, - 1, - 19, - 1, - 19, - 3, - 19, - 355, - 8, - 19, - 1, - 19, - 1, - 19, - 3, - 19, - 359, - 8, - 19, - 1, - 19, - 3, - 19, - 362, - 8, - 19, - 3, - 19, - 364, - 8, - 19, - 3, - 19, - 366, - 8, - 19, - 1, - 20, - 1, - 20, - 1, - 20, - 3, - 20, - 371, - 8, - 20, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 3, - 21, - 382, - 8, - 21, - 1, - 22, - 1, - 22, - 1, - 22, - 1, - 22, - 3, - 22, - 388, - 8, - 22, - 1, - 23, - 1, - 23, - 1, - 23, - 5, - 23, - 393, - 8, - 23, - 10, - 23, - 12, - 23, - 396, - 9, - 23, - 1, - 24, - 1, - 24, - 3, - 24, - 400, - 8, - 24, - 1, - 24, - 1, - 24, - 3, - 24, - 404, - 8, - 24, - 1, - 24, - 1, - 24, - 3, - 24, - 408, - 8, - 24, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 25, - 3, - 25, - 414, - 8, - 25, - 3, - 25, - 416, - 8, - 25, - 1, - 26, - 1, - 26, - 1, - 26, - 5, - 26, - 421, - 8, - 26, - 10, - 26, - 12, - 26, - 424, - 9, - 26, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 27, - 1, - 28, - 3, - 28, - 431, - 8, - 28, - 1, - 28, - 3, - 28, - 434, - 8, - 28, - 1, - 28, - 3, - 28, - 437, - 8, - 28, - 1, - 29, - 1, - 29, - 1, - 29, - 1, - 29, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 30, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 1, - 32, - 3, - 32, - 456, - 8, - 32, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 1, - 33, - 3, - 33, - 470, - 8, - 33, - 1, - 34, - 1, - 34, - 1, - 34, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 5, - 35, - 484, - 8, - 35, - 10, - 35, - 12, - 35, - 487, - 9, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 5, - 35, - 496, - 8, - 35, - 10, - 35, - 12, - 35, - 499, - 9, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 5, - 35, - 508, - 8, - 35, - 10, - 35, - 12, - 35, - 511, - 9, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 1, - 35, - 3, - 35, - 518, - 8, - 35, - 1, - 35, - 1, - 35, - 3, - 35, - 522, - 8, - 35, - 1, - 36, - 1, - 36, - 1, - 36, - 5, - 36, - 527, - 8, - 36, - 10, - 36, - 12, - 36, - 530, - 9, - 36, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 535, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 4, - 37, - 542, - 8, - 37, - 11, - 37, - 12, - 37, - 543, - 1, - 37, - 1, - 37, - 3, - 37, - 548, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 579, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 596, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 608, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 618, - 8, - 37, - 1, - 37, - 3, - 37, - 621, - 8, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 625, - 8, - 37, - 1, - 37, - 3, - 37, - 628, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 640, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 657, - 8, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 661, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 667, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 674, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 686, - 8, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 690, - 8, - 37, - 1, - 37, - 3, - 37, - 693, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 702, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 716, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 743, - 8, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 1, - 37, - 3, - 37, - 752, - 8, - 37, - 5, - 37, - 754, - 8, - 37, - 10, - 37, - 12, - 37, - 757, - 9, - 37, - 1, - 38, - 1, - 38, - 1, - 38, - 5, - 38, - 762, - 8, - 38, - 10, - 38, - 12, - 38, - 765, - 9, - 38, - 1, - 39, - 1, - 39, - 3, - 39, - 769, - 8, - 39, - 1, - 40, - 1, - 40, - 1, - 40, - 1, - 40, - 5, - 40, - 775, - 8, - 40, - 10, - 40, - 12, - 40, - 778, - 9, - 40, - 1, - 40, - 1, - 40, - 1, - 40, - 1, - 40, - 1, - 40, - 5, - 40, - 785, - 8, - 40, - 10, - 40, - 12, - 40, - 788, - 9, - 40, - 3, - 40, - 790, - 8, - 40, - 1, - 40, - 1, - 40, - 1, - 40, - 1, - 41, - 1, - 41, - 1, - 41, - 5, - 41, - 798, - 8, - 41, - 10, - 41, - 12, - 41, - 801, - 9, - 41, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 1, - 42, - 3, - 42, - 813, - 8, - 42, - 1, - 43, - 1, - 43, - 1, - 43, - 1, - 43, - 3, - 43, - 819, - 8, - 43, - 1, - 43, - 3, - 43, - 822, - 8, - 43, - 1, - 44, - 1, - 44, - 1, - 44, - 5, - 44, - 827, - 8, - 44, - 10, - 44, - 12, - 44, - 830, - 9, - 44, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 3, - 45, - 840, - 8, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 1, - 45, - 3, - 45, - 846, - 8, - 45, - 5, - 45, - 848, - 8, - 45, - 10, - 45, - 12, - 45, - 851, - 9, - 45, - 1, - 46, - 1, - 46, - 1, - 46, - 3, - 46, - 856, - 8, - 46, - 1, - 46, - 1, - 46, - 1, - 47, - 1, - 47, - 1, - 47, - 3, - 47, - 863, - 8, - 47, - 1, - 47, - 1, - 47, - 1, - 48, - 1, - 48, - 1, - 48, - 5, - 48, - 870, - 8, - 48, - 10, - 48, - 12, - 48, - 873, - 9, - 48, - 1, - 49, - 1, - 49, - 1, - 50, - 1, - 50, - 1, - 50, - 1, - 50, - 1, - 50, - 1, - 50, - 3, - 50, - 883, - 8, - 50, - 3, - 50, - 885, - 8, - 50, - 1, - 51, - 3, - 51, - 888, - 8, - 51, - 1, - 51, - 1, - 51, - 1, - 51, - 1, - 51, - 1, - 51, - 1, - 51, - 3, - 51, - 896, - 8, - 51, - 1, - 52, - 1, - 52, - 1, - 52, - 3, - 52, - 901, - 8, - 52, - 1, - 53, - 1, - 53, - 1, - 54, - 1, - 54, - 1, - 55, - 1, - 55, - 1, - 56, - 1, - 56, - 3, - 56, - 911, - 8, - 56, - 1, - 57, - 1, - 57, - 1, - 57, - 3, - 57, - 916, - 8, - 57, - 1, - 58, - 1, - 58, - 1, - 58, - 1, - 58, - 1, - 58, - 0, - 3, - 36, - 74, - 90, - 59, - 0, - 2, - 4, - 6, - 8, - 10, - 12, - 14, - 16, - 18, - 20, - 22, - 24, - 26, - 28, - 30, - 32, - 34, - 36, - 38, - 40, - 42, - 44, - 46, - 48, - 50, - 52, - 54, - 56, - 58, - 60, - 62, - 64, - 66, - 68, - 70, - 72, - 74, - 76, - 78, - 80, - 82, - 84, - 86, - 88, - 90, - 92, - 94, - 96, - 98, - 100, - 102, - 104, - 106, - 108, - 110, - 112, - 114, - 116, - 0, - 16, - 2, - 0, - 32, - 32, - 141, - 141, - 2, - 0, - 84, - 84, - 96, - 96, - 3, - 0, - 4, - 4, - 8, - 8, - 12, - 12, - 4, - 0, - 4, - 4, - 7, - 8, - 12, - 12, - 147, - 147, - 2, - 0, - 96, - 96, - 140, - 140, - 2, - 0, - 4, - 4, - 8, - 8, - 2, - 0, - 11, - 11, - 42, - 43, - 2, - 0, - 62, - 62, - 93, - 93, - 2, - 0, - 133, - 133, - 143, - 143, - 3, - 0, - 17, - 17, - 95, - 95, - 170, - 170, - 2, - 0, - 79, - 79, - 98, - 98, - 1, - 0, - 196, - 197, - 2, - 0, - 208, - 208, - 228, - 228, - 8, - 0, - 37, - 37, - 76, - 76, - 108, - 108, - 110, - 110, - 132, - 132, - 145, - 145, - 185, - 185, - 190, - 190, - 13, - 0, - 2, - 24, - 26, - 36, - 38, - 75, - 77, - 81, - 83, - 107, - 109, - 109, - 111, - 112, - 114, - 115, - 117, - 130, - 133, - 144, - 146, - 184, - 186, - 189, - 191, - 192, - 4, - 0, - 36, - 36, - 62, - 62, - 77, - 77, - 91, - 91, - 1043, - 0, - 120, - 1, - 0, - 0, - 0, - 2, - 124, - 1, - 0, - 0, - 0, - 4, - 138, - 1, - 0, - 0, - 0, - 6, - 141, - 1, - 0, - 0, - 0, - 8, - 190, - 1, - 0, - 0, - 0, - 10, - 193, - 1, - 0, - 0, - 0, - 12, - 199, - 1, - 0, - 0, - 0, - 14, - 203, - 1, - 0, - 0, - 0, - 16, - 209, - 1, - 0, - 0, - 0, - 18, - 227, - 1, - 0, - 0, - 0, - 20, - 230, - 1, - 0, - 0, - 0, - 22, - 233, - 1, - 0, - 0, - 0, - 24, - 243, - 1, - 0, - 0, - 0, - 26, - 246, - 1, - 0, - 0, - 0, - 28, - 250, - 1, - 0, - 0, - 0, - 30, - 283, - 1, - 0, - 0, - 0, - 32, - 285, - 1, - 0, - 0, - 0, - 34, - 288, - 1, - 0, - 0, - 0, - 36, - 303, - 1, - 0, - 0, - 0, - 38, - 365, - 1, - 0, - 0, - 0, - 40, - 370, - 1, - 0, - 0, - 0, - 42, - 381, - 1, - 0, - 0, - 0, - 44, - 383, - 1, - 0, - 0, - 0, - 46, - 389, - 1, - 0, - 0, - 0, - 48, - 397, - 1, - 0, - 0, - 0, - 50, - 415, - 1, - 0, - 0, - 0, - 52, - 417, - 1, - 0, - 0, - 0, - 54, - 425, - 1, - 0, - 0, - 0, - 56, - 430, - 1, - 0, - 0, - 0, - 58, - 438, - 1, - 0, - 0, - 0, - 60, - 442, - 1, - 0, - 0, - 0, - 62, - 446, - 1, - 0, - 0, - 0, - 64, - 455, - 1, - 0, - 0, - 0, - 66, - 469, - 1, - 0, - 0, - 0, - 68, - 471, - 1, - 0, - 0, - 0, - 70, - 521, - 1, - 0, - 0, - 0, - 72, - 523, - 1, - 0, - 0, - 0, - 74, - 660, - 1, - 0, - 0, - 0, - 76, - 758, - 1, - 0, - 0, - 0, - 78, - 768, - 1, - 0, - 0, - 0, - 80, - 789, - 1, - 0, - 0, - 0, - 82, - 794, - 1, - 0, - 0, - 0, - 84, - 812, - 1, - 0, - 0, - 0, - 86, - 821, - 1, - 0, - 0, - 0, - 88, - 823, - 1, - 0, - 0, - 0, - 90, - 839, - 1, - 0, - 0, - 0, - 92, - 852, - 1, - 0, - 0, - 0, - 94, - 862, - 1, - 0, - 0, - 0, - 96, - 866, - 1, - 0, - 0, - 0, - 98, - 874, - 1, - 0, - 0, - 0, - 100, - 884, - 1, - 0, - 0, - 0, - 102, - 887, - 1, - 0, - 0, - 0, - 104, - 900, - 1, - 0, - 0, - 0, - 106, - 902, - 1, - 0, - 0, - 0, - 108, - 904, - 1, - 0, - 0, - 0, - 110, - 906, - 1, - 0, - 0, - 0, - 112, - 910, - 1, - 0, - 0, - 0, - 114, - 915, - 1, - 0, - 0, - 0, - 116, - 917, - 1, - 0, - 0, - 0, - 118, - 121, - 3, - 2, - 1, - 0, - 119, - 121, - 3, - 6, - 3, - 0, - 120, - 118, - 1, - 0, - 0, - 0, - 120, - 119, - 1, - 0, - 0, - 0, - 121, - 122, - 1, - 0, - 0, - 0, - 122, - 123, - 5, - 0, - 0, - 1, - 123, - 1, - 1, - 0, - 0, - 0, - 124, - 130, - 3, - 4, - 2, - 0, - 125, - 126, - 5, - 176, - 0, - 0, - 126, - 127, - 5, - 4, - 0, - 0, - 127, - 129, - 3, - 4, - 2, - 0, - 128, - 125, - 1, - 0, - 0, - 0, - 129, - 132, - 1, - 0, - 0, - 0, - 130, - 128, - 1, - 0, - 0, - 0, - 130, - 131, - 1, - 0, - 0, - 0, - 131, - 3, - 1, - 0, - 0, - 0, - 132, - 130, - 1, - 0, - 0, - 0, - 133, - 139, - 3, - 6, - 3, - 0, - 134, - 135, - 5, - 220, - 0, - 0, - 135, - 136, - 3, - 2, - 1, - 0, - 136, - 137, - 5, - 236, - 0, - 0, - 137, - 139, - 1, - 0, - 0, - 0, - 138, - 133, - 1, - 0, - 0, - 0, - 138, - 134, - 1, - 0, - 0, - 0, - 139, - 5, - 1, - 0, - 0, - 0, - 140, - 142, - 3, - 8, - 4, - 0, - 141, - 140, - 1, - 0, - 0, - 0, - 141, - 142, - 1, - 0, - 0, - 0, - 142, - 143, - 1, - 0, - 0, - 0, - 143, - 145, - 5, - 146, - 0, - 0, - 144, - 146, - 5, - 49, - 0, - 0, - 145, - 144, - 1, - 0, - 0, - 0, - 145, - 146, - 1, - 0, - 0, - 0, - 146, - 148, - 1, - 0, - 0, - 0, - 147, - 149, - 3, - 10, - 5, - 0, - 148, - 147, - 1, - 0, - 0, - 0, - 148, - 149, - 1, - 0, - 0, - 0, - 149, - 150, - 1, - 0, - 0, - 0, - 150, - 152, - 3, - 72, - 36, - 0, - 151, - 153, - 3, - 12, - 6, - 0, - 152, - 151, - 1, - 0, - 0, - 0, - 152, - 153, - 1, - 0, - 0, - 0, - 153, - 155, - 1, - 0, - 0, - 0, - 154, - 156, - 3, - 14, - 7, - 0, - 155, - 154, - 1, - 0, - 0, - 0, - 155, - 156, - 1, - 0, - 0, - 0, - 156, - 158, - 1, - 0, - 0, - 0, - 157, - 159, - 3, - 18, - 9, - 0, - 158, - 157, - 1, - 0, - 0, - 0, - 158, - 159, - 1, - 0, - 0, - 0, - 159, - 161, - 1, - 0, - 0, - 0, - 160, - 162, - 3, - 20, - 10, - 0, - 161, - 160, - 1, - 0, - 0, - 0, - 161, - 162, - 1, - 0, - 0, - 0, - 162, - 164, - 1, - 0, - 0, - 0, - 163, - 165, - 3, - 22, - 11, - 0, - 164, - 163, - 1, - 0, - 0, - 0, - 164, - 165, - 1, - 0, - 0, - 0, - 165, - 168, - 1, - 0, - 0, - 0, - 166, - 167, - 5, - 189, - 0, - 0, - 167, - 169, - 7, - 0, - 0, - 0, - 168, - 166, - 1, - 0, - 0, - 0, - 168, - 169, - 1, - 0, - 0, - 0, - 169, - 172, - 1, - 0, - 0, - 0, - 170, - 171, - 5, - 189, - 0, - 0, - 171, - 173, - 5, - 169, - 0, - 0, - 172, - 170, - 1, - 0, - 0, - 0, - 172, - 173, - 1, - 0, - 0, - 0, - 173, - 175, - 1, - 0, - 0, - 0, - 174, - 176, - 3, - 24, - 12, - 0, - 175, - 174, - 1, - 0, - 0, - 0, - 175, - 176, - 1, - 0, - 0, - 0, - 176, - 178, - 1, - 0, - 0, - 0, - 177, - 179, - 3, - 16, - 8, - 0, - 178, - 177, - 1, - 0, - 0, - 0, - 178, - 179, - 1, - 0, - 0, - 0, - 179, - 181, - 1, - 0, - 0, - 0, - 180, - 182, - 3, - 26, - 13, - 0, - 181, - 180, - 1, - 0, - 0, - 0, - 181, - 182, - 1, - 0, - 0, - 0, - 182, - 185, - 1, - 0, - 0, - 0, - 183, - 186, - 3, - 30, - 15, - 0, - 184, - 186, - 3, - 32, - 16, - 0, - 185, - 183, - 1, - 0, - 0, - 0, - 185, - 184, - 1, - 0, - 0, - 0, - 185, - 186, - 1, - 0, - 0, - 0, - 186, - 188, - 1, - 0, - 0, - 0, - 187, - 189, - 3, - 34, - 17, - 0, - 188, - 187, - 1, - 0, - 0, - 0, - 188, - 189, - 1, - 0, - 0, - 0, - 189, - 7, - 1, - 0, - 0, - 0, - 190, - 191, - 5, - 189, - 0, - 0, - 191, - 192, - 3, - 82, - 41, - 0, - 192, - 9, - 1, - 0, - 0, - 0, - 193, - 194, - 5, - 168, - 0, - 0, - 194, - 197, - 5, - 197, - 0, - 0, - 195, - 196, - 5, - 189, - 0, - 0, - 196, - 198, - 5, - 164, - 0, - 0, - 197, - 195, - 1, - 0, - 0, - 0, - 197, - 198, - 1, - 0, - 0, - 0, - 198, - 11, - 1, - 0, - 0, - 0, - 199, - 200, - 5, - 68, - 0, - 0, - 200, - 201, - 3, - 36, - 18, - 0, - 201, - 13, - 1, - 0, - 0, - 0, - 202, - 204, - 7, - 1, - 0, - 0, - 203, - 202, - 1, - 0, - 0, - 0, - 203, - 204, - 1, - 0, - 0, - 0, - 204, - 205, - 1, - 0, - 0, - 0, - 205, - 206, - 5, - 9, - 0, - 0, - 206, - 207, - 5, - 90, - 0, - 0, - 207, - 208, - 3, - 72, - 36, - 0, - 208, - 15, - 1, - 0, - 0, - 0, - 209, - 210, - 5, - 188, - 0, - 0, - 210, - 211, - 3, - 114, - 57, - 0, - 211, - 212, - 5, - 10, - 0, - 0, - 212, - 213, - 5, - 220, - 0, - 0, - 213, - 214, - 3, - 56, - 28, - 0, - 214, - 224, - 5, - 236, - 0, - 0, - 215, - 216, - 5, - 206, - 0, - 0, - 216, - 217, - 3, - 114, - 57, - 0, - 217, - 218, - 5, - 10, - 0, - 0, - 218, - 219, - 5, - 220, - 0, - 0, - 219, - 220, - 3, - 56, - 28, - 0, - 220, - 221, - 5, - 236, - 0, - 0, - 221, - 223, - 1, - 0, - 0, - 0, - 222, - 215, - 1, - 0, - 0, - 0, - 223, - 226, - 1, - 0, - 0, - 0, - 224, - 222, - 1, - 0, - 0, - 0, - 224, - 225, - 1, - 0, - 0, - 0, - 225, - 17, - 1, - 0, - 0, - 0, - 226, - 224, - 1, - 0, - 0, - 0, - 227, - 228, - 5, - 129, - 0, - 0, - 228, - 229, - 3, - 74, - 37, - 0, - 229, - 19, - 1, - 0, - 0, - 0, - 230, - 231, - 5, - 187, - 0, - 0, - 231, - 232, - 3, - 74, - 37, - 0, - 232, - 21, - 1, - 0, - 0, - 0, - 233, - 234, - 5, - 73, - 0, - 0, - 234, - 241, - 5, - 18, - 0, - 0, - 235, - 236, - 7, - 0, - 0, - 0, - 236, - 237, - 5, - 220, - 0, - 0, - 237, - 238, - 3, - 72, - 36, - 0, - 238, - 239, - 5, - 236, - 0, - 0, - 239, - 242, - 1, - 0, - 0, - 0, - 240, - 242, - 3, - 72, - 36, - 0, - 241, - 235, - 1, - 0, - 0, - 0, - 241, - 240, - 1, - 0, - 0, - 0, - 242, - 23, - 1, - 0, - 0, - 0, - 243, - 244, - 5, - 74, - 0, - 0, - 244, - 245, - 3, - 74, - 37, - 0, - 245, - 25, - 1, - 0, - 0, - 0, - 246, - 247, - 5, - 122, - 0, - 0, - 247, - 248, - 5, - 18, - 0, - 0, - 248, - 249, - 3, - 46, - 23, - 0, - 249, - 27, - 1, - 0, - 0, - 0, - 250, - 251, - 5, - 122, - 0, - 0, - 251, - 252, - 5, - 18, - 0, - 0, - 252, - 253, - 3, - 72, - 36, - 0, - 253, - 29, - 1, - 0, - 0, - 0, - 254, - 255, - 5, - 99, - 0, - 0, - 255, - 258, - 3, - 74, - 37, - 0, - 256, - 257, - 5, - 206, - 0, - 0, - 257, - 259, - 3, - 74, - 37, - 0, - 258, - 256, - 1, - 0, - 0, - 0, - 258, - 259, - 1, - 0, - 0, - 0, - 259, - 264, - 1, - 0, - 0, - 0, - 260, - 261, - 5, - 189, - 0, - 0, - 261, - 265, - 5, - 164, - 0, - 0, - 262, - 263, - 5, - 18, - 0, - 0, - 263, - 265, - 3, - 72, - 36, - 0, - 264, - 260, - 1, - 0, - 0, - 0, - 264, - 262, - 1, - 0, - 0, - 0, - 264, - 265, - 1, - 0, - 0, - 0, - 265, - 284, - 1, - 0, - 0, - 0, - 266, - 267, - 5, - 99, - 0, - 0, - 267, - 270, - 3, - 74, - 37, - 0, - 268, - 269, - 5, - 189, - 0, - 0, - 269, - 271, - 5, - 164, - 0, - 0, - 270, - 268, - 1, - 0, - 0, - 0, - 270, - 271, - 1, - 0, - 0, - 0, - 271, - 272, - 1, - 0, - 0, - 0, - 272, - 273, - 5, - 118, - 0, - 0, - 273, - 274, - 3, - 74, - 37, - 0, - 274, - 284, - 1, - 0, - 0, - 0, - 275, - 276, - 5, - 99, - 0, - 0, - 276, - 277, - 3, - 74, - 37, - 0, - 277, - 278, - 5, - 118, - 0, - 0, - 278, - 281, - 3, - 74, - 37, - 0, - 279, - 280, - 5, - 18, - 0, - 0, - 280, - 282, - 3, - 72, - 36, - 0, - 281, - 279, - 1, - 0, - 0, - 0, - 281, - 282, - 1, - 0, - 0, - 0, - 282, - 284, - 1, - 0, - 0, - 0, - 283, - 254, - 1, - 0, - 0, - 0, - 283, - 266, - 1, - 0, - 0, - 0, - 283, - 275, - 1, - 0, - 0, - 0, - 284, - 31, - 1, - 0, - 0, - 0, - 285, - 286, - 5, - 118, - 0, - 0, - 286, - 287, - 3, - 74, - 37, - 0, - 287, - 33, - 1, - 0, - 0, - 0, - 288, - 289, - 5, - 150, - 0, - 0, - 289, - 290, - 3, - 52, - 26, - 0, - 290, - 35, - 1, - 0, - 0, - 0, - 291, - 292, - 6, - 18, - -1, - 0, - 292, - 294, - 3, - 90, - 45, - 0, - 293, - 295, - 5, - 61, - 0, - 0, - 294, - 293, - 1, - 0, - 0, - 0, - 294, - 295, - 1, - 0, - 0, - 0, - 295, - 297, - 1, - 0, - 0, - 0, - 296, - 298, - 3, - 44, - 22, - 0, - 297, - 296, - 1, - 0, - 0, - 0, - 297, - 298, - 1, - 0, - 0, - 0, - 298, - 304, - 1, - 0, - 0, - 0, - 299, - 300, - 5, - 220, - 0, - 0, - 300, - 301, - 3, - 36, - 18, - 0, - 301, - 302, - 5, - 236, - 0, - 0, - 302, - 304, - 1, - 0, - 0, - 0, - 303, - 291, - 1, - 0, - 0, - 0, - 303, - 299, - 1, - 0, - 0, - 0, - 304, - 319, - 1, - 0, - 0, - 0, - 305, - 306, - 10, - 3, - 0, - 0, - 306, - 307, - 3, - 40, - 20, - 0, - 307, - 308, - 3, - 36, - 18, - 4, - 308, - 318, - 1, - 0, - 0, - 0, - 309, - 311, - 10, - 4, - 0, - 0, - 310, - 312, - 3, - 38, - 19, - 0, - 311, - 310, - 1, - 0, - 0, - 0, - 311, - 312, - 1, - 0, - 0, - 0, - 312, - 313, - 1, - 0, - 0, - 0, - 313, - 314, - 5, - 90, - 0, - 0, - 314, - 315, - 3, - 36, - 18, - 0, - 315, - 316, - 3, - 42, - 21, - 0, - 316, - 318, - 1, - 0, - 0, - 0, - 317, - 305, - 1, - 0, - 0, - 0, - 317, - 309, - 1, - 0, - 0, - 0, - 318, - 321, - 1, - 0, - 0, - 0, - 319, - 317, - 1, - 0, - 0, - 0, - 319, - 320, - 1, - 0, - 0, - 0, - 320, - 37, - 1, - 0, - 0, - 0, - 321, - 319, - 1, - 0, - 0, - 0, - 322, - 324, - 7, - 2, - 0, - 0, - 323, - 322, - 1, - 0, - 0, - 0, - 323, - 324, - 1, - 0, - 0, - 0, - 324, - 325, - 1, - 0, - 0, - 0, - 325, - 332, - 5, - 84, - 0, - 0, - 326, - 328, - 5, - 84, - 0, - 0, - 327, - 329, - 7, - 2, - 0, - 0, - 328, - 327, - 1, - 0, - 0, - 0, - 328, - 329, - 1, - 0, - 0, - 0, - 329, - 332, - 1, - 0, - 0, - 0, - 330, - 332, - 7, - 2, - 0, - 0, - 331, - 323, - 1, - 0, - 0, - 0, - 331, - 326, - 1, - 0, - 0, - 0, - 331, - 330, - 1, - 0, - 0, - 0, - 332, - 366, - 1, - 0, - 0, - 0, - 333, - 335, - 7, - 3, - 0, - 0, - 334, - 333, - 1, - 0, - 0, - 0, - 334, - 335, - 1, - 0, - 0, - 0, - 335, - 336, - 1, - 0, - 0, - 0, - 336, - 338, - 7, - 4, - 0, - 0, - 337, - 339, - 5, - 123, - 0, - 0, - 338, - 337, - 1, - 0, - 0, - 0, - 338, - 339, - 1, - 0, - 0, - 0, - 339, - 348, - 1, - 0, - 0, - 0, - 340, - 342, - 7, - 4, - 0, - 0, - 341, - 343, - 5, - 123, - 0, - 0, - 342, - 341, - 1, - 0, - 0, - 0, - 342, - 343, - 1, - 0, - 0, - 0, - 343, - 345, - 1, - 0, - 0, - 0, - 344, - 346, - 7, - 3, - 0, - 0, - 345, - 344, - 1, - 0, - 0, - 0, - 345, - 346, - 1, - 0, - 0, - 0, - 346, - 348, - 1, - 0, - 0, - 0, - 347, - 334, - 1, - 0, - 0, - 0, - 347, - 340, - 1, - 0, - 0, - 0, - 348, - 366, - 1, - 0, - 0, - 0, - 349, - 351, - 7, - 5, - 0, - 0, - 350, - 349, - 1, - 0, - 0, - 0, - 350, - 351, - 1, - 0, - 0, - 0, - 351, - 352, - 1, - 0, - 0, - 0, - 352, - 354, - 5, - 69, - 0, - 0, - 353, - 355, - 5, - 123, - 0, - 0, - 354, - 353, - 1, - 0, - 0, - 0, - 354, - 355, - 1, - 0, - 0, - 0, - 355, - 364, - 1, - 0, - 0, - 0, - 356, - 358, - 5, - 69, - 0, - 0, - 357, - 359, - 5, - 123, - 0, - 0, - 358, - 357, - 1, - 0, - 0, - 0, - 358, - 359, - 1, - 0, - 0, - 0, - 359, - 361, - 1, - 0, - 0, - 0, - 360, - 362, - 7, - 5, - 0, - 0, - 361, - 360, - 1, - 0, - 0, - 0, - 361, - 362, - 1, - 0, - 0, - 0, - 362, - 364, - 1, - 0, - 0, - 0, - 363, - 350, - 1, - 0, - 0, - 0, - 363, - 356, - 1, - 0, - 0, - 0, - 364, - 366, - 1, - 0, - 0, - 0, - 365, - 331, - 1, - 0, - 0, - 0, - 365, - 347, - 1, - 0, - 0, - 0, - 365, - 363, - 1, - 0, - 0, - 0, - 366, - 39, - 1, - 0, - 0, - 0, - 367, - 368, - 5, - 31, - 0, - 0, - 368, - 371, - 5, - 90, - 0, - 0, - 369, - 371, - 5, - 206, - 0, - 0, - 370, - 367, - 1, - 0, - 0, - 0, - 370, - 369, - 1, - 0, - 0, - 0, - 371, - 41, - 1, - 0, - 0, - 0, - 372, - 373, - 5, - 119, - 0, - 0, - 373, - 382, - 3, - 72, - 36, - 0, - 374, - 375, - 5, - 179, - 0, - 0, - 375, - 376, - 5, - 220, - 0, - 0, - 376, - 377, - 3, - 72, - 36, - 0, - 377, - 378, - 5, - 236, - 0, - 0, - 378, - 382, - 1, - 0, - 0, - 0, - 379, - 380, - 5, - 179, - 0, - 0, - 380, - 382, - 3, - 72, - 36, - 0, - 381, - 372, - 1, - 0, - 0, - 0, - 381, - 374, - 1, - 0, - 0, - 0, - 381, - 379, - 1, - 0, - 0, - 0, - 382, - 43, - 1, - 0, - 0, - 0, - 383, - 384, - 5, - 144, - 0, - 0, - 384, - 387, - 3, - 50, - 25, - 0, - 385, - 386, - 5, - 118, - 0, - 0, - 386, - 388, - 3, - 50, - 25, - 0, - 387, - 385, - 1, - 0, - 0, - 0, - 387, - 388, - 1, - 0, - 0, - 0, - 388, - 45, - 1, - 0, - 0, - 0, - 389, - 394, - 3, - 48, - 24, - 0, - 390, - 391, - 5, - 206, - 0, - 0, - 391, - 393, - 3, - 48, - 24, - 0, - 392, - 390, - 1, - 0, - 0, - 0, - 393, - 396, - 1, - 0, - 0, - 0, - 394, - 392, - 1, - 0, - 0, - 0, - 394, - 395, - 1, - 0, - 0, - 0, - 395, - 47, - 1, - 0, - 0, - 0, - 396, - 394, - 1, - 0, - 0, - 0, - 397, - 399, - 3, - 74, - 37, - 0, - 398, - 400, - 7, - 6, - 0, - 0, - 399, - 398, - 1, - 0, - 0, - 0, - 399, - 400, - 1, - 0, - 0, - 0, - 400, - 403, - 1, - 0, - 0, - 0, - 401, - 402, - 5, - 117, - 0, - 0, - 402, - 404, - 7, - 7, - 0, - 0, - 403, - 401, - 1, - 0, - 0, - 0, - 403, - 404, - 1, - 0, - 0, - 0, - 404, - 407, - 1, - 0, - 0, - 0, - 405, - 406, - 5, - 26, - 0, - 0, - 406, - 408, - 5, - 199, - 0, - 0, - 407, - 405, - 1, - 0, - 0, - 0, - 407, - 408, - 1, - 0, - 0, - 0, - 408, - 49, - 1, - 0, - 0, - 0, - 409, - 416, - 5, - 200, - 0, - 0, - 410, - 413, - 3, - 102, - 51, - 0, - 411, - 412, - 5, - 238, - 0, - 0, - 412, - 414, - 3, - 102, - 51, - 0, - 413, - 411, - 1, - 0, - 0, - 0, - 413, - 414, - 1, - 0, - 0, - 0, - 414, - 416, - 1, - 0, - 0, - 0, - 415, - 409, - 1, - 0, - 0, - 0, - 415, - 410, - 1, - 0, - 0, - 0, - 416, - 51, - 1, - 0, - 0, - 0, - 417, - 422, - 3, - 54, - 27, - 0, - 418, - 419, - 5, - 206, - 0, - 0, - 419, - 421, - 3, - 54, - 27, - 0, - 420, - 418, - 1, - 0, - 0, - 0, - 421, - 424, - 1, - 0, - 0, - 0, - 422, - 420, - 1, - 0, - 0, - 0, - 422, - 423, - 1, - 0, - 0, - 0, - 423, - 53, - 1, - 0, - 0, - 0, - 424, - 422, - 1, - 0, - 0, - 0, - 425, - 426, - 3, - 114, - 57, - 0, - 426, - 427, - 5, - 212, - 0, - 0, - 427, - 428, - 3, - 104, - 52, - 0, - 428, - 55, - 1, - 0, - 0, - 0, - 429, - 431, - 3, - 58, - 29, - 0, - 430, - 429, - 1, - 0, - 0, - 0, - 430, - 431, - 1, - 0, - 0, - 0, - 431, - 433, - 1, - 0, - 0, - 0, - 432, - 434, - 3, - 60, - 30, - 0, - 433, - 432, - 1, - 0, - 0, - 0, - 433, - 434, - 1, - 0, - 0, - 0, - 434, - 436, - 1, - 0, - 0, - 0, - 435, - 437, - 3, - 62, - 31, - 0, - 436, - 435, - 1, - 0, - 0, - 0, - 436, - 437, - 1, - 0, - 0, - 0, - 437, - 57, - 1, - 0, - 0, - 0, - 438, - 439, - 5, - 126, - 0, - 0, - 439, - 440, - 5, - 18, - 0, - 0, - 440, - 441, - 3, - 72, - 36, - 0, - 441, - 59, - 1, - 0, - 0, - 0, - 442, - 443, - 5, - 122, - 0, - 0, - 443, - 444, - 5, - 18, - 0, - 0, - 444, - 445, - 3, - 46, - 23, - 0, - 445, - 61, - 1, - 0, - 0, - 0, - 446, - 447, - 7, - 8, - 0, - 0, - 447, - 448, - 3, - 64, - 32, - 0, - 448, - 63, - 1, - 0, - 0, - 0, - 449, - 456, - 3, - 66, - 33, - 0, - 450, - 451, - 5, - 16, - 0, - 0, - 451, - 452, - 3, - 66, - 33, - 0, - 452, - 453, - 5, - 6, - 0, - 0, - 453, - 454, - 3, - 66, - 33, - 0, - 454, - 456, - 1, - 0, - 0, - 0, - 455, - 449, - 1, - 0, - 0, - 0, - 455, - 450, - 1, - 0, - 0, - 0, - 456, - 65, - 1, - 0, - 0, - 0, - 457, - 458, - 5, - 33, - 0, - 0, - 458, - 470, - 5, - 142, - 0, - 0, - 459, - 460, - 5, - 175, - 0, - 0, - 460, - 470, - 5, - 128, - 0, - 0, - 461, - 462, - 5, - 175, - 0, - 0, - 462, - 470, - 5, - 64, - 0, - 0, - 463, - 464, - 3, - 102, - 51, - 0, - 464, - 465, - 5, - 128, - 0, - 0, - 465, - 470, - 1, - 0, - 0, - 0, - 466, - 467, - 3, - 102, - 51, - 0, - 467, - 468, - 5, - 64, - 0, - 0, - 468, - 470, - 1, - 0, - 0, - 0, - 469, - 457, - 1, - 0, - 0, - 0, - 469, - 459, - 1, - 0, - 0, - 0, - 469, - 461, - 1, - 0, - 0, - 0, - 469, - 463, - 1, - 0, - 0, - 0, - 469, - 466, - 1, - 0, - 0, - 0, - 470, - 67, - 1, - 0, - 0, - 0, - 471, - 472, - 3, - 74, - 37, - 0, - 472, - 473, - 5, - 0, - 0, - 1, - 473, - 69, - 1, - 0, - 0, - 0, - 474, - 522, - 3, - 114, - 57, - 0, - 475, - 476, - 3, - 114, - 57, - 0, - 476, - 477, - 5, - 220, - 0, - 0, - 477, - 478, - 3, - 114, - 57, - 0, - 478, - 485, - 3, - 70, - 35, - 0, - 479, - 480, - 5, - 206, - 0, - 0, - 480, - 481, - 3, - 114, - 57, - 0, - 481, - 482, - 3, - 70, - 35, - 0, - 482, - 484, - 1, - 0, - 0, - 0, - 483, - 479, - 1, - 0, - 0, - 0, - 484, - 487, - 1, - 0, - 0, - 0, - 485, - 483, - 1, - 0, - 0, - 0, - 485, - 486, - 1, - 0, - 0, - 0, - 486, - 488, - 1, - 0, - 0, - 0, - 487, - 485, - 1, - 0, - 0, - 0, - 488, - 489, - 5, - 236, - 0, - 0, - 489, - 522, - 1, - 0, - 0, - 0, - 490, - 491, - 3, - 114, - 57, - 0, - 491, - 492, - 5, - 220, - 0, - 0, - 492, - 497, - 3, - 116, - 58, - 0, - 493, - 494, - 5, - 206, - 0, - 0, - 494, - 496, - 3, - 116, - 58, - 0, - 495, - 493, - 1, - 0, - 0, - 0, - 496, - 499, - 1, - 0, - 0, - 0, - 497, - 495, - 1, - 0, - 0, - 0, - 497, - 498, - 1, - 0, - 0, - 0, - 498, - 500, - 1, - 0, - 0, - 0, - 499, - 497, - 1, - 0, - 0, - 0, - 500, - 501, - 5, - 236, - 0, - 0, - 501, - 522, - 1, - 0, - 0, - 0, - 502, - 503, - 3, - 114, - 57, - 0, - 503, - 504, - 5, - 220, - 0, - 0, - 504, - 509, - 3, - 70, - 35, - 0, - 505, - 506, - 5, - 206, - 0, - 0, - 506, - 508, - 3, - 70, - 35, - 0, - 507, - 505, - 1, - 0, - 0, - 0, - 508, - 511, - 1, - 0, - 0, - 0, - 509, - 507, - 1, - 0, - 0, - 0, - 509, - 510, - 1, - 0, - 0, - 0, - 510, - 512, - 1, - 0, - 0, - 0, - 511, - 509, - 1, - 0, - 0, - 0, - 512, - 513, - 5, - 236, - 0, - 0, - 513, - 522, - 1, - 0, - 0, - 0, - 514, - 515, - 3, - 114, - 57, - 0, - 515, - 517, - 5, - 220, - 0, - 0, - 516, - 518, - 3, - 72, - 36, - 0, - 517, - 516, - 1, - 0, - 0, - 0, - 517, - 518, - 1, - 0, - 0, - 0, - 518, - 519, - 1, - 0, - 0, - 0, - 519, - 520, - 5, - 236, - 0, - 0, - 520, - 522, - 1, - 0, - 0, - 0, - 521, - 474, - 1, - 0, - 0, - 0, - 521, - 475, - 1, - 0, - 0, - 0, - 521, - 490, - 1, - 0, - 0, - 0, - 521, - 502, - 1, - 0, - 0, - 0, - 521, - 514, - 1, - 0, - 0, - 0, - 522, - 71, - 1, - 0, - 0, - 0, - 523, - 528, - 3, - 74, - 37, - 0, - 524, - 525, - 5, - 206, - 0, - 0, - 525, - 527, - 3, - 74, - 37, - 0, - 526, - 524, - 1, - 0, - 0, - 0, - 527, - 530, - 1, - 0, - 0, - 0, - 528, - 526, - 1, - 0, - 0, - 0, - 528, - 529, - 1, - 0, - 0, - 0, - 529, - 73, - 1, - 0, - 0, - 0, - 530, - 528, - 1, - 0, - 0, - 0, - 531, - 532, - 6, - 37, - -1, - 0, - 532, - 534, - 5, - 19, - 0, - 0, - 533, - 535, - 3, - 74, - 37, - 0, - 534, - 533, - 1, - 0, - 0, - 0, - 534, - 535, - 1, - 0, - 0, - 0, - 535, - 541, - 1, - 0, - 0, - 0, - 536, - 537, - 5, - 186, - 0, - 0, - 537, - 538, - 3, - 74, - 37, - 0, - 538, - 539, - 5, - 163, - 0, - 0, - 539, - 540, - 3, - 74, - 37, - 0, - 540, - 542, - 1, - 0, - 0, - 0, - 541, - 536, - 1, - 0, - 0, - 0, - 542, - 543, - 1, - 0, - 0, - 0, - 543, - 541, - 1, - 0, - 0, - 0, - 543, - 544, - 1, - 0, - 0, - 0, - 544, - 547, - 1, - 0, - 0, - 0, - 545, - 546, - 5, - 52, - 0, - 0, - 546, - 548, - 3, - 74, - 37, - 0, - 547, - 545, - 1, - 0, - 0, - 0, - 547, - 548, - 1, - 0, - 0, - 0, - 548, - 549, - 1, - 0, - 0, - 0, - 549, - 550, - 5, - 53, - 0, - 0, - 550, - 661, - 1, - 0, - 0, - 0, - 551, - 552, - 5, - 20, - 0, - 0, - 552, - 553, - 5, - 220, - 0, - 0, - 553, - 554, - 3, - 74, - 37, - 0, - 554, - 555, - 5, - 10, - 0, - 0, - 555, - 556, - 3, - 70, - 35, - 0, - 556, - 557, - 5, - 236, - 0, - 0, - 557, - 661, - 1, - 0, - 0, - 0, - 558, - 559, - 5, - 36, - 0, - 0, - 559, - 661, - 5, - 199, - 0, - 0, - 560, - 561, - 5, - 59, - 0, - 0, - 561, - 562, - 5, - 220, - 0, - 0, - 562, - 563, - 3, - 106, - 53, - 0, - 563, - 564, - 5, - 68, - 0, - 0, - 564, - 565, - 3, - 74, - 37, - 0, - 565, - 566, - 5, - 236, - 0, - 0, - 566, - 661, - 1, - 0, - 0, - 0, - 567, - 568, - 5, - 86, - 0, - 0, - 568, - 569, - 3, - 74, - 37, - 0, - 569, - 570, - 3, - 106, - 53, - 0, - 570, - 661, - 1, - 0, - 0, - 0, - 571, - 572, - 5, - 155, - 0, - 0, - 572, - 573, - 5, - 220, - 0, - 0, - 573, - 574, - 3, - 74, - 37, - 0, - 574, - 575, - 5, - 68, - 0, - 0, - 575, - 578, - 3, - 74, - 37, - 0, - 576, - 577, - 5, - 65, - 0, - 0, - 577, - 579, - 3, - 74, - 37, - 0, - 578, - 576, - 1, - 0, - 0, - 0, - 578, - 579, - 1, - 0, - 0, - 0, - 579, - 580, - 1, - 0, - 0, - 0, - 580, - 581, - 5, - 236, - 0, - 0, - 581, - 661, - 1, - 0, - 0, - 0, - 582, - 583, - 5, - 166, - 0, - 0, - 583, - 661, - 5, - 199, - 0, - 0, - 584, - 585, - 5, - 171, - 0, - 0, - 585, - 586, - 5, - 220, - 0, - 0, - 586, - 587, - 7, - 9, - 0, - 0, - 587, - 588, - 5, - 199, - 0, - 0, - 588, - 589, - 5, - 68, - 0, - 0, - 589, - 590, - 3, - 74, - 37, - 0, - 590, - 591, - 5, - 236, - 0, - 0, - 591, - 661, - 1, - 0, - 0, - 0, - 592, - 593, - 3, - 114, - 57, - 0, - 593, - 595, - 5, - 220, - 0, - 0, - 594, - 596, - 3, - 72, - 36, - 0, - 595, - 594, - 1, - 0, - 0, - 0, - 595, - 596, - 1, - 0, - 0, - 0, - 596, - 597, - 1, - 0, - 0, - 0, - 597, - 598, - 5, - 236, - 0, - 0, - 598, - 599, - 1, - 0, - 0, - 0, - 599, - 600, - 5, - 125, - 0, - 0, - 600, - 601, - 5, - 220, - 0, - 0, - 601, - 602, - 3, - 56, - 28, - 0, - 602, - 603, - 5, - 236, - 0, - 0, - 603, - 661, - 1, - 0, - 0, - 0, - 604, - 605, - 3, - 114, - 57, - 0, - 605, - 607, - 5, - 220, - 0, - 0, - 606, - 608, - 3, - 72, - 36, - 0, - 607, - 606, - 1, - 0, - 0, - 0, - 607, - 608, - 1, - 0, - 0, - 0, - 608, - 609, - 1, - 0, - 0, - 0, - 609, - 610, - 5, - 236, - 0, - 0, - 610, - 611, - 1, - 0, - 0, - 0, - 611, - 612, - 5, - 125, - 0, - 0, - 612, - 613, - 3, - 114, - 57, - 0, - 613, - 661, - 1, - 0, - 0, - 0, - 614, - 620, - 3, - 114, - 57, - 0, - 615, - 617, - 5, - 220, - 0, - 0, - 616, - 618, - 3, - 72, - 36, - 0, - 617, - 616, - 1, - 0, - 0, - 0, - 617, - 618, - 1, - 0, - 0, - 0, - 618, - 619, - 1, - 0, - 0, - 0, - 619, - 621, - 5, - 236, - 0, - 0, - 620, - 615, - 1, - 0, - 0, - 0, - 620, - 621, - 1, - 0, - 0, - 0, - 621, - 622, - 1, - 0, - 0, - 0, - 622, - 624, - 5, - 220, - 0, - 0, - 623, - 625, - 5, - 49, - 0, - 0, - 624, - 623, - 1, - 0, - 0, - 0, - 624, - 625, - 1, - 0, - 0, - 0, - 625, - 627, - 1, - 0, - 0, - 0, - 626, - 628, - 3, - 76, - 38, - 0, - 627, - 626, - 1, - 0, - 0, - 0, - 627, - 628, - 1, - 0, - 0, - 0, - 628, - 629, - 1, - 0, - 0, - 0, - 629, - 630, - 5, - 236, - 0, - 0, - 630, - 661, - 1, - 0, - 0, - 0, - 631, - 661, - 3, - 104, - 52, - 0, - 632, - 633, - 5, - 208, - 0, - 0, - 633, - 661, - 3, - 74, - 37, - 18, - 634, - 635, - 5, - 115, - 0, - 0, - 635, - 661, - 3, - 74, - 37, - 12, - 636, - 637, - 3, - 94, - 47, - 0, - 637, - 638, - 5, - 210, - 0, - 0, - 638, - 640, - 1, - 0, - 0, - 0, - 639, - 636, - 1, - 0, - 0, - 0, - 639, - 640, - 1, - 0, - 0, - 0, - 640, - 641, - 1, - 0, - 0, - 0, - 641, - 661, - 5, - 202, - 0, - 0, - 642, - 643, - 5, - 220, - 0, - 0, - 643, - 644, - 3, - 2, - 1, - 0, - 644, - 645, - 5, - 236, - 0, - 0, - 645, - 661, - 1, - 0, - 0, - 0, - 646, - 647, - 5, - 220, - 0, - 0, - 647, - 648, - 3, - 74, - 37, - 0, - 648, - 649, - 5, - 236, - 0, - 0, - 649, - 661, - 1, - 0, - 0, - 0, - 650, - 651, - 5, - 220, - 0, - 0, - 651, - 652, - 3, - 72, - 36, - 0, - 652, - 653, - 5, - 236, - 0, - 0, - 653, - 661, - 1, - 0, - 0, - 0, - 654, - 656, - 5, - 219, - 0, - 0, - 655, - 657, - 3, - 72, - 36, - 0, - 656, - 655, - 1, - 0, - 0, - 0, - 656, - 657, - 1, - 0, - 0, - 0, - 657, - 658, - 1, - 0, - 0, - 0, - 658, - 661, - 5, - 235, - 0, - 0, - 659, - 661, - 3, - 86, - 43, - 0, - 660, - 531, - 1, - 0, - 0, - 0, - 660, - 551, - 1, - 0, - 0, - 0, - 660, - 558, - 1, - 0, - 0, - 0, - 660, - 560, - 1, - 0, - 0, - 0, - 660, - 567, - 1, - 0, - 0, - 0, - 660, - 571, - 1, - 0, - 0, - 0, - 660, - 582, - 1, - 0, - 0, - 0, - 660, - 584, - 1, - 0, - 0, - 0, - 660, - 592, - 1, - 0, - 0, - 0, - 660, - 604, - 1, - 0, - 0, - 0, - 660, - 614, - 1, - 0, - 0, - 0, - 660, - 631, - 1, - 0, - 0, - 0, - 660, - 632, - 1, - 0, - 0, - 0, - 660, - 634, - 1, - 0, - 0, - 0, - 660, - 639, - 1, - 0, - 0, - 0, - 660, - 642, - 1, - 0, - 0, - 0, - 660, - 646, - 1, - 0, - 0, - 0, - 660, - 650, - 1, - 0, - 0, - 0, - 660, - 654, - 1, - 0, - 0, - 0, - 660, - 659, - 1, - 0, - 0, - 0, - 661, - 755, - 1, - 0, - 0, - 0, - 662, - 666, - 10, - 17, - 0, - 0, - 663, - 667, - 5, - 202, - 0, - 0, - 664, - 667, - 5, - 238, - 0, - 0, - 665, - 667, - 5, - 227, - 0, - 0, - 666, - 663, - 1, - 0, - 0, - 0, - 666, - 664, - 1, - 0, - 0, - 0, - 666, - 665, - 1, - 0, - 0, - 0, - 667, - 668, - 1, - 0, - 0, - 0, - 668, - 754, - 3, - 74, - 37, - 18, - 669, - 673, - 10, - 16, - 0, - 0, - 670, - 674, - 5, - 228, - 0, - 0, - 671, - 674, - 5, - 208, - 0, - 0, - 672, - 674, - 5, - 207, - 0, - 0, - 673, - 670, - 1, - 0, - 0, - 0, - 673, - 671, - 1, - 0, - 0, - 0, - 673, - 672, - 1, - 0, - 0, - 0, - 674, - 675, - 1, - 0, - 0, - 0, - 675, - 754, - 3, - 74, - 37, - 17, - 676, - 701, - 10, - 15, - 0, - 0, - 677, - 702, - 5, - 211, - 0, - 0, - 678, - 702, - 5, - 212, - 0, - 0, - 679, - 702, - 5, - 223, - 0, - 0, - 680, - 702, - 5, - 221, - 0, - 0, - 681, - 702, - 5, - 222, - 0, - 0, - 682, - 702, - 5, - 213, - 0, - 0, - 683, - 702, - 5, - 214, - 0, - 0, - 684, - 686, - 5, - 115, - 0, - 0, - 685, - 684, - 1, - 0, - 0, - 0, - 685, - 686, - 1, - 0, - 0, - 0, - 686, - 687, - 1, - 0, - 0, - 0, - 687, - 689, - 5, - 80, - 0, - 0, - 688, - 690, - 5, - 25, - 0, - 0, - 689, - 688, - 1, - 0, - 0, - 0, - 689, - 690, - 1, - 0, - 0, - 0, - 690, - 702, - 1, - 0, - 0, - 0, - 691, - 693, - 5, - 115, - 0, - 0, - 692, - 691, - 1, - 0, - 0, - 0, - 692, - 693, - 1, - 0, - 0, - 0, - 693, - 694, - 1, - 0, - 0, - 0, - 694, - 702, - 7, - 10, - 0, - 0, - 695, - 702, - 5, - 232, - 0, - 0, - 696, - 702, - 5, - 233, - 0, - 0, - 697, - 702, - 5, - 225, - 0, - 0, - 698, - 702, - 5, - 216, - 0, - 0, - 699, - 702, - 5, - 217, - 0, - 0, - 700, - 702, - 5, - 224, - 0, - 0, - 701, - 677, - 1, - 0, - 0, - 0, - 701, - 678, - 1, - 0, - 0, - 0, - 701, - 679, - 1, - 0, - 0, - 0, - 701, - 680, - 1, - 0, - 0, - 0, - 701, - 681, - 1, - 0, - 0, - 0, - 701, - 682, - 1, - 0, - 0, - 0, - 701, - 683, - 1, - 0, - 0, - 0, - 701, - 685, - 1, - 0, - 0, - 0, - 701, - 692, - 1, - 0, - 0, - 0, - 701, - 695, - 1, - 0, - 0, - 0, - 701, - 696, - 1, - 0, - 0, - 0, - 701, - 697, - 1, - 0, - 0, - 0, - 701, - 698, - 1, - 0, - 0, - 0, - 701, - 699, - 1, - 0, - 0, - 0, - 701, - 700, - 1, - 0, - 0, - 0, - 702, - 703, - 1, - 0, - 0, - 0, - 703, - 754, - 3, - 74, - 37, - 16, - 704, - 705, - 10, - 13, - 0, - 0, - 705, - 706, - 5, - 226, - 0, - 0, - 706, - 754, - 3, - 74, - 37, - 14, - 707, - 708, - 10, - 11, - 0, - 0, - 708, - 709, - 5, - 6, - 0, - 0, - 709, - 754, - 3, - 74, - 37, - 12, - 710, - 711, - 10, - 10, - 0, - 0, - 711, - 712, - 5, - 121, - 0, - 0, - 712, - 754, - 3, - 74, - 37, - 11, - 713, - 715, - 10, - 9, - 0, - 0, - 714, - 716, - 5, - 115, - 0, - 0, - 715, - 714, - 1, - 0, - 0, - 0, - 715, - 716, - 1, - 0, - 0, - 0, - 716, - 717, - 1, - 0, - 0, - 0, - 717, - 718, - 5, - 16, - 0, - 0, - 718, - 719, - 3, - 74, - 37, - 0, - 719, - 720, - 5, - 6, - 0, - 0, - 720, - 721, - 3, - 74, - 37, - 10, - 721, - 754, - 1, - 0, - 0, - 0, - 722, - 723, - 10, - 8, - 0, - 0, - 723, - 724, - 5, - 229, - 0, - 0, - 724, - 725, - 3, - 74, - 37, - 0, - 725, - 726, - 5, - 205, - 0, - 0, - 726, - 727, - 3, - 74, - 37, - 8, - 727, - 754, - 1, - 0, - 0, - 0, - 728, - 729, - 10, - 21, - 0, - 0, - 729, - 730, - 5, - 219, - 0, - 0, - 730, - 731, - 3, - 74, - 37, - 0, - 731, - 732, - 5, - 235, - 0, - 0, - 732, - 754, - 1, - 0, - 0, - 0, - 733, - 734, - 10, - 20, - 0, - 0, - 734, - 735, - 5, - 210, - 0, - 0, - 735, - 754, - 5, - 197, - 0, - 0, - 736, - 737, - 10, - 19, - 0, - 0, - 737, - 738, - 5, - 210, - 0, - 0, - 738, - 754, - 3, - 114, - 57, - 0, - 739, - 740, - 10, - 14, - 0, - 0, - 740, - 742, - 5, - 88, - 0, - 0, - 741, - 743, - 5, - 115, - 0, - 0, - 742, - 741, - 1, - 0, - 0, - 0, - 742, - 743, - 1, - 0, - 0, - 0, - 743, - 744, - 1, - 0, - 0, - 0, - 744, - 754, - 5, - 116, - 0, - 0, - 745, - 751, - 10, - 7, - 0, - 0, - 746, - 752, - 3, - 112, - 56, - 0, - 747, - 748, - 5, - 10, - 0, - 0, - 748, - 752, - 3, - 114, - 57, - 0, - 749, - 750, - 5, - 10, - 0, - 0, - 750, - 752, - 5, - 199, - 0, - 0, - 751, - 746, - 1, - 0, - 0, - 0, - 751, - 747, - 1, - 0, - 0, - 0, - 751, - 749, - 1, - 0, - 0, - 0, - 752, - 754, - 1, - 0, - 0, - 0, - 753, - 662, - 1, - 0, - 0, - 0, - 753, - 669, - 1, - 0, - 0, - 0, - 753, - 676, - 1, - 0, - 0, - 0, - 753, - 704, - 1, - 0, - 0, - 0, - 753, - 707, - 1, - 0, - 0, - 0, - 753, - 710, - 1, - 0, - 0, - 0, - 753, - 713, - 1, - 0, - 0, - 0, - 753, - 722, - 1, - 0, - 0, - 0, - 753, - 728, - 1, - 0, - 0, - 0, - 753, - 733, - 1, - 0, - 0, - 0, - 753, - 736, - 1, - 0, - 0, - 0, - 753, - 739, - 1, - 0, - 0, - 0, - 753, - 745, - 1, - 0, - 0, - 0, - 754, - 757, - 1, - 0, - 0, - 0, - 755, - 753, - 1, - 0, - 0, - 0, - 755, - 756, - 1, - 0, - 0, - 0, - 756, - 75, - 1, - 0, - 0, - 0, - 757, - 755, - 1, - 0, - 0, - 0, - 758, - 763, - 3, - 78, - 39, - 0, - 759, - 760, - 5, - 206, - 0, - 0, - 760, - 762, - 3, - 78, - 39, - 0, - 761, - 759, - 1, - 0, - 0, - 0, - 762, - 765, - 1, - 0, - 0, - 0, - 763, - 761, - 1, - 0, - 0, - 0, - 763, - 764, - 1, - 0, - 0, - 0, - 764, - 77, - 1, - 0, - 0, - 0, - 765, - 763, - 1, - 0, - 0, - 0, - 766, - 769, - 3, - 80, - 40, - 0, - 767, - 769, - 3, - 74, - 37, - 0, - 768, - 766, - 1, - 0, - 0, - 0, - 768, - 767, - 1, - 0, - 0, - 0, - 769, - 79, - 1, - 0, - 0, - 0, - 770, - 771, - 5, - 220, - 0, - 0, - 771, - 776, - 3, - 114, - 57, - 0, - 772, - 773, - 5, - 206, - 0, - 0, - 773, - 775, - 3, - 114, - 57, - 0, - 774, - 772, - 1, - 0, - 0, - 0, - 775, - 778, - 1, - 0, - 0, - 0, - 776, - 774, - 1, - 0, - 0, - 0, - 776, - 777, - 1, - 0, - 0, - 0, - 777, - 779, - 1, - 0, - 0, - 0, - 778, - 776, - 1, - 0, - 0, - 0, - 779, - 780, - 5, - 236, - 0, - 0, - 780, - 790, - 1, - 0, - 0, - 0, - 781, - 786, - 3, - 114, - 57, - 0, - 782, - 783, - 5, - 206, - 0, - 0, - 783, - 785, - 3, - 114, - 57, - 0, - 784, - 782, - 1, - 0, - 0, - 0, - 785, - 788, - 1, - 0, - 0, - 0, - 786, - 784, - 1, - 0, - 0, - 0, - 786, - 787, - 1, - 0, - 0, - 0, - 787, - 790, - 1, - 0, - 0, - 0, - 788, - 786, - 1, - 0, - 0, - 0, - 789, - 770, - 1, - 0, - 0, - 0, - 789, - 781, - 1, - 0, - 0, - 0, - 790, - 791, - 1, - 0, - 0, - 0, - 791, - 792, - 5, - 201, - 0, - 0, - 792, - 793, - 3, - 74, - 37, - 0, - 793, - 81, - 1, - 0, - 0, - 0, - 794, - 799, - 3, - 84, - 42, - 0, - 795, - 796, - 5, - 206, - 0, - 0, - 796, - 798, - 3, - 84, - 42, - 0, - 797, - 795, - 1, - 0, - 0, - 0, - 798, - 801, - 1, - 0, - 0, - 0, - 799, - 797, - 1, - 0, - 0, - 0, - 799, - 800, - 1, - 0, - 0, - 0, - 800, - 83, - 1, - 0, - 0, - 0, - 801, - 799, - 1, - 0, - 0, - 0, - 802, - 803, - 3, - 114, - 57, - 0, - 803, - 804, - 5, - 10, - 0, - 0, - 804, - 805, - 5, - 220, - 0, - 0, - 805, - 806, - 3, - 2, - 1, - 0, - 806, - 807, - 5, - 236, - 0, - 0, - 807, - 813, - 1, - 0, - 0, - 0, - 808, - 809, - 3, - 74, - 37, - 0, - 809, - 810, - 5, - 10, - 0, - 0, - 810, - 811, - 3, - 114, - 57, - 0, - 811, - 813, - 1, - 0, - 0, - 0, - 812, - 802, - 1, - 0, - 0, - 0, - 812, - 808, - 1, - 0, - 0, - 0, - 813, - 85, - 1, - 0, - 0, - 0, - 814, - 822, - 5, - 200, - 0, - 0, - 815, - 816, - 3, - 94, - 47, - 0, - 816, - 817, - 5, - 210, - 0, - 0, - 817, - 819, - 1, - 0, - 0, - 0, - 818, - 815, - 1, - 0, - 0, - 0, - 818, - 819, - 1, - 0, - 0, - 0, - 819, - 820, - 1, - 0, - 0, - 0, - 820, - 822, - 3, - 88, - 44, - 0, - 821, - 814, - 1, - 0, - 0, - 0, - 821, - 818, - 1, - 0, - 0, - 0, - 822, - 87, - 1, - 0, - 0, - 0, - 823, - 828, - 3, - 114, - 57, - 0, - 824, - 825, - 5, - 210, - 0, - 0, - 825, - 827, - 3, - 114, - 57, - 0, - 826, - 824, - 1, - 0, - 0, - 0, - 827, - 830, - 1, - 0, - 0, - 0, - 828, - 826, - 1, - 0, - 0, - 0, - 828, - 829, - 1, - 0, - 0, - 0, - 829, - 89, - 1, - 0, - 0, - 0, - 830, - 828, - 1, - 0, - 0, - 0, - 831, - 832, - 6, - 45, - -1, - 0, - 832, - 840, - 3, - 94, - 47, - 0, - 833, - 840, - 3, - 92, - 46, - 0, - 834, - 835, - 5, - 220, - 0, - 0, - 835, - 836, - 3, - 2, - 1, - 0, - 836, - 837, - 5, - 236, - 0, - 0, - 837, - 840, - 1, - 0, - 0, - 0, - 838, - 840, - 5, - 200, - 0, - 0, - 839, - 831, - 1, - 0, - 0, - 0, - 839, - 833, - 1, - 0, - 0, - 0, - 839, - 834, - 1, - 0, - 0, - 0, - 839, - 838, - 1, - 0, - 0, - 0, - 840, - 849, - 1, - 0, - 0, - 0, - 841, - 845, - 10, - 2, - 0, - 0, - 842, - 846, - 3, - 112, - 56, - 0, - 843, - 844, - 5, - 10, - 0, - 0, - 844, - 846, - 3, - 114, - 57, - 0, - 845, - 842, - 1, - 0, - 0, - 0, - 845, - 843, - 1, - 0, - 0, - 0, - 846, - 848, - 1, - 0, - 0, - 0, - 847, - 841, - 1, - 0, - 0, - 0, - 848, - 851, - 1, - 0, - 0, - 0, - 849, - 847, - 1, - 0, - 0, - 0, - 849, - 850, - 1, - 0, - 0, - 0, - 850, - 91, - 1, - 0, - 0, - 0, - 851, - 849, - 1, - 0, - 0, - 0, - 852, - 853, - 3, - 114, - 57, - 0, - 853, - 855, - 5, - 220, - 0, - 0, - 854, - 856, - 3, - 96, - 48, - 0, - 855, - 854, - 1, - 0, - 0, - 0, - 855, - 856, - 1, - 0, - 0, - 0, - 856, - 857, - 1, - 0, - 0, - 0, - 857, - 858, - 5, - 236, - 0, - 0, - 858, - 93, - 1, - 0, - 0, - 0, - 859, - 860, - 3, - 98, - 49, - 0, - 860, - 861, - 5, - 210, - 0, - 0, - 861, - 863, - 1, - 0, - 0, - 0, - 862, - 859, - 1, - 0, - 0, - 0, - 862, - 863, - 1, - 0, - 0, - 0, - 863, - 864, - 1, - 0, - 0, - 0, - 864, - 865, - 3, - 114, - 57, - 0, - 865, - 95, - 1, - 0, - 0, - 0, - 866, - 871, - 3, - 74, - 37, - 0, - 867, - 868, - 5, - 206, - 0, - 0, - 868, - 870, - 3, - 74, - 37, - 0, - 869, - 867, - 1, - 0, - 0, - 0, - 870, - 873, - 1, - 0, - 0, - 0, - 871, - 869, - 1, - 0, - 0, - 0, - 871, - 872, - 1, - 0, - 0, - 0, - 872, - 97, - 1, - 0, - 0, - 0, - 873, - 871, - 1, - 0, - 0, - 0, - 874, - 875, - 3, - 114, - 57, - 0, - 875, - 99, - 1, - 0, - 0, - 0, - 876, - 885, - 5, - 195, - 0, - 0, - 877, - 878, - 5, - 210, - 0, - 0, - 878, - 885, - 7, - 11, - 0, - 0, - 879, - 880, - 5, - 197, - 0, - 0, - 880, - 882, - 5, - 210, - 0, - 0, - 881, - 883, - 7, - 11, - 0, - 0, - 882, - 881, - 1, - 0, - 0, - 0, - 882, - 883, - 1, - 0, - 0, - 0, - 883, - 885, - 1, - 0, - 0, - 0, - 884, - 876, - 1, - 0, - 0, - 0, - 884, - 877, - 1, - 0, - 0, - 0, - 884, - 879, - 1, - 0, - 0, - 0, - 885, - 101, - 1, - 0, - 0, - 0, - 886, - 888, - 7, - 12, - 0, - 0, - 887, - 886, - 1, - 0, - 0, - 0, - 887, - 888, - 1, - 0, - 0, - 0, - 888, - 895, - 1, - 0, - 0, - 0, - 889, - 896, - 3, - 100, - 50, - 0, - 890, - 896, - 5, - 196, - 0, - 0, - 891, - 896, - 5, - 197, - 0, - 0, - 892, - 896, - 5, - 198, - 0, - 0, - 893, - 896, - 5, - 82, - 0, - 0, - 894, - 896, - 5, - 113, - 0, - 0, - 895, - 889, - 1, - 0, - 0, - 0, - 895, - 890, - 1, - 0, - 0, - 0, - 895, - 891, - 1, - 0, - 0, - 0, - 895, - 892, - 1, - 0, - 0, - 0, - 895, - 893, - 1, - 0, - 0, - 0, - 895, - 894, - 1, - 0, - 0, - 0, - 896, - 103, - 1, - 0, - 0, - 0, - 897, - 901, - 3, - 102, - 51, - 0, - 898, - 901, - 5, - 199, - 0, - 0, - 899, - 901, - 5, - 116, - 0, - 0, - 900, - 897, - 1, - 0, - 0, - 0, - 900, - 898, - 1, - 0, - 0, - 0, - 900, - 899, - 1, - 0, - 0, - 0, - 901, - 105, - 1, - 0, - 0, - 0, - 902, - 903, - 7, - 13, - 0, - 0, - 903, - 107, - 1, - 0, - 0, - 0, - 904, - 905, - 7, - 14, - 0, - 0, - 905, - 109, - 1, - 0, - 0, - 0, - 906, - 907, - 7, - 15, - 0, - 0, - 907, - 111, - 1, - 0, - 0, - 0, - 908, - 911, - 5, - 194, - 0, - 0, - 909, - 911, - 3, - 110, - 55, - 0, - 910, - 908, - 1, - 0, - 0, - 0, - 910, - 909, - 1, - 0, - 0, - 0, - 911, - 113, - 1, - 0, - 0, - 0, - 912, - 916, - 5, - 194, - 0, - 0, - 913, - 916, - 3, - 106, - 53, - 0, - 914, - 916, - 3, - 108, - 54, - 0, - 915, - 912, - 1, - 0, - 0, - 0, - 915, - 913, - 1, - 0, - 0, - 0, - 915, - 914, - 1, - 0, - 0, - 0, - 916, - 115, - 1, - 0, - 0, - 0, - 917, - 918, - 5, - 199, - 0, - 0, - 918, - 919, - 5, - 212, - 0, - 0, - 919, - 920, - 3, - 102, - 51, - 0, - 920, - 117, - 1, - 0, - 0, - 0, - 115, - 120, - 130, - 138, - 141, - 145, - 148, - 152, - 155, - 158, - 161, - 164, - 168, - 172, - 175, - 178, - 181, - 185, - 188, - 197, - 203, - 224, - 241, - 258, - 264, - 270, - 281, - 283, - 294, - 297, - 303, - 311, - 317, - 319, - 323, - 328, - 331, - 334, - 338, - 342, - 345, - 347, - 350, - 354, - 358, - 361, - 363, - 365, - 370, - 381, - 387, - 394, - 399, - 403, - 407, - 413, - 415, - 422, - 430, - 433, - 436, - 455, - 469, - 485, - 497, - 509, - 517, - 521, - 528, - 534, - 543, - 547, - 578, - 595, - 607, - 617, - 620, - 624, - 627, - 639, - 656, - 660, - 666, - 673, - 685, - 689, - 692, - 701, - 715, - 742, - 751, - 753, - 755, - 763, - 768, - 776, - 786, - 789, - 799, - 812, - 818, - 821, - 828, - 839, - 845, - 849, - 855, - 862, - 871, - 882, - 884, - 887, - 895, - 900, - 910, - 915, + 4,1,242,922,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, + 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, + 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, + 26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2, + 33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7, + 39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2, + 46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7, + 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,1, + 0,1,0,3,0,121,8,0,1,0,1,0,1,1,1,1,1,1,1,1,5,1,129,8,1,10,1,12,1, + 132,9,1,1,2,1,2,1,2,1,2,1,2,3,2,139,8,2,1,3,3,3,142,8,3,1,3,1,3, + 3,3,146,8,3,1,3,3,3,149,8,3,1,3,1,3,3,3,153,8,3,1,3,3,3,156,8,3, + 1,3,3,3,159,8,3,1,3,3,3,162,8,3,1,3,3,3,165,8,3,1,3,1,3,3,3,169, + 8,3,1,3,1,3,3,3,173,8,3,1,3,3,3,176,8,3,1,3,3,3,179,8,3,1,3,3,3, + 182,8,3,1,3,1,3,3,3,186,8,3,1,3,3,3,189,8,3,1,4,1,4,1,4,1,5,1,5, + 1,5,1,5,3,5,198,8,5,1,6,1,6,1,6,1,7,3,7,204,8,7,1,7,1,7,1,7,1,7, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,223,8,8, + 10,8,12,8,226,9,8,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,11, + 1,11,1,11,1,11,1,11,3,11,242,8,11,1,12,1,12,1,12,1,13,1,13,1,13, + 1,13,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,3,15,259,8,15,1,15, + 1,15,1,15,1,15,3,15,265,8,15,1,15,1,15,1,15,1,15,3,15,271,8,15,1, + 15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,282,8,15,3,15,284, + 8,15,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,3,18,295,8,18, + 1,18,3,18,298,8,18,1,18,1,18,1,18,1,18,3,18,304,8,18,1,18,1,18,1, + 18,1,18,1,18,1,18,3,18,312,8,18,1,18,1,18,1,18,1,18,5,18,318,8,18, + 10,18,12,18,321,9,18,1,19,3,19,324,8,19,1,19,1,19,1,19,3,19,329, + 8,19,1,19,3,19,332,8,19,1,19,3,19,335,8,19,1,19,1,19,3,19,339,8, + 19,1,19,1,19,3,19,343,8,19,1,19,3,19,346,8,19,3,19,348,8,19,1,19, + 3,19,351,8,19,1,19,1,19,3,19,355,8,19,1,19,1,19,3,19,359,8,19,1, + 19,3,19,362,8,19,3,19,364,8,19,3,19,366,8,19,1,20,1,20,1,20,3,20, + 371,8,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,382,8, + 21,1,22,1,22,1,22,1,22,3,22,388,8,22,1,23,1,23,1,23,5,23,393,8,23, + 10,23,12,23,396,9,23,1,24,1,24,3,24,400,8,24,1,24,1,24,3,24,404, + 8,24,1,24,1,24,3,24,408,8,24,1,25,1,25,1,25,1,25,3,25,414,8,25,3, + 25,416,8,25,1,26,1,26,1,26,5,26,421,8,26,10,26,12,26,424,9,26,1, + 27,1,27,1,27,1,27,1,28,3,28,431,8,28,1,28,3,28,434,8,28,1,28,3,28, + 437,8,28,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,31,1,31,1,31, + 1,32,1,32,1,32,1,32,1,32,1,32,3,32,456,8,32,1,33,1,33,1,33,1,33, + 1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,470,8,33,1,34,1,34, + 1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,5,35,484,8,35, + 10,35,12,35,487,9,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,5,35,496, + 8,35,10,35,12,35,499,9,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,5,35, + 508,8,35,10,35,12,35,511,9,35,1,35,1,35,1,35,1,35,1,35,3,35,518, + 8,35,1,35,1,35,3,35,522,8,35,1,36,1,36,1,36,5,36,527,8,36,10,36, + 12,36,530,9,36,1,37,1,37,1,37,3,37,535,8,37,1,37,1,37,1,37,1,37, + 1,37,4,37,542,8,37,11,37,12,37,543,1,37,1,37,3,37,548,8,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37, + 1,37,1,37,3,37,579,8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,596,8,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,608,8,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,3,37,618,8,37,1,37,3,37,621,8,37,1,37,1, + 37,3,37,625,8,37,1,37,3,37,628,8,37,1,37,1,37,1,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,3,37,640,8,37,1,37,1,37,1,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,657,8,37,1,37, + 1,37,3,37,661,8,37,1,37,1,37,1,37,1,37,3,37,667,8,37,1,37,1,37,1, + 37,1,37,1,37,3,37,674,8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1, + 37,1,37,1,37,3,37,686,8,37,1,37,1,37,3,37,690,8,37,1,37,3,37,693, + 8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,702,8,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,716,8,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37, + 743,8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,752,8,37,5,37,754, + 8,37,10,37,12,37,757,9,37,1,38,1,38,1,38,5,38,762,8,38,10,38,12, + 38,765,9,38,1,39,1,39,3,39,769,8,39,1,40,1,40,1,40,1,40,5,40,775, + 8,40,10,40,12,40,778,9,40,1,40,1,40,1,40,1,40,1,40,5,40,785,8,40, + 10,40,12,40,788,9,40,3,40,790,8,40,1,40,1,40,1,40,1,41,1,41,1,41, + 5,41,798,8,41,10,41,12,41,801,9,41,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,42,1,42,1,42,3,42,813,8,42,1,43,1,43,1,43,1,43,3,43,819,8, + 43,1,43,3,43,822,8,43,1,44,1,44,1,44,5,44,827,8,44,10,44,12,44,830, + 9,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,3,45,840,8,45,1,45, + 1,45,1,45,1,45,3,45,846,8,45,5,45,848,8,45,10,45,12,45,851,9,45, + 1,46,1,46,1,46,3,46,856,8,46,1,46,1,46,1,47,1,47,1,47,3,47,863,8, + 47,1,47,1,47,1,48,1,48,1,48,5,48,870,8,48,10,48,12,48,873,9,48,1, + 49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,3,50,883,8,50,3,50,885,8,50, + 1,51,3,51,888,8,51,1,51,1,51,1,51,1,51,1,51,1,51,3,51,896,8,51,1, + 52,1,52,1,52,3,52,901,8,52,1,53,1,53,1,54,1,54,1,55,1,55,1,56,1, + 56,3,56,911,8,56,1,57,1,57,1,57,3,57,916,8,57,1,58,1,58,1,58,1,58, + 1,58,0,3,36,74,90,59,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30, + 32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74, + 76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112, + 114,116,0,16,2,0,32,32,141,141,2,0,84,84,96,96,3,0,4,4,8,8,12,12, + 4,0,4,4,7,8,12,12,147,147,2,0,96,96,140,140,2,0,4,4,8,8,2,0,11,11, + 42,43,2,0,62,62,93,93,2,0,133,133,143,143,3,0,17,17,95,95,170,170, + 2,0,79,79,98,98,1,0,196,197,2,0,208,208,228,228,8,0,37,37,76,76, + 108,108,110,110,132,132,145,145,185,185,190,190,13,0,2,24,26,36, + 38,75,77,81,83,107,109,109,111,112,114,115,117,130,133,144,146,184, + 186,189,191,192,4,0,36,36,62,62,77,77,91,91,1043,0,120,1,0,0,0,2, + 124,1,0,0,0,4,138,1,0,0,0,6,141,1,0,0,0,8,190,1,0,0,0,10,193,1,0, + 0,0,12,199,1,0,0,0,14,203,1,0,0,0,16,209,1,0,0,0,18,227,1,0,0,0, + 20,230,1,0,0,0,22,233,1,0,0,0,24,243,1,0,0,0,26,246,1,0,0,0,28,250, + 1,0,0,0,30,283,1,0,0,0,32,285,1,0,0,0,34,288,1,0,0,0,36,303,1,0, + 0,0,38,365,1,0,0,0,40,370,1,0,0,0,42,381,1,0,0,0,44,383,1,0,0,0, + 46,389,1,0,0,0,48,397,1,0,0,0,50,415,1,0,0,0,52,417,1,0,0,0,54,425, + 1,0,0,0,56,430,1,0,0,0,58,438,1,0,0,0,60,442,1,0,0,0,62,446,1,0, + 0,0,64,455,1,0,0,0,66,469,1,0,0,0,68,471,1,0,0,0,70,521,1,0,0,0, + 72,523,1,0,0,0,74,660,1,0,0,0,76,758,1,0,0,0,78,768,1,0,0,0,80,789, + 1,0,0,0,82,794,1,0,0,0,84,812,1,0,0,0,86,821,1,0,0,0,88,823,1,0, + 0,0,90,839,1,0,0,0,92,852,1,0,0,0,94,862,1,0,0,0,96,866,1,0,0,0, + 98,874,1,0,0,0,100,884,1,0,0,0,102,887,1,0,0,0,104,900,1,0,0,0,106, + 902,1,0,0,0,108,904,1,0,0,0,110,906,1,0,0,0,112,910,1,0,0,0,114, + 915,1,0,0,0,116,917,1,0,0,0,118,121,3,2,1,0,119,121,3,6,3,0,120, + 118,1,0,0,0,120,119,1,0,0,0,121,122,1,0,0,0,122,123,5,0,0,1,123, + 1,1,0,0,0,124,130,3,4,2,0,125,126,5,176,0,0,126,127,5,4,0,0,127, + 129,3,4,2,0,128,125,1,0,0,0,129,132,1,0,0,0,130,128,1,0,0,0,130, + 131,1,0,0,0,131,3,1,0,0,0,132,130,1,0,0,0,133,139,3,6,3,0,134,135, + 5,220,0,0,135,136,3,2,1,0,136,137,5,236,0,0,137,139,1,0,0,0,138, + 133,1,0,0,0,138,134,1,0,0,0,139,5,1,0,0,0,140,142,3,8,4,0,141,140, + 1,0,0,0,141,142,1,0,0,0,142,143,1,0,0,0,143,145,5,146,0,0,144,146, + 5,49,0,0,145,144,1,0,0,0,145,146,1,0,0,0,146,148,1,0,0,0,147,149, + 3,10,5,0,148,147,1,0,0,0,148,149,1,0,0,0,149,150,1,0,0,0,150,152, + 3,72,36,0,151,153,3,12,6,0,152,151,1,0,0,0,152,153,1,0,0,0,153,155, + 1,0,0,0,154,156,3,14,7,0,155,154,1,0,0,0,155,156,1,0,0,0,156,158, + 1,0,0,0,157,159,3,18,9,0,158,157,1,0,0,0,158,159,1,0,0,0,159,161, + 1,0,0,0,160,162,3,20,10,0,161,160,1,0,0,0,161,162,1,0,0,0,162,164, + 1,0,0,0,163,165,3,22,11,0,164,163,1,0,0,0,164,165,1,0,0,0,165,168, + 1,0,0,0,166,167,5,189,0,0,167,169,7,0,0,0,168,166,1,0,0,0,168,169, + 1,0,0,0,169,172,1,0,0,0,170,171,5,189,0,0,171,173,5,169,0,0,172, + 170,1,0,0,0,172,173,1,0,0,0,173,175,1,0,0,0,174,176,3,24,12,0,175, + 174,1,0,0,0,175,176,1,0,0,0,176,178,1,0,0,0,177,179,3,16,8,0,178, + 177,1,0,0,0,178,179,1,0,0,0,179,181,1,0,0,0,180,182,3,26,13,0,181, + 180,1,0,0,0,181,182,1,0,0,0,182,185,1,0,0,0,183,186,3,30,15,0,184, + 186,3,32,16,0,185,183,1,0,0,0,185,184,1,0,0,0,185,186,1,0,0,0,186, + 188,1,0,0,0,187,189,3,34,17,0,188,187,1,0,0,0,188,189,1,0,0,0,189, + 7,1,0,0,0,190,191,5,189,0,0,191,192,3,82,41,0,192,9,1,0,0,0,193, + 194,5,168,0,0,194,197,5,197,0,0,195,196,5,189,0,0,196,198,5,164, + 0,0,197,195,1,0,0,0,197,198,1,0,0,0,198,11,1,0,0,0,199,200,5,68, + 0,0,200,201,3,36,18,0,201,13,1,0,0,0,202,204,7,1,0,0,203,202,1,0, + 0,0,203,204,1,0,0,0,204,205,1,0,0,0,205,206,5,9,0,0,206,207,5,90, + 0,0,207,208,3,72,36,0,208,15,1,0,0,0,209,210,5,188,0,0,210,211,3, + 114,57,0,211,212,5,10,0,0,212,213,5,220,0,0,213,214,3,56,28,0,214, + 224,5,236,0,0,215,216,5,206,0,0,216,217,3,114,57,0,217,218,5,10, + 0,0,218,219,5,220,0,0,219,220,3,56,28,0,220,221,5,236,0,0,221,223, + 1,0,0,0,222,215,1,0,0,0,223,226,1,0,0,0,224,222,1,0,0,0,224,225, + 1,0,0,0,225,17,1,0,0,0,226,224,1,0,0,0,227,228,5,129,0,0,228,229, + 3,74,37,0,229,19,1,0,0,0,230,231,5,187,0,0,231,232,3,74,37,0,232, + 21,1,0,0,0,233,234,5,73,0,0,234,241,5,18,0,0,235,236,7,0,0,0,236, + 237,5,220,0,0,237,238,3,72,36,0,238,239,5,236,0,0,239,242,1,0,0, + 0,240,242,3,72,36,0,241,235,1,0,0,0,241,240,1,0,0,0,242,23,1,0,0, + 0,243,244,5,74,0,0,244,245,3,74,37,0,245,25,1,0,0,0,246,247,5,122, + 0,0,247,248,5,18,0,0,248,249,3,46,23,0,249,27,1,0,0,0,250,251,5, + 122,0,0,251,252,5,18,0,0,252,253,3,72,36,0,253,29,1,0,0,0,254,255, + 5,99,0,0,255,258,3,74,37,0,256,257,5,206,0,0,257,259,3,74,37,0,258, + 256,1,0,0,0,258,259,1,0,0,0,259,264,1,0,0,0,260,261,5,189,0,0,261, + 265,5,164,0,0,262,263,5,18,0,0,263,265,3,72,36,0,264,260,1,0,0,0, + 264,262,1,0,0,0,264,265,1,0,0,0,265,284,1,0,0,0,266,267,5,99,0,0, + 267,270,3,74,37,0,268,269,5,189,0,0,269,271,5,164,0,0,270,268,1, + 0,0,0,270,271,1,0,0,0,271,272,1,0,0,0,272,273,5,118,0,0,273,274, + 3,74,37,0,274,284,1,0,0,0,275,276,5,99,0,0,276,277,3,74,37,0,277, + 278,5,118,0,0,278,281,3,74,37,0,279,280,5,18,0,0,280,282,3,72,36, + 0,281,279,1,0,0,0,281,282,1,0,0,0,282,284,1,0,0,0,283,254,1,0,0, + 0,283,266,1,0,0,0,283,275,1,0,0,0,284,31,1,0,0,0,285,286,5,118,0, + 0,286,287,3,74,37,0,287,33,1,0,0,0,288,289,5,150,0,0,289,290,3,52, + 26,0,290,35,1,0,0,0,291,292,6,18,-1,0,292,294,3,90,45,0,293,295, + 5,61,0,0,294,293,1,0,0,0,294,295,1,0,0,0,295,297,1,0,0,0,296,298, + 3,44,22,0,297,296,1,0,0,0,297,298,1,0,0,0,298,304,1,0,0,0,299,300, + 5,220,0,0,300,301,3,36,18,0,301,302,5,236,0,0,302,304,1,0,0,0,303, + 291,1,0,0,0,303,299,1,0,0,0,304,319,1,0,0,0,305,306,10,3,0,0,306, + 307,3,40,20,0,307,308,3,36,18,4,308,318,1,0,0,0,309,311,10,4,0,0, + 310,312,3,38,19,0,311,310,1,0,0,0,311,312,1,0,0,0,312,313,1,0,0, + 0,313,314,5,90,0,0,314,315,3,36,18,0,315,316,3,42,21,0,316,318,1, + 0,0,0,317,305,1,0,0,0,317,309,1,0,0,0,318,321,1,0,0,0,319,317,1, + 0,0,0,319,320,1,0,0,0,320,37,1,0,0,0,321,319,1,0,0,0,322,324,7,2, + 0,0,323,322,1,0,0,0,323,324,1,0,0,0,324,325,1,0,0,0,325,332,5,84, + 0,0,326,328,5,84,0,0,327,329,7,2,0,0,328,327,1,0,0,0,328,329,1,0, + 0,0,329,332,1,0,0,0,330,332,7,2,0,0,331,323,1,0,0,0,331,326,1,0, + 0,0,331,330,1,0,0,0,332,366,1,0,0,0,333,335,7,3,0,0,334,333,1,0, + 0,0,334,335,1,0,0,0,335,336,1,0,0,0,336,338,7,4,0,0,337,339,5,123, + 0,0,338,337,1,0,0,0,338,339,1,0,0,0,339,348,1,0,0,0,340,342,7,4, + 0,0,341,343,5,123,0,0,342,341,1,0,0,0,342,343,1,0,0,0,343,345,1, + 0,0,0,344,346,7,3,0,0,345,344,1,0,0,0,345,346,1,0,0,0,346,348,1, + 0,0,0,347,334,1,0,0,0,347,340,1,0,0,0,348,366,1,0,0,0,349,351,7, + 5,0,0,350,349,1,0,0,0,350,351,1,0,0,0,351,352,1,0,0,0,352,354,5, + 69,0,0,353,355,5,123,0,0,354,353,1,0,0,0,354,355,1,0,0,0,355,364, + 1,0,0,0,356,358,5,69,0,0,357,359,5,123,0,0,358,357,1,0,0,0,358,359, + 1,0,0,0,359,361,1,0,0,0,360,362,7,5,0,0,361,360,1,0,0,0,361,362, + 1,0,0,0,362,364,1,0,0,0,363,350,1,0,0,0,363,356,1,0,0,0,364,366, + 1,0,0,0,365,331,1,0,0,0,365,347,1,0,0,0,365,363,1,0,0,0,366,39,1, + 0,0,0,367,368,5,31,0,0,368,371,5,90,0,0,369,371,5,206,0,0,370,367, + 1,0,0,0,370,369,1,0,0,0,371,41,1,0,0,0,372,373,5,119,0,0,373,382, + 3,72,36,0,374,375,5,179,0,0,375,376,5,220,0,0,376,377,3,72,36,0, + 377,378,5,236,0,0,378,382,1,0,0,0,379,380,5,179,0,0,380,382,3,72, + 36,0,381,372,1,0,0,0,381,374,1,0,0,0,381,379,1,0,0,0,382,43,1,0, + 0,0,383,384,5,144,0,0,384,387,3,50,25,0,385,386,5,118,0,0,386,388, + 3,50,25,0,387,385,1,0,0,0,387,388,1,0,0,0,388,45,1,0,0,0,389,394, + 3,48,24,0,390,391,5,206,0,0,391,393,3,48,24,0,392,390,1,0,0,0,393, + 396,1,0,0,0,394,392,1,0,0,0,394,395,1,0,0,0,395,47,1,0,0,0,396,394, + 1,0,0,0,397,399,3,74,37,0,398,400,7,6,0,0,399,398,1,0,0,0,399,400, + 1,0,0,0,400,403,1,0,0,0,401,402,5,117,0,0,402,404,7,7,0,0,403,401, + 1,0,0,0,403,404,1,0,0,0,404,407,1,0,0,0,405,406,5,26,0,0,406,408, + 5,199,0,0,407,405,1,0,0,0,407,408,1,0,0,0,408,49,1,0,0,0,409,416, + 5,200,0,0,410,413,3,102,51,0,411,412,5,238,0,0,412,414,3,102,51, + 0,413,411,1,0,0,0,413,414,1,0,0,0,414,416,1,0,0,0,415,409,1,0,0, + 0,415,410,1,0,0,0,416,51,1,0,0,0,417,422,3,54,27,0,418,419,5,206, + 0,0,419,421,3,54,27,0,420,418,1,0,0,0,421,424,1,0,0,0,422,420,1, + 0,0,0,422,423,1,0,0,0,423,53,1,0,0,0,424,422,1,0,0,0,425,426,3,114, + 57,0,426,427,5,212,0,0,427,428,3,104,52,0,428,55,1,0,0,0,429,431, + 3,58,29,0,430,429,1,0,0,0,430,431,1,0,0,0,431,433,1,0,0,0,432,434, + 3,60,30,0,433,432,1,0,0,0,433,434,1,0,0,0,434,436,1,0,0,0,435,437, + 3,62,31,0,436,435,1,0,0,0,436,437,1,0,0,0,437,57,1,0,0,0,438,439, + 5,126,0,0,439,440,5,18,0,0,440,441,3,72,36,0,441,59,1,0,0,0,442, + 443,5,122,0,0,443,444,5,18,0,0,444,445,3,46,23,0,445,61,1,0,0,0, + 446,447,7,8,0,0,447,448,3,64,32,0,448,63,1,0,0,0,449,456,3,66,33, + 0,450,451,5,16,0,0,451,452,3,66,33,0,452,453,5,6,0,0,453,454,3,66, + 33,0,454,456,1,0,0,0,455,449,1,0,0,0,455,450,1,0,0,0,456,65,1,0, + 0,0,457,458,5,33,0,0,458,470,5,142,0,0,459,460,5,175,0,0,460,470, + 5,128,0,0,461,462,5,175,0,0,462,470,5,64,0,0,463,464,3,102,51,0, + 464,465,5,128,0,0,465,470,1,0,0,0,466,467,3,102,51,0,467,468,5,64, + 0,0,468,470,1,0,0,0,469,457,1,0,0,0,469,459,1,0,0,0,469,461,1,0, + 0,0,469,463,1,0,0,0,469,466,1,0,0,0,470,67,1,0,0,0,471,472,3,74, + 37,0,472,473,5,0,0,1,473,69,1,0,0,0,474,522,3,114,57,0,475,476,3, + 114,57,0,476,477,5,220,0,0,477,478,3,114,57,0,478,485,3,70,35,0, + 479,480,5,206,0,0,480,481,3,114,57,0,481,482,3,70,35,0,482,484,1, + 0,0,0,483,479,1,0,0,0,484,487,1,0,0,0,485,483,1,0,0,0,485,486,1, + 0,0,0,486,488,1,0,0,0,487,485,1,0,0,0,488,489,5,236,0,0,489,522, + 1,0,0,0,490,491,3,114,57,0,491,492,5,220,0,0,492,497,3,116,58,0, + 493,494,5,206,0,0,494,496,3,116,58,0,495,493,1,0,0,0,496,499,1,0, + 0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,500,1,0,0,0,499,497,1,0, + 0,0,500,501,5,236,0,0,501,522,1,0,0,0,502,503,3,114,57,0,503,504, + 5,220,0,0,504,509,3,70,35,0,505,506,5,206,0,0,506,508,3,70,35,0, + 507,505,1,0,0,0,508,511,1,0,0,0,509,507,1,0,0,0,509,510,1,0,0,0, + 510,512,1,0,0,0,511,509,1,0,0,0,512,513,5,236,0,0,513,522,1,0,0, + 0,514,515,3,114,57,0,515,517,5,220,0,0,516,518,3,72,36,0,517,516, + 1,0,0,0,517,518,1,0,0,0,518,519,1,0,0,0,519,520,5,236,0,0,520,522, + 1,0,0,0,521,474,1,0,0,0,521,475,1,0,0,0,521,490,1,0,0,0,521,502, + 1,0,0,0,521,514,1,0,0,0,522,71,1,0,0,0,523,528,3,74,37,0,524,525, + 5,206,0,0,525,527,3,74,37,0,526,524,1,0,0,0,527,530,1,0,0,0,528, + 526,1,0,0,0,528,529,1,0,0,0,529,73,1,0,0,0,530,528,1,0,0,0,531,532, + 6,37,-1,0,532,534,5,19,0,0,533,535,3,74,37,0,534,533,1,0,0,0,534, + 535,1,0,0,0,535,541,1,0,0,0,536,537,5,186,0,0,537,538,3,74,37,0, + 538,539,5,163,0,0,539,540,3,74,37,0,540,542,1,0,0,0,541,536,1,0, + 0,0,542,543,1,0,0,0,543,541,1,0,0,0,543,544,1,0,0,0,544,547,1,0, + 0,0,545,546,5,52,0,0,546,548,3,74,37,0,547,545,1,0,0,0,547,548,1, + 0,0,0,548,549,1,0,0,0,549,550,5,53,0,0,550,661,1,0,0,0,551,552,5, + 20,0,0,552,553,5,220,0,0,553,554,3,74,37,0,554,555,5,10,0,0,555, + 556,3,70,35,0,556,557,5,236,0,0,557,661,1,0,0,0,558,559,5,36,0,0, + 559,661,5,199,0,0,560,561,5,59,0,0,561,562,5,220,0,0,562,563,3,106, + 53,0,563,564,5,68,0,0,564,565,3,74,37,0,565,566,5,236,0,0,566,661, + 1,0,0,0,567,568,5,86,0,0,568,569,3,74,37,0,569,570,3,106,53,0,570, + 661,1,0,0,0,571,572,5,155,0,0,572,573,5,220,0,0,573,574,3,74,37, + 0,574,575,5,68,0,0,575,578,3,74,37,0,576,577,5,65,0,0,577,579,3, + 74,37,0,578,576,1,0,0,0,578,579,1,0,0,0,579,580,1,0,0,0,580,581, + 5,236,0,0,581,661,1,0,0,0,582,583,5,166,0,0,583,661,5,199,0,0,584, + 585,5,171,0,0,585,586,5,220,0,0,586,587,7,9,0,0,587,588,5,199,0, + 0,588,589,5,68,0,0,589,590,3,74,37,0,590,591,5,236,0,0,591,661,1, + 0,0,0,592,593,3,114,57,0,593,595,5,220,0,0,594,596,3,72,36,0,595, + 594,1,0,0,0,595,596,1,0,0,0,596,597,1,0,0,0,597,598,5,236,0,0,598, + 599,1,0,0,0,599,600,5,125,0,0,600,601,5,220,0,0,601,602,3,56,28, + 0,602,603,5,236,0,0,603,661,1,0,0,0,604,605,3,114,57,0,605,607,5, + 220,0,0,606,608,3,72,36,0,607,606,1,0,0,0,607,608,1,0,0,0,608,609, + 1,0,0,0,609,610,5,236,0,0,610,611,1,0,0,0,611,612,5,125,0,0,612, + 613,3,114,57,0,613,661,1,0,0,0,614,620,3,114,57,0,615,617,5,220, + 0,0,616,618,3,72,36,0,617,616,1,0,0,0,617,618,1,0,0,0,618,619,1, + 0,0,0,619,621,5,236,0,0,620,615,1,0,0,0,620,621,1,0,0,0,621,622, + 1,0,0,0,622,624,5,220,0,0,623,625,5,49,0,0,624,623,1,0,0,0,624,625, + 1,0,0,0,625,627,1,0,0,0,626,628,3,76,38,0,627,626,1,0,0,0,627,628, + 1,0,0,0,628,629,1,0,0,0,629,630,5,236,0,0,630,661,1,0,0,0,631,661, + 3,104,52,0,632,633,5,208,0,0,633,661,3,74,37,18,634,635,5,115,0, + 0,635,661,3,74,37,12,636,637,3,94,47,0,637,638,5,210,0,0,638,640, + 1,0,0,0,639,636,1,0,0,0,639,640,1,0,0,0,640,641,1,0,0,0,641,661, + 5,202,0,0,642,643,5,220,0,0,643,644,3,2,1,0,644,645,5,236,0,0,645, + 661,1,0,0,0,646,647,5,220,0,0,647,648,3,74,37,0,648,649,5,236,0, + 0,649,661,1,0,0,0,650,651,5,220,0,0,651,652,3,72,36,0,652,653,5, + 236,0,0,653,661,1,0,0,0,654,656,5,219,0,0,655,657,3,72,36,0,656, + 655,1,0,0,0,656,657,1,0,0,0,657,658,1,0,0,0,658,661,5,235,0,0,659, + 661,3,86,43,0,660,531,1,0,0,0,660,551,1,0,0,0,660,558,1,0,0,0,660, + 560,1,0,0,0,660,567,1,0,0,0,660,571,1,0,0,0,660,582,1,0,0,0,660, + 584,1,0,0,0,660,592,1,0,0,0,660,604,1,0,0,0,660,614,1,0,0,0,660, + 631,1,0,0,0,660,632,1,0,0,0,660,634,1,0,0,0,660,639,1,0,0,0,660, + 642,1,0,0,0,660,646,1,0,0,0,660,650,1,0,0,0,660,654,1,0,0,0,660, + 659,1,0,0,0,661,755,1,0,0,0,662,666,10,17,0,0,663,667,5,202,0,0, + 664,667,5,238,0,0,665,667,5,227,0,0,666,663,1,0,0,0,666,664,1,0, + 0,0,666,665,1,0,0,0,667,668,1,0,0,0,668,754,3,74,37,18,669,673,10, + 16,0,0,670,674,5,228,0,0,671,674,5,208,0,0,672,674,5,207,0,0,673, + 670,1,0,0,0,673,671,1,0,0,0,673,672,1,0,0,0,674,675,1,0,0,0,675, + 754,3,74,37,17,676,701,10,15,0,0,677,702,5,211,0,0,678,702,5,212, + 0,0,679,702,5,223,0,0,680,702,5,221,0,0,681,702,5,222,0,0,682,702, + 5,213,0,0,683,702,5,214,0,0,684,686,5,115,0,0,685,684,1,0,0,0,685, + 686,1,0,0,0,686,687,1,0,0,0,687,689,5,80,0,0,688,690,5,25,0,0,689, + 688,1,0,0,0,689,690,1,0,0,0,690,702,1,0,0,0,691,693,5,115,0,0,692, + 691,1,0,0,0,692,693,1,0,0,0,693,694,1,0,0,0,694,702,7,10,0,0,695, + 702,5,232,0,0,696,702,5,233,0,0,697,702,5,225,0,0,698,702,5,216, + 0,0,699,702,5,217,0,0,700,702,5,224,0,0,701,677,1,0,0,0,701,678, + 1,0,0,0,701,679,1,0,0,0,701,680,1,0,0,0,701,681,1,0,0,0,701,682, + 1,0,0,0,701,683,1,0,0,0,701,685,1,0,0,0,701,692,1,0,0,0,701,695, + 1,0,0,0,701,696,1,0,0,0,701,697,1,0,0,0,701,698,1,0,0,0,701,699, + 1,0,0,0,701,700,1,0,0,0,702,703,1,0,0,0,703,754,3,74,37,16,704,705, + 10,13,0,0,705,706,5,226,0,0,706,754,3,74,37,14,707,708,10,11,0,0, + 708,709,5,6,0,0,709,754,3,74,37,12,710,711,10,10,0,0,711,712,5,121, + 0,0,712,754,3,74,37,11,713,715,10,9,0,0,714,716,5,115,0,0,715,714, + 1,0,0,0,715,716,1,0,0,0,716,717,1,0,0,0,717,718,5,16,0,0,718,719, + 3,74,37,0,719,720,5,6,0,0,720,721,3,74,37,10,721,754,1,0,0,0,722, + 723,10,8,0,0,723,724,5,229,0,0,724,725,3,74,37,0,725,726,5,205,0, + 0,726,727,3,74,37,8,727,754,1,0,0,0,728,729,10,21,0,0,729,730,5, + 219,0,0,730,731,3,74,37,0,731,732,5,235,0,0,732,754,1,0,0,0,733, + 734,10,20,0,0,734,735,5,210,0,0,735,754,5,197,0,0,736,737,10,19, + 0,0,737,738,5,210,0,0,738,754,3,114,57,0,739,740,10,14,0,0,740,742, + 5,88,0,0,741,743,5,115,0,0,742,741,1,0,0,0,742,743,1,0,0,0,743,744, + 1,0,0,0,744,754,5,116,0,0,745,751,10,7,0,0,746,752,3,112,56,0,747, + 748,5,10,0,0,748,752,3,114,57,0,749,750,5,10,0,0,750,752,5,199,0, + 0,751,746,1,0,0,0,751,747,1,0,0,0,751,749,1,0,0,0,752,754,1,0,0, + 0,753,662,1,0,0,0,753,669,1,0,0,0,753,676,1,0,0,0,753,704,1,0,0, + 0,753,707,1,0,0,0,753,710,1,0,0,0,753,713,1,0,0,0,753,722,1,0,0, + 0,753,728,1,0,0,0,753,733,1,0,0,0,753,736,1,0,0,0,753,739,1,0,0, + 0,753,745,1,0,0,0,754,757,1,0,0,0,755,753,1,0,0,0,755,756,1,0,0, + 0,756,75,1,0,0,0,757,755,1,0,0,0,758,763,3,78,39,0,759,760,5,206, + 0,0,760,762,3,78,39,0,761,759,1,0,0,0,762,765,1,0,0,0,763,761,1, + 0,0,0,763,764,1,0,0,0,764,77,1,0,0,0,765,763,1,0,0,0,766,769,3,80, + 40,0,767,769,3,74,37,0,768,766,1,0,0,0,768,767,1,0,0,0,769,79,1, + 0,0,0,770,771,5,220,0,0,771,776,3,114,57,0,772,773,5,206,0,0,773, + 775,3,114,57,0,774,772,1,0,0,0,775,778,1,0,0,0,776,774,1,0,0,0,776, + 777,1,0,0,0,777,779,1,0,0,0,778,776,1,0,0,0,779,780,5,236,0,0,780, + 790,1,0,0,0,781,786,3,114,57,0,782,783,5,206,0,0,783,785,3,114,57, + 0,784,782,1,0,0,0,785,788,1,0,0,0,786,784,1,0,0,0,786,787,1,0,0, + 0,787,790,1,0,0,0,788,786,1,0,0,0,789,770,1,0,0,0,789,781,1,0,0, + 0,790,791,1,0,0,0,791,792,5,201,0,0,792,793,3,74,37,0,793,81,1,0, + 0,0,794,799,3,84,42,0,795,796,5,206,0,0,796,798,3,84,42,0,797,795, + 1,0,0,0,798,801,1,0,0,0,799,797,1,0,0,0,799,800,1,0,0,0,800,83,1, + 0,0,0,801,799,1,0,0,0,802,803,3,114,57,0,803,804,5,10,0,0,804,805, + 5,220,0,0,805,806,3,2,1,0,806,807,5,236,0,0,807,813,1,0,0,0,808, + 809,3,74,37,0,809,810,5,10,0,0,810,811,3,114,57,0,811,813,1,0,0, + 0,812,802,1,0,0,0,812,808,1,0,0,0,813,85,1,0,0,0,814,822,5,200,0, + 0,815,816,3,94,47,0,816,817,5,210,0,0,817,819,1,0,0,0,818,815,1, + 0,0,0,818,819,1,0,0,0,819,820,1,0,0,0,820,822,3,88,44,0,821,814, + 1,0,0,0,821,818,1,0,0,0,822,87,1,0,0,0,823,828,3,114,57,0,824,825, + 5,210,0,0,825,827,3,114,57,0,826,824,1,0,0,0,827,830,1,0,0,0,828, + 826,1,0,0,0,828,829,1,0,0,0,829,89,1,0,0,0,830,828,1,0,0,0,831,832, + 6,45,-1,0,832,840,3,94,47,0,833,840,3,92,46,0,834,835,5,220,0,0, + 835,836,3,2,1,0,836,837,5,236,0,0,837,840,1,0,0,0,838,840,5,200, + 0,0,839,831,1,0,0,0,839,833,1,0,0,0,839,834,1,0,0,0,839,838,1,0, + 0,0,840,849,1,0,0,0,841,845,10,2,0,0,842,846,3,112,56,0,843,844, + 5,10,0,0,844,846,3,114,57,0,845,842,1,0,0,0,845,843,1,0,0,0,846, + 848,1,0,0,0,847,841,1,0,0,0,848,851,1,0,0,0,849,847,1,0,0,0,849, + 850,1,0,0,0,850,91,1,0,0,0,851,849,1,0,0,0,852,853,3,114,57,0,853, + 855,5,220,0,0,854,856,3,96,48,0,855,854,1,0,0,0,855,856,1,0,0,0, + 856,857,1,0,0,0,857,858,5,236,0,0,858,93,1,0,0,0,859,860,3,98,49, + 0,860,861,5,210,0,0,861,863,1,0,0,0,862,859,1,0,0,0,862,863,1,0, + 0,0,863,864,1,0,0,0,864,865,3,114,57,0,865,95,1,0,0,0,866,871,3, + 74,37,0,867,868,5,206,0,0,868,870,3,74,37,0,869,867,1,0,0,0,870, + 873,1,0,0,0,871,869,1,0,0,0,871,872,1,0,0,0,872,97,1,0,0,0,873,871, + 1,0,0,0,874,875,3,114,57,0,875,99,1,0,0,0,876,885,5,195,0,0,877, + 878,5,210,0,0,878,885,7,11,0,0,879,880,5,197,0,0,880,882,5,210,0, + 0,881,883,7,11,0,0,882,881,1,0,0,0,882,883,1,0,0,0,883,885,1,0,0, + 0,884,876,1,0,0,0,884,877,1,0,0,0,884,879,1,0,0,0,885,101,1,0,0, + 0,886,888,7,12,0,0,887,886,1,0,0,0,887,888,1,0,0,0,888,895,1,0,0, + 0,889,896,3,100,50,0,890,896,5,196,0,0,891,896,5,197,0,0,892,896, + 5,198,0,0,893,896,5,82,0,0,894,896,5,113,0,0,895,889,1,0,0,0,895, + 890,1,0,0,0,895,891,1,0,0,0,895,892,1,0,0,0,895,893,1,0,0,0,895, + 894,1,0,0,0,896,103,1,0,0,0,897,901,3,102,51,0,898,901,5,199,0,0, + 899,901,5,116,0,0,900,897,1,0,0,0,900,898,1,0,0,0,900,899,1,0,0, + 0,901,105,1,0,0,0,902,903,7,13,0,0,903,107,1,0,0,0,904,905,7,14, + 0,0,905,109,1,0,0,0,906,907,7,15,0,0,907,111,1,0,0,0,908,911,5,194, + 0,0,909,911,3,110,55,0,910,908,1,0,0,0,910,909,1,0,0,0,911,113,1, + 0,0,0,912,916,5,194,0,0,913,916,3,106,53,0,914,916,3,108,54,0,915, + 912,1,0,0,0,915,913,1,0,0,0,915,914,1,0,0,0,916,115,1,0,0,0,917, + 918,5,199,0,0,918,919,5,212,0,0,919,920,3,102,51,0,920,117,1,0,0, + 0,115,120,130,138,141,145,148,152,155,158,161,164,168,172,175,178, + 181,185,188,197,203,224,241,258,264,270,281,283,294,297,303,311, + 317,319,323,328,331,334,338,342,345,347,350,354,358,361,363,365, + 370,381,387,394,399,403,407,413,415,422,430,433,436,455,469,485, + 497,509,517,521,528,534,543,547,578,595,607,617,620,624,627,639, + 656,660,666,673,685,689,692,701,715,742,751,753,755,763,768,776, + 786,789,799,812,818,821,828,839,845,849,855,862,871,882,884,887, + 895,900,910,915 ] - -class HogQLParser(Parser): +class HogQLParser ( Parser ): grammarFileName = "HogQLParser.g4" atn = ATNDeserializer().deserialize(serializedATN()) - decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] sharedContextCache = PredictionContextCache() - literalNames = [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "'false'", - "'true'", - "", - "", - "", - "", - "", - "", - "", - "", - "'->'", - "'*'", - "'`'", - "'\\'", - "':'", - "','", - "'||'", - "'-'", - "'$'", - "'.'", - "'=='", - "'='", - "'>='", - "'>'", - "'#'", - "'~*'", - "'=~*'", - "'{'", - "'['", - "'('", - "'<='", - "'<'", - "", - "'!~*'", - "'!~'", - "'??'", - "'%'", - "'+'", - "'?'", - "'\"'", - "'''", - "'~'", - "'=~'", - "'}'", - "']'", - "')'", - "';'", - "'/'", - "'_'", - ] - - symbolicNames = [ - "", - "ADD", - "AFTER", - "ALIAS", - "ALL", - "ALTER", - "AND", - "ANTI", - "ANY", - "ARRAY", - "AS", - "ASCENDING", - "ASOF", - "AST", - "ASYNC", - "ATTACH", - "BETWEEN", - "BOTH", - "BY", - "CASE", - "CAST", - "CHECK", - "CLEAR", - "CLUSTER", - "CODEC", - "COHORT", - "COLLATE", - "COLUMN", - "COMMENT", - "CONSTRAINT", - "CREATE", - "CROSS", - "CUBE", - "CURRENT", - "DATABASE", - "DATABASES", - "DATE", - "DAY", - "DEDUPLICATE", - "DEFAULT", - "DELAY", - "DELETE", - "DESC", - "DESCENDING", - "DESCRIBE", - "DETACH", - "DICTIONARIES", - "DICTIONARY", - "DISK", - "DISTINCT", - "DISTRIBUTED", - "DROP", - "ELSE", - "END", - "ENGINE", - "EVENTS", - "EXISTS", - "EXPLAIN", - "EXPRESSION", - "EXTRACT", - "FETCHES", - "FINAL", - "FIRST", - "FLUSH", - "FOLLOWING", - "FOR", - "FORMAT", - "FREEZE", - "FROM", - "FULL", - "FUNCTION", - "GLOBAL", - "GRANULARITY", - "GROUP", - "HAVING", - "HIERARCHICAL", - "HOUR", - "ID", - "IF", - "ILIKE", - "IN", - "INDEX", - "INF", - "INJECTIVE", - "INNER", - "INSERT", - "INTERVAL", - "INTO", - "IS", - "IS_OBJECT_ID", - "JOIN", - "KEY", - "KILL", - "LAST", - "LAYOUT", - "LEADING", - "LEFT", - "LIFETIME", - "LIKE", - "LIMIT", - "LIVE", - "LOCAL", - "LOGS", - "MATERIALIZE", - "MATERIALIZED", - "MAX", - "MERGES", - "MIN", - "MINUTE", - "MODIFY", - "MONTH", - "MOVE", - "MUTATION", - "NAN_SQL", - "NO", - "NOT", - "NULL_SQL", - "NULLS", - "OFFSET", - "ON", - "OPTIMIZE", - "OR", - "ORDER", - "OUTER", - "OUTFILE", - "OVER", - "PARTITION", - "POPULATE", - "PRECEDING", - "PREWHERE", - "PRIMARY", - "PROJECTION", - "QUARTER", - "RANGE", - "RELOAD", - "REMOVE", - "RENAME", - "REPLACE", - "REPLICA", - "REPLICATED", - "RIGHT", - "ROLLUP", - "ROW", - "ROWS", - "SAMPLE", - "SECOND", - "SELECT", - "SEMI", - "SENDS", - "SET", - "SETTINGS", - "SHOW", - "SOURCE", - "START", - "STOP", - "SUBSTRING", - "SYNC", - "SYNTAX", - "SYSTEM", - "TABLE", - "TABLES", - "TEMPORARY", - "TEST", - "THEN", - "TIES", - "TIMEOUT", - "TIMESTAMP", - "TO", - "TOP", - "TOTALS", - "TRAILING", - "TRIM", - "TRUNCATE", - "TTL", - "TYPE", - "UNBOUNDED", - "UNION", - "UPDATE", - "USE", - "USING", - "UUID", - "VALUES", - "VIEW", - "VOLUME", - "WATCH", - "WEEK", - "WHEN", - "WHERE", - "WINDOW", - "WITH", - "YEAR", - "JSON_FALSE", - "JSON_TRUE", - "ESCAPE_CHAR", - "IDENTIFIER", - "FLOATING_LITERAL", - "OCTAL_LITERAL", - "DECIMAL_LITERAL", - "HEXADECIMAL_LITERAL", - "STRING_LITERAL", - "PLACEHOLDER", - "ARROW", - "ASTERISK", - "BACKQUOTE", - "BACKSLASH", - "COLON", - "COMMA", - "CONCAT", - "DASH", - "DOLLAR", - "DOT", - "EQ_DOUBLE", - "EQ_SINGLE", - "GT_EQ", - "GT", - "HASH", - "IREGEX_SINGLE", - "IREGEX_DOUBLE", - "LBRACE", - "LBRACKET", - "LPAREN", - "LT_EQ", - "LT", - "NOT_EQ", - "NOT_IREGEX", - "NOT_REGEX", - "NULLISH", - "PERCENT", - "PLUS", - "QUERY", - "QUOTE_DOUBLE", - "QUOTE_SINGLE", - "REGEX_SINGLE", - "REGEX_DOUBLE", - "RBRACE", - "RBRACKET", - "RPAREN", - "SEMICOLON", - "SLASH", - "UNDERSCORE", - "MULTI_LINE_COMMENT", - "SINGLE_LINE_COMMENT", - "WHITESPACE", - ] + literalNames = [ "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "'false'", "'true'", + "", "", "", "", + "", "", "", "", + "'->'", "'*'", "'`'", "'\\'", "':'", "','", "'||'", + "'-'", "'$'", "'.'", "'=='", "'='", "'>='", "'>'", + "'#'", "'~*'", "'=~*'", "'{'", "'['", "'('", "'<='", + "'<'", "", "'!~*'", "'!~'", "'??'", "'%'", + "'+'", "'?'", "'\"'", "'''", "'~'", "'=~'", "'}'", + "']'", "')'", "';'", "'/'", "'_'" ] + + symbolicNames = [ "", "ADD", "AFTER", "ALIAS", "ALL", "ALTER", + "AND", "ANTI", "ANY", "ARRAY", "AS", "ASCENDING", + "ASOF", "AST", "ASYNC", "ATTACH", "BETWEEN", "BOTH", + "BY", "CASE", "CAST", "CHECK", "CLEAR", "CLUSTER", + "CODEC", "COHORT", "COLLATE", "COLUMN", "COMMENT", + "CONSTRAINT", "CREATE", "CROSS", "CUBE", "CURRENT", + "DATABASE", "DATABASES", "DATE", "DAY", "DEDUPLICATE", + "DEFAULT", "DELAY", "DELETE", "DESC", "DESCENDING", + "DESCRIBE", "DETACH", "DICTIONARIES", "DICTIONARY", + "DISK", "DISTINCT", "DISTRIBUTED", "DROP", "ELSE", + "END", "ENGINE", "EVENTS", "EXISTS", "EXPLAIN", "EXPRESSION", + "EXTRACT", "FETCHES", "FINAL", "FIRST", "FLUSH", "FOLLOWING", + "FOR", "FORMAT", "FREEZE", "FROM", "FULL", "FUNCTION", + "GLOBAL", "GRANULARITY", "GROUP", "HAVING", "HIERARCHICAL", + "HOUR", "ID", "IF", "ILIKE", "IN", "INDEX", "INF", + "INJECTIVE", "INNER", "INSERT", "INTERVAL", "INTO", + "IS", "IS_OBJECT_ID", "JOIN", "KEY", "KILL", "LAST", + "LAYOUT", "LEADING", "LEFT", "LIFETIME", "LIKE", "LIMIT", + "LIVE", "LOCAL", "LOGS", "MATERIALIZE", "MATERIALIZED", + "MAX", "MERGES", "MIN", "MINUTE", "MODIFY", "MONTH", + "MOVE", "MUTATION", "NAN_SQL", "NO", "NOT", "NULL_SQL", + "NULLS", "OFFSET", "ON", "OPTIMIZE", "OR", "ORDER", + "OUTER", "OUTFILE", "OVER", "PARTITION", "POPULATE", + "PRECEDING", "PREWHERE", "PRIMARY", "PROJECTION", + "QUARTER", "RANGE", "RELOAD", "REMOVE", "RENAME", + "REPLACE", "REPLICA", "REPLICATED", "RIGHT", "ROLLUP", + "ROW", "ROWS", "SAMPLE", "SECOND", "SELECT", "SEMI", + "SENDS", "SET", "SETTINGS", "SHOW", "SOURCE", "START", + "STOP", "SUBSTRING", "SYNC", "SYNTAX", "SYSTEM", "TABLE", + "TABLES", "TEMPORARY", "TEST", "THEN", "TIES", "TIMEOUT", + "TIMESTAMP", "TO", "TOP", "TOTALS", "TRAILING", "TRIM", + "TRUNCATE", "TTL", "TYPE", "UNBOUNDED", "UNION", "UPDATE", + "USE", "USING", "UUID", "VALUES", "VIEW", "VOLUME", + "WATCH", "WEEK", "WHEN", "WHERE", "WINDOW", "WITH", + "YEAR", "JSON_FALSE", "JSON_TRUE", "ESCAPE_CHAR", + "IDENTIFIER", "FLOATING_LITERAL", "OCTAL_LITERAL", + "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "STRING_LITERAL", + "PLACEHOLDER", "ARROW", "ASTERISK", "BACKQUOTE", "BACKSLASH", + "COLON", "COMMA", "CONCAT", "DASH", "DOLLAR", "DOT", + "EQ_DOUBLE", "EQ_SINGLE", "GT_EQ", "GT", "HASH", "IREGEX_SINGLE", + "IREGEX_DOUBLE", "LBRACE", "LBRACKET", "LPAREN", "LT_EQ", + "LT", "NOT_EQ", "NOT_IREGEX", "NOT_REGEX", "NULLISH", + "PERCENT", "PLUS", "QUERY", "QUOTE_DOUBLE", "QUOTE_SINGLE", + "REGEX_SINGLE", "REGEX_DOUBLE", "RBRACE", "RBRACKET", + "RPAREN", "SEMICOLON", "SLASH", "UNDERSCORE", "MULTI_LINE_COMMENT", + "SINGLE_LINE_COMMENT", "WHITESPACE" ] RULE_select = 0 RULE_selectUnionStmt = 1 @@ -9135,322 +550,281 @@ class HogQLParser(Parser): RULE_identifier = 57 RULE_enumValue = 58 - ruleNames = [ - "select", - "selectUnionStmt", - "selectStmtWithParens", - "selectStmt", - "withClause", - "topClause", - "fromClause", - "arrayJoinClause", - "windowClause", - "prewhereClause", - "whereClause", - "groupByClause", - "havingClause", - "orderByClause", - "projectionOrderByClause", - "limitAndOffsetClause", - "offsetOnlyClause", - "settingsClause", - "joinExpr", - "joinOp", - "joinOpCross", - "joinConstraintClause", - "sampleClause", - "orderExprList", - "orderExpr", - "ratioExpr", - "settingExprList", - "settingExpr", - "windowExpr", - "winPartitionByClause", - "winOrderByClause", - "winFrameClause", - "winFrameExtend", - "winFrameBound", - "expr", - "columnTypeExpr", - "columnExprList", - "columnExpr", - "columnArgList", - "columnArgExpr", - "columnLambdaExpr", - "withExprList", - "withExpr", - "columnIdentifier", - "nestedIdentifier", - "tableExpr", - "tableFunctionExpr", - "tableIdentifier", - "tableArgList", - "databaseIdentifier", - "floatingLiteral", - "numberLiteral", - "literal", - "interval", - "keyword", - "keywordForAlias", - "alias", - "identifier", - "enumValue", - ] + ruleNames = [ "select", "selectUnionStmt", "selectStmtWithParens", + "selectStmt", "withClause", "topClause", "fromClause", + "arrayJoinClause", "windowClause", "prewhereClause", + "whereClause", "groupByClause", "havingClause", "orderByClause", + "projectionOrderByClause", "limitAndOffsetClause", "offsetOnlyClause", + "settingsClause", "joinExpr", "joinOp", "joinOpCross", + "joinConstraintClause", "sampleClause", "orderExprList", + "orderExpr", "ratioExpr", "settingExprList", "settingExpr", + "windowExpr", "winPartitionByClause", "winOrderByClause", + "winFrameClause", "winFrameExtend", "winFrameBound", + "expr", "columnTypeExpr", "columnExprList", "columnExpr", + "columnArgList", "columnArgExpr", "columnLambdaExpr", + "withExprList", "withExpr", "columnIdentifier", "nestedIdentifier", + "tableExpr", "tableFunctionExpr", "tableIdentifier", + "tableArgList", "databaseIdentifier", "floatingLiteral", + "numberLiteral", "literal", "interval", "keyword", "keywordForAlias", + "alias", "identifier", "enumValue" ] EOF = Token.EOF - ADD = 1 - AFTER = 2 - ALIAS = 3 - ALL = 4 - ALTER = 5 - AND = 6 - ANTI = 7 - ANY = 8 - ARRAY = 9 - AS = 10 - ASCENDING = 11 - ASOF = 12 - AST = 13 - ASYNC = 14 - ATTACH = 15 - BETWEEN = 16 - BOTH = 17 - BY = 18 - CASE = 19 - CAST = 20 - CHECK = 21 - CLEAR = 22 - CLUSTER = 23 - CODEC = 24 - COHORT = 25 - COLLATE = 26 - COLUMN = 27 - COMMENT = 28 - CONSTRAINT = 29 - CREATE = 30 - CROSS = 31 - CUBE = 32 - CURRENT = 33 - DATABASE = 34 - DATABASES = 35 - DATE = 36 - DAY = 37 - DEDUPLICATE = 38 - DEFAULT = 39 - DELAY = 40 - DELETE = 41 - DESC = 42 - DESCENDING = 43 - DESCRIBE = 44 - DETACH = 45 - DICTIONARIES = 46 - DICTIONARY = 47 - DISK = 48 - DISTINCT = 49 - DISTRIBUTED = 50 - DROP = 51 - ELSE = 52 - END = 53 - ENGINE = 54 - EVENTS = 55 - EXISTS = 56 - EXPLAIN = 57 - EXPRESSION = 58 - EXTRACT = 59 - FETCHES = 60 - FINAL = 61 - FIRST = 62 - FLUSH = 63 - FOLLOWING = 64 - FOR = 65 - FORMAT = 66 - FREEZE = 67 - FROM = 68 - FULL = 69 - FUNCTION = 70 - GLOBAL = 71 - GRANULARITY = 72 - GROUP = 73 - HAVING = 74 - HIERARCHICAL = 75 - HOUR = 76 - ID = 77 - IF = 78 - ILIKE = 79 - IN = 80 - INDEX = 81 - INF = 82 - INJECTIVE = 83 - INNER = 84 - INSERT = 85 - INTERVAL = 86 - INTO = 87 - IS = 88 - IS_OBJECT_ID = 89 - JOIN = 90 - KEY = 91 - KILL = 92 - LAST = 93 - LAYOUT = 94 - LEADING = 95 - LEFT = 96 - LIFETIME = 97 - LIKE = 98 - LIMIT = 99 - LIVE = 100 - LOCAL = 101 - LOGS = 102 - MATERIALIZE = 103 - MATERIALIZED = 104 - MAX = 105 - MERGES = 106 - MIN = 107 - MINUTE = 108 - MODIFY = 109 - MONTH = 110 - MOVE = 111 - MUTATION = 112 - NAN_SQL = 113 - NO = 114 - NOT = 115 - NULL_SQL = 116 - NULLS = 117 - OFFSET = 118 - ON = 119 - OPTIMIZE = 120 - OR = 121 - ORDER = 122 - OUTER = 123 - OUTFILE = 124 - OVER = 125 - PARTITION = 126 - POPULATE = 127 - PRECEDING = 128 - PREWHERE = 129 - PRIMARY = 130 - PROJECTION = 131 - QUARTER = 132 - RANGE = 133 - RELOAD = 134 - REMOVE = 135 - RENAME = 136 - REPLACE = 137 - REPLICA = 138 - REPLICATED = 139 - RIGHT = 140 - ROLLUP = 141 - ROW = 142 - ROWS = 143 - SAMPLE = 144 - SECOND = 145 - SELECT = 146 - SEMI = 147 - SENDS = 148 - SET = 149 - SETTINGS = 150 - SHOW = 151 - SOURCE = 152 - START = 153 - STOP = 154 - SUBSTRING = 155 - SYNC = 156 - SYNTAX = 157 - SYSTEM = 158 - TABLE = 159 - TABLES = 160 - TEMPORARY = 161 - TEST = 162 - THEN = 163 - TIES = 164 - TIMEOUT = 165 - TIMESTAMP = 166 - TO = 167 - TOP = 168 - TOTALS = 169 - TRAILING = 170 - TRIM = 171 - TRUNCATE = 172 - TTL = 173 - TYPE = 174 - UNBOUNDED = 175 - UNION = 176 - UPDATE = 177 - USE = 178 - USING = 179 - UUID = 180 - VALUES = 181 - VIEW = 182 - VOLUME = 183 - WATCH = 184 - WEEK = 185 - WHEN = 186 - WHERE = 187 - WINDOW = 188 - WITH = 189 - YEAR = 190 - JSON_FALSE = 191 - JSON_TRUE = 192 - ESCAPE_CHAR = 193 - IDENTIFIER = 194 - FLOATING_LITERAL = 195 - OCTAL_LITERAL = 196 - DECIMAL_LITERAL = 197 - HEXADECIMAL_LITERAL = 198 - STRING_LITERAL = 199 - PLACEHOLDER = 200 - ARROW = 201 - ASTERISK = 202 - BACKQUOTE = 203 - BACKSLASH = 204 - COLON = 205 - COMMA = 206 - CONCAT = 207 - DASH = 208 - DOLLAR = 209 - DOT = 210 - EQ_DOUBLE = 211 - EQ_SINGLE = 212 - GT_EQ = 213 - GT = 214 - HASH = 215 - IREGEX_SINGLE = 216 - IREGEX_DOUBLE = 217 - LBRACE = 218 - LBRACKET = 219 - LPAREN = 220 - LT_EQ = 221 - LT = 222 - NOT_EQ = 223 - NOT_IREGEX = 224 - NOT_REGEX = 225 - NULLISH = 226 - PERCENT = 227 - PLUS = 228 - QUERY = 229 - QUOTE_DOUBLE = 230 - QUOTE_SINGLE = 231 - REGEX_SINGLE = 232 - REGEX_DOUBLE = 233 - RBRACE = 234 - RBRACKET = 235 - RPAREN = 236 - SEMICOLON = 237 - SLASH = 238 - UNDERSCORE = 239 - MULTI_LINE_COMMENT = 240 - SINGLE_LINE_COMMENT = 241 - WHITESPACE = 242 - - def __init__(self, input: TokenStream, output: TextIO = sys.stdout): + ADD=1 + AFTER=2 + ALIAS=3 + ALL=4 + ALTER=5 + AND=6 + ANTI=7 + ANY=8 + ARRAY=9 + AS=10 + ASCENDING=11 + ASOF=12 + AST=13 + ASYNC=14 + ATTACH=15 + BETWEEN=16 + BOTH=17 + BY=18 + CASE=19 + CAST=20 + CHECK=21 + CLEAR=22 + CLUSTER=23 + CODEC=24 + COHORT=25 + COLLATE=26 + COLUMN=27 + COMMENT=28 + CONSTRAINT=29 + CREATE=30 + CROSS=31 + CUBE=32 + CURRENT=33 + DATABASE=34 + DATABASES=35 + DATE=36 + DAY=37 + DEDUPLICATE=38 + DEFAULT=39 + DELAY=40 + DELETE=41 + DESC=42 + DESCENDING=43 + DESCRIBE=44 + DETACH=45 + DICTIONARIES=46 + DICTIONARY=47 + DISK=48 + DISTINCT=49 + DISTRIBUTED=50 + DROP=51 + ELSE=52 + END=53 + ENGINE=54 + EVENTS=55 + EXISTS=56 + EXPLAIN=57 + EXPRESSION=58 + EXTRACT=59 + FETCHES=60 + FINAL=61 + FIRST=62 + FLUSH=63 + FOLLOWING=64 + FOR=65 + FORMAT=66 + FREEZE=67 + FROM=68 + FULL=69 + FUNCTION=70 + GLOBAL=71 + GRANULARITY=72 + GROUP=73 + HAVING=74 + HIERARCHICAL=75 + HOUR=76 + ID=77 + IF=78 + ILIKE=79 + IN=80 + INDEX=81 + INF=82 + INJECTIVE=83 + INNER=84 + INSERT=85 + INTERVAL=86 + INTO=87 + IS=88 + IS_OBJECT_ID=89 + JOIN=90 + KEY=91 + KILL=92 + LAST=93 + LAYOUT=94 + LEADING=95 + LEFT=96 + LIFETIME=97 + LIKE=98 + LIMIT=99 + LIVE=100 + LOCAL=101 + LOGS=102 + MATERIALIZE=103 + MATERIALIZED=104 + MAX=105 + MERGES=106 + MIN=107 + MINUTE=108 + MODIFY=109 + MONTH=110 + MOVE=111 + MUTATION=112 + NAN_SQL=113 + NO=114 + NOT=115 + NULL_SQL=116 + NULLS=117 + OFFSET=118 + ON=119 + OPTIMIZE=120 + OR=121 + ORDER=122 + OUTER=123 + OUTFILE=124 + OVER=125 + PARTITION=126 + POPULATE=127 + PRECEDING=128 + PREWHERE=129 + PRIMARY=130 + PROJECTION=131 + QUARTER=132 + RANGE=133 + RELOAD=134 + REMOVE=135 + RENAME=136 + REPLACE=137 + REPLICA=138 + REPLICATED=139 + RIGHT=140 + ROLLUP=141 + ROW=142 + ROWS=143 + SAMPLE=144 + SECOND=145 + SELECT=146 + SEMI=147 + SENDS=148 + SET=149 + SETTINGS=150 + SHOW=151 + SOURCE=152 + START=153 + STOP=154 + SUBSTRING=155 + SYNC=156 + SYNTAX=157 + SYSTEM=158 + TABLE=159 + TABLES=160 + TEMPORARY=161 + TEST=162 + THEN=163 + TIES=164 + TIMEOUT=165 + TIMESTAMP=166 + TO=167 + TOP=168 + TOTALS=169 + TRAILING=170 + TRIM=171 + TRUNCATE=172 + TTL=173 + TYPE=174 + UNBOUNDED=175 + UNION=176 + UPDATE=177 + USE=178 + USING=179 + UUID=180 + VALUES=181 + VIEW=182 + VOLUME=183 + WATCH=184 + WEEK=185 + WHEN=186 + WHERE=187 + WINDOW=188 + WITH=189 + YEAR=190 + JSON_FALSE=191 + JSON_TRUE=192 + ESCAPE_CHAR=193 + IDENTIFIER=194 + FLOATING_LITERAL=195 + OCTAL_LITERAL=196 + DECIMAL_LITERAL=197 + HEXADECIMAL_LITERAL=198 + STRING_LITERAL=199 + PLACEHOLDER=200 + ARROW=201 + ASTERISK=202 + BACKQUOTE=203 + BACKSLASH=204 + COLON=205 + COMMA=206 + CONCAT=207 + DASH=208 + DOLLAR=209 + DOT=210 + EQ_DOUBLE=211 + EQ_SINGLE=212 + GT_EQ=213 + GT=214 + HASH=215 + IREGEX_SINGLE=216 + IREGEX_DOUBLE=217 + LBRACE=218 + LBRACKET=219 + LPAREN=220 + LT_EQ=221 + LT=222 + NOT_EQ=223 + NOT_IREGEX=224 + NOT_REGEX=225 + NULLISH=226 + PERCENT=227 + PLUS=228 + QUERY=229 + QUOTE_DOUBLE=230 + QUOTE_SINGLE=231 + REGEX_SINGLE=232 + REGEX_DOUBLE=233 + RBRACE=234 + RBRACKET=235 + RPAREN=236 + SEMICOLON=237 + SLASH=238 + UNDERSCORE=239 + MULTI_LINE_COMMENT=240 + SINGLE_LINE_COMMENT=241 + WHITESPACE=242 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.13.1") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None + + + class SelectContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -9458,20 +832,25 @@ def EOF(self): return self.getToken(HogQLParser.EOF, 0) def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) + def selectStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectStmtContext, 0) + return self.getTypedRuleContext(HogQLParser.SelectStmtContext,0) + def getRuleIndex(self): return HogQLParser.RULE_select - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitSelect"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSelect" ): return visitor.visitSelect(self) else: return visitor.visitChildren(self) + + + def select(self): localctx = HogQLParser.SelectContext(self, self._ctx, self.state) @@ -9480,7 +859,7 @@ def select(self): self.enterOuterAlt(localctx, 1) self.state = 120 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 0, self._ctx) + la_ = self._interp.adaptivePredict(self._input,0,self._ctx) if la_ == 1: self.state = 118 self.selectUnionStmt() @@ -9491,6 +870,7 @@ def select(self): self.selectStmt() pass + self.state = 122 self.match(HogQLParser.EOF) except RecognitionException as re: @@ -9501,26 +881,28 @@ def select(self): self.exitRule() return localctx + class SelectUnionStmtContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def selectStmtWithParens(self, i: int = None): + def selectStmtWithParens(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.SelectStmtWithParensContext) else: - return self.getTypedRuleContext(HogQLParser.SelectStmtWithParensContext, i) + return self.getTypedRuleContext(HogQLParser.SelectStmtWithParensContext,i) - def UNION(self, i: int = None): + + def UNION(self, i:int=None): if i is None: return self.getTokens(HogQLParser.UNION) else: return self.getToken(HogQLParser.UNION, i) - def ALL(self, i: int = None): + def ALL(self, i:int=None): if i is None: return self.getTokens(HogQLParser.ALL) else: @@ -9529,17 +911,20 @@ def ALL(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_selectUnionStmt - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitSelectUnionStmt"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSelectUnionStmt" ): return visitor.visitSelectUnionStmt(self) else: return visitor.visitChildren(self) + + + def selectUnionStmt(self): localctx = HogQLParser.SelectUnionStmtContext(self, self._ctx, self.state) self.enterRule(localctx, 2, self.RULE_selectUnionStmt) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 124 @@ -9547,7 +932,7 @@ def selectUnionStmt(self): self.state = 130 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 176: + while _la==176: self.state = 125 self.match(HogQLParser.UNION) self.state = 126 @@ -9566,21 +951,24 @@ def selectUnionStmt(self): self.exitRule() return localctx + class SelectStmtWithParensContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def selectStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectStmtContext, 0) + return self.getTypedRuleContext(HogQLParser.SelectStmtContext,0) + def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) + def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) @@ -9588,12 +976,15 @@ def RPAREN(self): def getRuleIndex(self): return HogQLParser.RULE_selectStmtWithParens - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitSelectStmtWithParens"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSelectStmtWithParens" ): return visitor.visitSelectStmtWithParens(self) else: return visitor.visitChildren(self) + + + def selectStmtWithParens(self): localctx = HogQLParser.SelectStmtWithParensContext(self, self._ctx, self.state) @@ -9627,39 +1018,45 @@ def selectStmtWithParens(self): self.exitRule() return localctx + class SelectStmtContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - self.with_ = None # WithClauseContext - self.columns = None # ColumnExprListContext - self.from_ = None # FromClauseContext - self.where = None # WhereClauseContext + self.with_ = None # WithClauseContext + self.columns = None # ColumnExprListContext + self.from_ = None # FromClauseContext + self.where = None # WhereClauseContext def SELECT(self): return self.getToken(HogQLParser.SELECT, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def DISTINCT(self): return self.getToken(HogQLParser.DISTINCT, 0) def topClause(self): - return self.getTypedRuleContext(HogQLParser.TopClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.TopClauseContext,0) + def arrayJoinClause(self): - return self.getTypedRuleContext(HogQLParser.ArrayJoinClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.ArrayJoinClauseContext,0) + def prewhereClause(self): - return self.getTypedRuleContext(HogQLParser.PrewhereClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.PrewhereClauseContext,0) + def groupByClause(self): - return self.getTypedRuleContext(HogQLParser.GroupByClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.GroupByClauseContext,0) + - def WITH(self, i: int = None): + def WITH(self, i:int=None): if i is None: return self.getTokens(HogQLParser.WITH) else: @@ -9669,31 +1066,40 @@ def TOTALS(self): return self.getToken(HogQLParser.TOTALS, 0) def havingClause(self): - return self.getTypedRuleContext(HogQLParser.HavingClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.HavingClauseContext,0) + def windowClause(self): - return self.getTypedRuleContext(HogQLParser.WindowClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.WindowClauseContext,0) + def orderByClause(self): - return self.getTypedRuleContext(HogQLParser.OrderByClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.OrderByClauseContext,0) + def limitAndOffsetClause(self): - return self.getTypedRuleContext(HogQLParser.LimitAndOffsetClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.LimitAndOffsetClauseContext,0) + def offsetOnlyClause(self): - return self.getTypedRuleContext(HogQLParser.OffsetOnlyClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.OffsetOnlyClauseContext,0) + def settingsClause(self): - return self.getTypedRuleContext(HogQLParser.SettingsClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.SettingsClauseContext,0) + def withClause(self): - return self.getTypedRuleContext(HogQLParser.WithClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.WithClauseContext,0) + def fromClause(self): - return self.getTypedRuleContext(HogQLParser.FromClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.FromClauseContext,0) + def whereClause(self): - return self.getTypedRuleContext(HogQLParser.WhereClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.WhereClauseContext,0) + def CUBE(self): return self.getToken(HogQLParser.CUBE, 0) @@ -9704,123 +1110,139 @@ def ROLLUP(self): def getRuleIndex(self): return HogQLParser.RULE_selectStmt - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitSelectStmt"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSelectStmt" ): return visitor.visitSelectStmt(self) else: return visitor.visitChildren(self) + + + def selectStmt(self): localctx = HogQLParser.SelectStmtContext(self, self._ctx, self.state) self.enterRule(localctx, 6, self.RULE_selectStmt) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 141 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 189: + if _la==189: self.state = 140 localctx.with_ = self.withClause() + self.state = 143 self.match(HogQLParser.SELECT) self.state = 145 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 4, self._ctx) + la_ = self._interp.adaptivePredict(self._input,4,self._ctx) if la_ == 1: self.state = 144 self.match(HogQLParser.DISTINCT) + self.state = 148 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 5, self._ctx) + la_ = self._interp.adaptivePredict(self._input,5,self._ctx) if la_ == 1: self.state = 147 self.topClause() + self.state = 150 localctx.columns = self.columnExprList() self.state = 152 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 68: + if _la==68: self.state = 151 localctx.from_ = self.fromClause() + self.state = 155 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 9 or _la == 84 or _la == 96: + if _la==9 or _la==84 or _la==96: self.state = 154 self.arrayJoinClause() + self.state = 158 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 129: + if _la==129: self.state = 157 self.prewhereClause() + self.state = 161 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 187: + if _la==187: self.state = 160 localctx.where = self.whereClause() + self.state = 164 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 73: + if _la==73: self.state = 163 self.groupByClause() + self.state = 168 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 11, self._ctx) + la_ = self._interp.adaptivePredict(self._input,11,self._ctx) if la_ == 1: self.state = 166 self.match(HogQLParser.WITH) self.state = 167 _la = self._input.LA(1) - if not (_la == 32 or _la == 141): + if not(_la==32 or _la==141): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + self.state = 172 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 189: + if _la==189: self.state = 170 self.match(HogQLParser.WITH) self.state = 171 self.match(HogQLParser.TOTALS) + self.state = 175 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 74: + if _la==74: self.state = 174 self.havingClause() + self.state = 178 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 188: + if _la==188: self.state = 177 self.windowClause() + self.state = 181 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 122: + if _la==122: self.state = 180 self.orderByClause() + self.state = 185 self._errHandler.sync(self) token = self._input.LA(1) @@ -9839,10 +1261,11 @@ def selectStmt(self): self.state = 188 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 150: + if _la==150: self.state = 187 self.settingsClause() + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9851,10 +1274,11 @@ def selectStmt(self): self.exitRule() return localctx + class WithClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -9862,17 +1286,21 @@ def WITH(self): return self.getToken(HogQLParser.WITH, 0) def withExprList(self): - return self.getTypedRuleContext(HogQLParser.WithExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.WithExprListContext,0) + def getRuleIndex(self): return HogQLParser.RULE_withClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWithClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWithClause" ): return visitor.visitWithClause(self) else: return visitor.visitChildren(self) + + + def withClause(self): localctx = HogQLParser.WithClauseContext(self, self._ctx, self.state) @@ -9891,10 +1319,11 @@ def withClause(self): self.exitRule() return localctx + class TopClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -9913,12 +1342,15 @@ def TIES(self): def getRuleIndex(self): return HogQLParser.RULE_topClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitTopClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTopClause" ): return visitor.visitTopClause(self) else: return visitor.visitChildren(self) + + + def topClause(self): localctx = HogQLParser.TopClauseContext(self, self._ctx, self.state) @@ -9931,13 +1363,14 @@ def topClause(self): self.match(HogQLParser.DECIMAL_LITERAL) self.state = 197 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 18, self._ctx) + la_ = self._interp.adaptivePredict(self._input,18,self._ctx) if la_ == 1: self.state = 195 self.match(HogQLParser.WITH) self.state = 196 self.match(HogQLParser.TIES) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9946,10 +1379,11 @@ def topClause(self): self.exitRule() return localctx + class FromClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -9957,17 +1391,21 @@ def FROM(self): return self.getToken(HogQLParser.FROM, 0) def joinExpr(self): - return self.getTypedRuleContext(HogQLParser.JoinExprContext, 0) + return self.getTypedRuleContext(HogQLParser.JoinExprContext,0) + def getRuleIndex(self): return HogQLParser.RULE_fromClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitFromClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFromClause" ): return visitor.visitFromClause(self) else: return visitor.visitChildren(self) + + + def fromClause(self): localctx = HogQLParser.FromClauseContext(self, self._ctx, self.state) @@ -9986,10 +1424,11 @@ def fromClause(self): self.exitRule() return localctx + class ArrayJoinClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -10000,7 +1439,8 @@ def JOIN(self): return self.getToken(HogQLParser.JOIN, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def LEFT(self): return self.getToken(HogQLParser.LEFT, 0) @@ -10011,31 +1451,35 @@ def INNER(self): def getRuleIndex(self): return HogQLParser.RULE_arrayJoinClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitArrayJoinClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitArrayJoinClause" ): return visitor.visitArrayJoinClause(self) else: return visitor.visitChildren(self) + + + def arrayJoinClause(self): localctx = HogQLParser.ArrayJoinClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 14, self.RULE_arrayJoinClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 203 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 84 or _la == 96: + if _la==84 or _la==96: self.state = 202 _la = self._input.LA(1) - if not (_la == 84 or _la == 96): + if not(_la==84 or _la==96): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + self.state = 205 self.match(HogQLParser.ARRAY) self.state = 206 @@ -10050,47 +1494,50 @@ def arrayJoinClause(self): self.exitRule() return localctx + class WindowClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def WINDOW(self): return self.getToken(HogQLParser.WINDOW, 0) - def identifier(self, i: int = None): + def identifier(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) + - def AS(self, i: int = None): + def AS(self, i:int=None): if i is None: return self.getTokens(HogQLParser.AS) else: return self.getToken(HogQLParser.AS, i) - def LPAREN(self, i: int = None): + def LPAREN(self, i:int=None): if i is None: return self.getTokens(HogQLParser.LPAREN) else: return self.getToken(HogQLParser.LPAREN, i) - def windowExpr(self, i: int = None): + def windowExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.WindowExprContext) else: - return self.getTypedRuleContext(HogQLParser.WindowExprContext, i) + return self.getTypedRuleContext(HogQLParser.WindowExprContext,i) + - def RPAREN(self, i: int = None): + def RPAREN(self, i:int=None): if i is None: return self.getTokens(HogQLParser.RPAREN) else: return self.getToken(HogQLParser.RPAREN, i) - def COMMA(self, i: int = None): + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -10099,17 +1546,20 @@ def COMMA(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_windowClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWindowClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWindowClause" ): return visitor.visitWindowClause(self) else: return visitor.visitChildren(self) + + + def windowClause(self): localctx = HogQLParser.WindowClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 16, self.RULE_windowClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 209 @@ -10127,7 +1577,7 @@ def windowClause(self): self.state = 224 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 215 self.match(HogQLParser.COMMA) self.state = 216 @@ -10152,10 +1602,11 @@ def windowClause(self): self.exitRule() return localctx + class PrewhereClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -10163,17 +1614,21 @@ def PREWHERE(self): return self.getToken(HogQLParser.PREWHERE, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def getRuleIndex(self): return HogQLParser.RULE_prewhereClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitPrewhereClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitPrewhereClause" ): return visitor.visitPrewhereClause(self) else: return visitor.visitChildren(self) + + + def prewhereClause(self): localctx = HogQLParser.PrewhereClauseContext(self, self._ctx, self.state) @@ -10192,10 +1647,11 @@ def prewhereClause(self): self.exitRule() return localctx + class WhereClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -10203,17 +1659,21 @@ def WHERE(self): return self.getToken(HogQLParser.WHERE, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def getRuleIndex(self): return HogQLParser.RULE_whereClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWhereClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWhereClause" ): return visitor.visitWhereClause(self) else: return visitor.visitChildren(self) + + + def whereClause(self): localctx = HogQLParser.WhereClauseContext(self, self._ctx, self.state) @@ -10232,10 +1692,11 @@ def whereClause(self): self.exitRule() return localctx + class GroupByClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -10249,7 +1710,8 @@ def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) @@ -10263,17 +1725,20 @@ def ROLLUP(self): def getRuleIndex(self): return HogQLParser.RULE_groupByClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitGroupByClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitGroupByClause" ): return visitor.visitGroupByClause(self) else: return visitor.visitChildren(self) + + + def groupByClause(self): localctx = HogQLParser.GroupByClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 22, self.RULE_groupByClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 233 @@ -10282,11 +1747,11 @@ def groupByClause(self): self.match(HogQLParser.BY) self.state = 241 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 21, self._ctx) + la_ = self._interp.adaptivePredict(self._input,21,self._ctx) if la_ == 1: self.state = 235 _la = self._input.LA(1) - if not (_la == 32 or _la == 141): + if not(_la==32 or _la==141): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -10304,6 +1769,7 @@ def groupByClause(self): self.columnExprList() pass + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10312,10 +1778,11 @@ def groupByClause(self): self.exitRule() return localctx + class HavingClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -10323,17 +1790,21 @@ def HAVING(self): return self.getToken(HogQLParser.HAVING, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def getRuleIndex(self): return HogQLParser.RULE_havingClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitHavingClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitHavingClause" ): return visitor.visitHavingClause(self) else: return visitor.visitChildren(self) + + + def havingClause(self): localctx = HogQLParser.HavingClauseContext(self, self._ctx, self.state) @@ -10352,10 +1823,11 @@ def havingClause(self): self.exitRule() return localctx + class OrderByClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -10366,17 +1838,21 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def orderExprList(self): - return self.getTypedRuleContext(HogQLParser.OrderExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.OrderExprListContext,0) + def getRuleIndex(self): return HogQLParser.RULE_orderByClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitOrderByClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitOrderByClause" ): return visitor.visitOrderByClause(self) else: return visitor.visitChildren(self) + + + def orderByClause(self): localctx = HogQLParser.OrderByClauseContext(self, self._ctx, self.state) @@ -10397,10 +1873,11 @@ def orderByClause(self): self.exitRule() return localctx + class ProjectionOrderByClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -10411,17 +1888,21 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def getRuleIndex(self): return HogQLParser.RULE_projectionOrderByClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitProjectionOrderByClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitProjectionOrderByClause" ): return visitor.visitProjectionOrderByClause(self) else: return visitor.visitChildren(self) + + + def projectionOrderByClause(self): localctx = HogQLParser.ProjectionOrderByClauseContext(self, self._ctx, self.state) @@ -10442,21 +1923,23 @@ def projectionOrderByClause(self): self.exitRule() return localctx + class LimitAndOffsetClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def LIMIT(self): return self.getToken(HogQLParser.LIMIT, 0) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + def COMMA(self): return self.getToken(HogQLParser.COMMA, 0) @@ -10465,7 +1948,8 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def WITH(self): return self.getToken(HogQLParser.WITH, 0) @@ -10479,21 +1963,24 @@ def OFFSET(self): def getRuleIndex(self): return HogQLParser.RULE_limitAndOffsetClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitLimitAndOffsetClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLimitAndOffsetClause" ): return visitor.visitLimitAndOffsetClause(self) else: return visitor.visitChildren(self) + + + def limitAndOffsetClause(self): localctx = HogQLParser.LimitAndOffsetClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_limitAndOffsetClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.state = 283 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 26, self._ctx) + la_ = self._interp.adaptivePredict(self._input,26,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) self.state = 254 @@ -10503,12 +1990,13 @@ def limitAndOffsetClause(self): self.state = 258 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 206: + if _la==206: self.state = 256 self.match(HogQLParser.COMMA) self.state = 257 self.columnExpr(0) + self.state = 264 self._errHandler.sync(self) token = self._input.LA(1) @@ -10539,12 +2027,13 @@ def limitAndOffsetClause(self): self.state = 270 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 189: + if _la==189: self.state = 268 self.match(HogQLParser.WITH) self.state = 269 self.match(HogQLParser.TIES) + self.state = 272 self.match(HogQLParser.OFFSET) self.state = 273 @@ -10564,14 +2053,16 @@ def limitAndOffsetClause(self): self.state = 281 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 18: + if _la==18: self.state = 279 self.match(HogQLParser.BY) self.state = 280 self.columnExprList() + pass + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10580,10 +2071,11 @@ def limitAndOffsetClause(self): self.exitRule() return localctx + class OffsetOnlyClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -10591,17 +2083,21 @@ def OFFSET(self): return self.getToken(HogQLParser.OFFSET, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def getRuleIndex(self): return HogQLParser.RULE_offsetOnlyClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitOffsetOnlyClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitOffsetOnlyClause" ): return visitor.visitOffsetOnlyClause(self) else: return visitor.visitChildren(self) + + + def offsetOnlyClause(self): localctx = HogQLParser.OffsetOnlyClauseContext(self, self._ctx, self.state) @@ -10620,10 +2116,11 @@ def offsetOnlyClause(self): self.exitRule() return localctx + class SettingsClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -10631,17 +2128,21 @@ def SETTINGS(self): return self.getToken(HogQLParser.SETTINGS, 0) def settingExprList(self): - return self.getTypedRuleContext(HogQLParser.SettingExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.SettingExprListContext,0) + def getRuleIndex(self): return HogQLParser.RULE_settingsClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitSettingsClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSettingsClause" ): return visitor.visitSettingsClause(self) else: return visitor.visitChildren(self) + + + def settingsClause(self): localctx = HogQLParser.SettingsClauseContext(self, self._ctx, self.state) @@ -10660,118 +2161,131 @@ def settingsClause(self): self.exitRule() return localctx + class JoinExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def getRuleIndex(self): return HogQLParser.RULE_joinExpr - def copyFrom(self, ctx: ParserRuleContext): + + def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) + class JoinExprOpContext(JoinExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinExprContext super().__init__(parser) self.copyFrom(ctx) - def joinExpr(self, i: int = None): + def joinExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.JoinExprContext) else: - return self.getTypedRuleContext(HogQLParser.JoinExprContext, i) + return self.getTypedRuleContext(HogQLParser.JoinExprContext,i) def JOIN(self): return self.getToken(HogQLParser.JOIN, 0) - def joinConstraintClause(self): - return self.getTypedRuleContext(HogQLParser.JoinConstraintClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.JoinConstraintClauseContext,0) def joinOp(self): - return self.getTypedRuleContext(HogQLParser.JoinOpContext, 0) + return self.getTypedRuleContext(HogQLParser.JoinOpContext,0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitJoinExprOp"): + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitJoinExprOp" ): return visitor.visitJoinExprOp(self) else: return visitor.visitChildren(self) + class JoinExprTableContext(JoinExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinExprContext super().__init__(parser) self.copyFrom(ctx) def tableExpr(self): - return self.getTypedRuleContext(HogQLParser.TableExprContext, 0) + return self.getTypedRuleContext(HogQLParser.TableExprContext,0) def FINAL(self): return self.getToken(HogQLParser.FINAL, 0) - def sampleClause(self): - return self.getTypedRuleContext(HogQLParser.SampleClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.SampleClauseContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitJoinExprTable"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitJoinExprTable" ): return visitor.visitJoinExprTable(self) else: return visitor.visitChildren(self) + class JoinExprParensContext(JoinExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def joinExpr(self): - return self.getTypedRuleContext(HogQLParser.JoinExprContext, 0) + return self.getTypedRuleContext(HogQLParser.JoinExprContext,0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitJoinExprParens"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitJoinExprParens" ): return visitor.visitJoinExprParens(self) else: return visitor.visitChildren(self) + class JoinExprCrossOpContext(JoinExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinExprContext super().__init__(parser) self.copyFrom(ctx) - def joinExpr(self, i: int = None): + def joinExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.JoinExprContext) else: - return self.getTypedRuleContext(HogQLParser.JoinExprContext, i) + return self.getTypedRuleContext(HogQLParser.JoinExprContext,i) def joinOpCross(self): - return self.getTypedRuleContext(HogQLParser.JoinOpCrossContext, 0) + return self.getTypedRuleContext(HogQLParser.JoinOpCrossContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitJoinExprCrossOp"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitJoinExprCrossOp" ): return visitor.visitJoinExprCrossOp(self) else: return visitor.visitChildren(self) - def joinExpr(self, _p: int = 0): + + + def joinExpr(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = HogQLParser.JoinExprContext(self, self._ctx, _parentState) _prevctx = localctx _startState = 36 self.enterRecursionRule(localctx, 36, self.RULE_joinExpr, _p) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 303 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 29, self._ctx) + la_ = self._interp.adaptivePredict(self._input,29,self._ctx) if la_ == 1: localctx = HogQLParser.JoinExprTableContext(self, localctx) self._ctx = localctx @@ -10781,18 +2295,20 @@ def joinExpr(self, _p: int = 0): self.tableExpr(0) self.state = 294 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 27, self._ctx) + la_ = self._interp.adaptivePredict(self._input,27,self._ctx) if la_ == 1: self.state = 293 self.match(HogQLParser.FINAL) + self.state = 297 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 28, self._ctx) + la_ = self._interp.adaptivePredict(self._input,28,self._ctx) if la_ == 1: self.state = 296 self.sampleClause() + pass elif la_ == 2: @@ -10807,27 +2323,25 @@ def joinExpr(self, _p: int = 0): self.match(HogQLParser.RPAREN) pass + self._ctx.stop = self._input.LT(-1) self.state = 319 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 32, self._ctx) - while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: - if _alt == 1: + _alt = self._interp.adaptivePredict(self._input,32,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 317 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 31, self._ctx) + la_ = self._interp.adaptivePredict(self._input,31,self._ctx) if la_ == 1: - localctx = HogQLParser.JoinExprCrossOpContext( - self, HogQLParser.JoinExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.JoinExprCrossOpContext(self, HogQLParser.JoinExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_joinExpr) self.state = 305 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") self.state = 306 self.joinOpCross() @@ -10836,27 +2350,20 @@ def joinExpr(self, _p: int = 0): pass elif la_ == 2: - localctx = HogQLParser.JoinExprOpContext( - self, HogQLParser.JoinExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.JoinExprOpContext(self, HogQLParser.JoinExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_joinExpr) self.state = 309 if not self.precpred(self._ctx, 4): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") self.state = 311 self._errHandler.sync(self) _la = self._input.LA(1) - if ( - (((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) - or ((((_la - 69)) & ~0x3F) == 0 and ((1 << (_la - 69)) & 134250497) != 0) - or _la == 140 - or _la == 147 - ): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 134250497) != 0) or _la==140 or _la==147: self.state = 310 self.joinOp() + self.state = 313 self.match(HogQLParser.JOIN) self.state = 314 @@ -10865,9 +2372,10 @@ def joinExpr(self, _p: int = 0): self.joinConstraintClause() pass + self.state = 321 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 32, self._ctx) + _alt = self._interp.adaptivePredict(self._input,32,self._ctx) except RecognitionException as re: localctx.exception = re @@ -10877,128 +2385,128 @@ def joinExpr(self, _p: int = 0): self.unrollRecursionContexts(_parentctx) return localctx + class JoinOpContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def getRuleIndex(self): return HogQLParser.RULE_joinOp - def copyFrom(self, ctx: ParserRuleContext): + + def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) + + class JoinOpFullContext(JoinOpContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinOpContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinOpContext super().__init__(parser) self.copyFrom(ctx) def FULL(self): return self.getToken(HogQLParser.FULL, 0) - def OUTER(self): return self.getToken(HogQLParser.OUTER, 0) - def ALL(self): return self.getToken(HogQLParser.ALL, 0) - def ANY(self): return self.getToken(HogQLParser.ANY, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitJoinOpFull"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitJoinOpFull" ): return visitor.visitJoinOpFull(self) else: return visitor.visitChildren(self) + class JoinOpInnerContext(JoinOpContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinOpContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinOpContext super().__init__(parser) self.copyFrom(ctx) def INNER(self): return self.getToken(HogQLParser.INNER, 0) - def ALL(self): return self.getToken(HogQLParser.ALL, 0) - def ANY(self): return self.getToken(HogQLParser.ANY, 0) - def ASOF(self): return self.getToken(HogQLParser.ASOF, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitJoinOpInner"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitJoinOpInner" ): return visitor.visitJoinOpInner(self) else: return visitor.visitChildren(self) + class JoinOpLeftRightContext(JoinOpContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.JoinOpContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.JoinOpContext super().__init__(parser) self.copyFrom(ctx) def LEFT(self): return self.getToken(HogQLParser.LEFT, 0) - def RIGHT(self): return self.getToken(HogQLParser.RIGHT, 0) - def OUTER(self): return self.getToken(HogQLParser.OUTER, 0) - def SEMI(self): return self.getToken(HogQLParser.SEMI, 0) - def ALL(self): return self.getToken(HogQLParser.ALL, 0) - def ANTI(self): return self.getToken(HogQLParser.ANTI, 0) - def ANY(self): return self.getToken(HogQLParser.ANY, 0) - def ASOF(self): return self.getToken(HogQLParser.ASOF, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitJoinOpLeftRight"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitJoinOpLeftRight" ): return visitor.visitJoinOpLeftRight(self) else: return visitor.visitChildren(self) + + def joinOp(self): localctx = HogQLParser.JoinOpContext(self, self._ctx, self.state) self.enterRule(localctx, 38, self.RULE_joinOp) - self._la = 0 # Token type + self._la = 0 # Token type try: self.state = 365 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 46, self._ctx) + la_ = self._interp.adaptivePredict(self._input,46,self._ctx) if la_ == 1: localctx = HogQLParser.JoinOpInnerContext(self, localctx) self.enterOuterAlt(localctx, 1) self.state = 331 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 35, self._ctx) + la_ = self._interp.adaptivePredict(self._input,35,self._ctx) if la_ == 1: self.state = 323 self._errHandler.sync(self) _la = self._input.LA(1) - if ((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0: + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0): self.state = 322 _la = self._input.LA(1) - if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + self.state = 325 self.match(HogQLParser.INNER) pass @@ -11009,27 +2517,29 @@ def joinOp(self): self.state = 328 self._errHandler.sync(self) _la = self._input.LA(1) - if ((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0: + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0): self.state = 327 _la = self._input.LA(1) - if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + pass elif la_ == 3: self.state = 330 _la = self._input.LA(1) - if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4368) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4368) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() pass + pass elif la_ == 2: @@ -11037,23 +2547,24 @@ def joinOp(self): self.enterOuterAlt(localctx, 2) self.state = 347 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 40, self._ctx) + la_ = self._interp.adaptivePredict(self._input,40,self._ctx) if la_ == 1: self.state = 334 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) or _la == 147: + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or _la==147: self.state = 333 _la = self._input.LA(1) - if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) or _la == 147): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or _la==147): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + self.state = 336 _la = self._input.LA(1) - if not (_la == 96 or _la == 140): + if not(_la==96 or _la==140): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -11061,16 +2572,17 @@ def joinOp(self): self.state = 338 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 123: + if _la==123: self.state = 337 self.match(HogQLParser.OUTER) + pass elif la_ == 2: self.state = 340 _la = self._input.LA(1) - if not (_la == 96 or _la == 140): + if not(_la==96 or _la==140): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -11078,24 +2590,27 @@ def joinOp(self): self.state = 342 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 123: + if _la==123: self.state = 341 self.match(HogQLParser.OUTER) + self.state = 345 self._errHandler.sync(self) _la = self._input.LA(1) - if (((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) or _la == 147: + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or _la==147: self.state = 344 _la = self._input.LA(1) - if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 4496) != 0) or _la == 147): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 4496) != 0) or _la==147): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + pass + pass elif la_ == 3: @@ -11103,29 +2618,31 @@ def joinOp(self): self.enterOuterAlt(localctx, 3) self.state = 363 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 45, self._ctx) + la_ = self._interp.adaptivePredict(self._input,45,self._ctx) if la_ == 1: self.state = 350 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 4 or _la == 8: + if _la==4 or _la==8: self.state = 349 _la = self._input.LA(1) - if not (_la == 4 or _la == 8): + if not(_la==4 or _la==8): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + self.state = 352 self.match(HogQLParser.FULL) self.state = 354 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 123: + if _la==123: self.state = 353 self.match(HogQLParser.OUTER) + pass elif la_ == 2: @@ -11134,26 +2651,30 @@ def joinOp(self): self.state = 358 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 123: + if _la==123: self.state = 357 self.match(HogQLParser.OUTER) + self.state = 361 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 4 or _la == 8: + if _la==4 or _la==8: self.state = 360 _la = self._input.LA(1) - if not (_la == 4 or _la == 8): + if not(_la==4 or _la==8): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + pass + pass + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11162,10 +2683,11 @@ def joinOp(self): self.exitRule() return localctx + class JoinOpCrossContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -11181,12 +2703,15 @@ def COMMA(self): def getRuleIndex(self): return HogQLParser.RULE_joinOpCross - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitJoinOpCross"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitJoinOpCross" ): return visitor.visitJoinOpCross(self) else: return visitor.visitChildren(self) + + + def joinOpCross(self): localctx = HogQLParser.JoinOpCrossContext(self, self._ctx, self.state) @@ -11218,10 +2743,11 @@ def joinOpCross(self): self.exitRule() return localctx + class JoinConstraintClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -11229,7 +2755,8 @@ def ON(self): return self.getToken(HogQLParser.ON, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def USING(self): return self.getToken(HogQLParser.USING, 0) @@ -11243,12 +2770,15 @@ def RPAREN(self): def getRuleIndex(self): return HogQLParser.RULE_joinConstraintClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitJoinConstraintClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitJoinConstraintClause" ): return visitor.visitJoinConstraintClause(self) else: return visitor.visitChildren(self) + + + def joinConstraintClause(self): localctx = HogQLParser.JoinConstraintClauseContext(self, self._ctx, self.state) @@ -11256,7 +2786,7 @@ def joinConstraintClause(self): try: self.state = 381 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 48, self._ctx) + la_ = self._interp.adaptivePredict(self._input,48,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) self.state = 372 @@ -11285,6 +2815,7 @@ def joinConstraintClause(self): self.columnExprList() pass + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11293,21 +2824,23 @@ def joinConstraintClause(self): self.exitRule() return localctx + class SampleClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def SAMPLE(self): return self.getToken(HogQLParser.SAMPLE, 0) - def ratioExpr(self, i: int = None): + def ratioExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.RatioExprContext) else: - return self.getTypedRuleContext(HogQLParser.RatioExprContext, i) + return self.getTypedRuleContext(HogQLParser.RatioExprContext,i) + def OFFSET(self): return self.getToken(HogQLParser.OFFSET, 0) @@ -11315,12 +2848,15 @@ def OFFSET(self): def getRuleIndex(self): return HogQLParser.RULE_sampleClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitSampleClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSampleClause" ): return visitor.visitSampleClause(self) else: return visitor.visitChildren(self) + + + def sampleClause(self): localctx = HogQLParser.SampleClauseContext(self, self._ctx, self.state) @@ -11333,13 +2869,14 @@ def sampleClause(self): self.ratioExpr() self.state = 387 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 49, self._ctx) + la_ = self._interp.adaptivePredict(self._input,49,self._ctx) if la_ == 1: self.state = 385 self.match(HogQLParser.OFFSET) self.state = 386 self.ratioExpr() + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11348,20 +2885,22 @@ def sampleClause(self): self.exitRule() return localctx + class OrderExprListContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def orderExpr(self, i: int = None): + def orderExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.OrderExprContext) else: - return self.getTypedRuleContext(HogQLParser.OrderExprContext, i) + return self.getTypedRuleContext(HogQLParser.OrderExprContext,i) + - def COMMA(self, i: int = None): + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -11370,17 +2909,20 @@ def COMMA(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_orderExprList - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitOrderExprList"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitOrderExprList" ): return visitor.visitOrderExprList(self) else: return visitor.visitChildren(self) + + + def orderExprList(self): localctx = HogQLParser.OrderExprListContext(self, self._ctx, self.state) self.enterRule(localctx, 46, self.RULE_orderExprList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 389 @@ -11388,7 +2930,7 @@ def orderExprList(self): self.state = 394 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 390 self.match(HogQLParser.COMMA) self.state = 391 @@ -11405,15 +2947,17 @@ def orderExprList(self): self.exitRule() return localctx + class OrderExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def NULLS(self): return self.getToken(HogQLParser.NULLS, 0) @@ -11442,17 +2986,20 @@ def LAST(self): def getRuleIndex(self): return HogQLParser.RULE_orderExpr - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitOrderExpr"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitOrderExpr" ): return visitor.visitOrderExpr(self) else: return visitor.visitChildren(self) + + + def orderExpr(self): localctx = HogQLParser.OrderExprContext(self, self._ctx, self.state) self.enterRule(localctx, 48, self.RULE_orderExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 397 @@ -11460,38 +3007,41 @@ def orderExpr(self): self.state = 399 self._errHandler.sync(self) _la = self._input.LA(1) - if ((_la) & ~0x3F) == 0 and ((1 << _la) & 13194139535360) != 0: + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 13194139535360) != 0): self.state = 398 _la = self._input.LA(1) - if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 13194139535360) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 13194139535360) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + self.state = 403 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 117: + if _la==117: self.state = 401 self.match(HogQLParser.NULLS) self.state = 402 _la = self._input.LA(1) - if not (_la == 62 or _la == 93): + if not(_la==62 or _la==93): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + self.state = 407 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 26: + if _la==26: self.state = 405 self.match(HogQLParser.COLLATE) self.state = 406 self.match(HogQLParser.STRING_LITERAL) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11500,21 +3050,23 @@ def orderExpr(self): self.exitRule() return localctx + class RatioExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def PLACEHOLDER(self): return self.getToken(HogQLParser.PLACEHOLDER, 0) - def numberLiteral(self, i: int = None): + def numberLiteral(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.NumberLiteralContext) else: - return self.getTypedRuleContext(HogQLParser.NumberLiteralContext, i) + return self.getTypedRuleContext(HogQLParser.NumberLiteralContext,i) + def SLASH(self): return self.getToken(HogQLParser.SLASH, 0) @@ -11522,12 +3074,15 @@ def SLASH(self): def getRuleIndex(self): return HogQLParser.RULE_ratioExpr - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitRatioExpr"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitRatioExpr" ): return visitor.visitRatioExpr(self) else: return visitor.visitChildren(self) + + + def ratioExpr(self): localctx = HogQLParser.RatioExprContext(self, self._ctx, self.state) @@ -11547,13 +3102,14 @@ def ratioExpr(self): self.numberLiteral() self.state = 413 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 54, self._ctx) + la_ = self._interp.adaptivePredict(self._input,54,self._ctx) if la_ == 1: self.state = 411 self.match(HogQLParser.SLASH) self.state = 412 self.numberLiteral() + pass else: raise NoViableAltException(self) @@ -11566,20 +3122,22 @@ def ratioExpr(self): self.exitRule() return localctx + class SettingExprListContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def settingExpr(self, i: int = None): + def settingExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.SettingExprContext) else: - return self.getTypedRuleContext(HogQLParser.SettingExprContext, i) + return self.getTypedRuleContext(HogQLParser.SettingExprContext,i) + - def COMMA(self, i: int = None): + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -11588,17 +3146,20 @@ def COMMA(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_settingExprList - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitSettingExprList"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSettingExprList" ): return visitor.visitSettingExprList(self) else: return visitor.visitChildren(self) + + + def settingExprList(self): localctx = HogQLParser.SettingExprListContext(self, self._ctx, self.state) self.enterRule(localctx, 52, self.RULE_settingExprList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 417 @@ -11606,7 +3167,7 @@ def settingExprList(self): self.state = 422 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 418 self.match(HogQLParser.COMMA) self.state = 419 @@ -11623,31 +3184,37 @@ def settingExprList(self): self.exitRule() return localctx + class SettingExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + def EQ_SINGLE(self): return self.getToken(HogQLParser.EQ_SINGLE, 0) def literal(self): - return self.getTypedRuleContext(HogQLParser.LiteralContext, 0) + return self.getTypedRuleContext(HogQLParser.LiteralContext,0) + def getRuleIndex(self): return HogQLParser.RULE_settingExpr - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitSettingExpr"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitSettingExpr" ): return visitor.visitSettingExpr(self) else: return visitor.visitChildren(self) + + + def settingExpr(self): localctx = HogQLParser.SettingExprContext(self, self._ctx, self.state) @@ -11668,59 +3235,69 @@ def settingExpr(self): self.exitRule() return localctx + class WindowExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def winPartitionByClause(self): - return self.getTypedRuleContext(HogQLParser.WinPartitionByClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.WinPartitionByClauseContext,0) + def winOrderByClause(self): - return self.getTypedRuleContext(HogQLParser.WinOrderByClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.WinOrderByClauseContext,0) + def winFrameClause(self): - return self.getTypedRuleContext(HogQLParser.WinFrameClauseContext, 0) + return self.getTypedRuleContext(HogQLParser.WinFrameClauseContext,0) + def getRuleIndex(self): return HogQLParser.RULE_windowExpr - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWindowExpr"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWindowExpr" ): return visitor.visitWindowExpr(self) else: return visitor.visitChildren(self) + + + def windowExpr(self): localctx = HogQLParser.WindowExprContext(self, self._ctx, self.state) self.enterRule(localctx, 56, self.RULE_windowExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 430 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 126: + if _la==126: self.state = 429 self.winPartitionByClause() + self.state = 433 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 122: + if _la==122: self.state = 432 self.winOrderByClause() + self.state = 436 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 133 or _la == 143: + if _la==133 or _la==143: self.state = 435 self.winFrameClause() + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11729,10 +3306,11 @@ def windowExpr(self): self.exitRule() return localctx + class WinPartitionByClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -11743,17 +3321,21 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + def getRuleIndex(self): return HogQLParser.RULE_winPartitionByClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWinPartitionByClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWinPartitionByClause" ): return visitor.visitWinPartitionByClause(self) else: return visitor.visitChildren(self) + + + def winPartitionByClause(self): localctx = HogQLParser.WinPartitionByClauseContext(self, self._ctx, self.state) @@ -11774,10 +3356,11 @@ def winPartitionByClause(self): self.exitRule() return localctx + class WinOrderByClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -11788,17 +3371,21 @@ def BY(self): return self.getToken(HogQLParser.BY, 0) def orderExprList(self): - return self.getTypedRuleContext(HogQLParser.OrderExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.OrderExprListContext,0) + def getRuleIndex(self): return HogQLParser.RULE_winOrderByClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWinOrderByClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWinOrderByClause" ): return visitor.visitWinOrderByClause(self) else: return visitor.visitChildren(self) + + + def winOrderByClause(self): localctx = HogQLParser.WinOrderByClauseContext(self, self._ctx, self.state) @@ -11819,15 +3406,17 @@ def winOrderByClause(self): self.exitRule() return localctx + class WinFrameClauseContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def winFrameExtend(self): - return self.getTypedRuleContext(HogQLParser.WinFrameExtendContext, 0) + return self.getTypedRuleContext(HogQLParser.WinFrameExtendContext,0) + def ROWS(self): return self.getToken(HogQLParser.ROWS, 0) @@ -11838,22 +3427,25 @@ def RANGE(self): def getRuleIndex(self): return HogQLParser.RULE_winFrameClause - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWinFrameClause"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWinFrameClause" ): return visitor.visitWinFrameClause(self) else: return visitor.visitChildren(self) + + + def winFrameClause(self): localctx = HogQLParser.WinFrameClauseContext(self, self._ctx, self.state) self.enterRule(localctx, 62, self.RULE_winFrameClause) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 446 _la = self._input.LA(1) - if not (_la == 133 or _la == 143): + if not(_la==133 or _la==143): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -11868,56 +3460,66 @@ def winFrameClause(self): self.exitRule() return localctx + class WinFrameExtendContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def getRuleIndex(self): return HogQLParser.RULE_winFrameExtend - def copyFrom(self, ctx: ParserRuleContext): + + def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) + + class FrameStartContext(WinFrameExtendContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.WinFrameExtendContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.WinFrameExtendContext super().__init__(parser) self.copyFrom(ctx) def winFrameBound(self): - return self.getTypedRuleContext(HogQLParser.WinFrameBoundContext, 0) + return self.getTypedRuleContext(HogQLParser.WinFrameBoundContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitFrameStart"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFrameStart" ): return visitor.visitFrameStart(self) else: return visitor.visitChildren(self) + class FrameBetweenContext(WinFrameExtendContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.WinFrameExtendContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.WinFrameExtendContext super().__init__(parser) self.copyFrom(ctx) def BETWEEN(self): return self.getToken(HogQLParser.BETWEEN, 0) - - def winFrameBound(self, i: int = None): + def winFrameBound(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.WinFrameBoundContext) else: - return self.getTypedRuleContext(HogQLParser.WinFrameBoundContext, i) + return self.getTypedRuleContext(HogQLParser.WinFrameBoundContext,i) def AND(self): return self.getToken(HogQLParser.AND, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitFrameBetween"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFrameBetween" ): return visitor.visitFrameBetween(self) else: return visitor.visitChildren(self) + + def winFrameExtend(self): localctx = HogQLParser.WinFrameExtendContext(self, self._ctx, self.state) @@ -11955,10 +3557,11 @@ def winFrameExtend(self): self.exitRule() return localctx + class WinFrameBoundContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -11978,17 +3581,21 @@ def FOLLOWING(self): return self.getToken(HogQLParser.FOLLOWING, 0) def numberLiteral(self): - return self.getTypedRuleContext(HogQLParser.NumberLiteralContext, 0) + return self.getTypedRuleContext(HogQLParser.NumberLiteralContext,0) + def getRuleIndex(self): return HogQLParser.RULE_winFrameBound - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWinFrameBound"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWinFrameBound" ): return visitor.visitWinFrameBound(self) else: return visitor.visitChildren(self) + + + def winFrameBound(self): localctx = HogQLParser.WinFrameBoundContext(self, self._ctx, self.state) @@ -11997,7 +3604,7 @@ def winFrameBound(self): self.enterOuterAlt(localctx, 1) self.state = 469 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 61, self._ctx) + la_ = self._interp.adaptivePredict(self._input,61,self._ctx) if la_ == 1: self.state = 457 self.match(HogQLParser.CURRENT) @@ -12033,6 +3640,7 @@ def winFrameBound(self): self.match(HogQLParser.FOLLOWING) pass + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -12041,15 +3649,17 @@ def winFrameBound(self): self.exitRule() return localctx + class ExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def EOF(self): return self.getToken(HogQLParser.EOF, 0) @@ -12057,12 +3667,15 @@ def EOF(self): def getRuleIndex(self): return HogQLParser.RULE_expr - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitExpr"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitExpr" ): return visitor.visitExpr(self) else: return visitor.visitChildren(self) + + + def expr(self): localctx = HogQLParser.ExprContext(self, self._ctx, self.state) @@ -12081,164 +3694,174 @@ def expr(self): self.exitRule() return localctx + class ColumnTypeExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def getRuleIndex(self): return HogQLParser.RULE_columnTypeExpr - def copyFrom(self, ctx: ParserRuleContext): + + def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) + + class ColumnTypeExprNestedContext(ColumnTypeExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) - def identifier(self, i: int = None): + def identifier(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - - def columnTypeExpr(self, i: int = None): + def columnTypeExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnTypeExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext,i) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - - def COMMA(self, i: int = None): + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: return self.getToken(HogQLParser.COMMA, i) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnTypeExprNested"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnTypeExprNested" ): return visitor.visitColumnTypeExprNested(self) else: return visitor.visitChildren(self) + class ColumnTypeExprParamContext(ColumnTypeExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnTypeExprParam"): + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnTypeExprParam" ): return visitor.visitColumnTypeExprParam(self) else: return visitor.visitChildren(self) + class ColumnTypeExprSimpleContext(ColumnTypeExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnTypeExprSimple"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnTypeExprSimple" ): return visitor.visitColumnTypeExprSimple(self) else: return visitor.visitChildren(self) + class ColumnTypeExprComplexContext(ColumnTypeExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - - def columnTypeExpr(self, i: int = None): + def columnTypeExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnTypeExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext,i) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - - def COMMA(self, i: int = None): + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: return self.getToken(HogQLParser.COMMA, i) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnTypeExprComplex"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnTypeExprComplex" ): return visitor.visitColumnTypeExprComplex(self) else: return visitor.visitChildren(self) + class ColumnTypeExprEnumContext(ColumnTypeExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnTypeExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - - def enumValue(self, i: int = None): + def enumValue(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.EnumValueContext) else: - return self.getTypedRuleContext(HogQLParser.EnumValueContext, i) + return self.getTypedRuleContext(HogQLParser.EnumValueContext,i) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - - def COMMA(self, i: int = None): + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: return self.getToken(HogQLParser.COMMA, i) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnTypeExprEnum"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnTypeExprEnum" ): return visitor.visitColumnTypeExprEnum(self) else: return visitor.visitChildren(self) + + def columnTypeExpr(self): localctx = HogQLParser.ColumnTypeExprContext(self, self._ctx, self.state) self.enterRule(localctx, 70, self.RULE_columnTypeExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.state = 521 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 66, self._ctx) + la_ = self._interp.adaptivePredict(self._input,66,self._ctx) if la_ == 1: localctx = HogQLParser.ColumnTypeExprSimpleContext(self, localctx) self.enterOuterAlt(localctx, 1) @@ -12260,7 +3883,7 @@ def columnTypeExpr(self): self.state = 485 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 479 self.match(HogQLParser.COMMA) self.state = 480 @@ -12287,7 +3910,7 @@ def columnTypeExpr(self): self.state = 497 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 493 self.match(HogQLParser.COMMA) self.state = 494 @@ -12312,7 +3935,7 @@ def columnTypeExpr(self): self.state = 509 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 505 self.match(HogQLParser.COMMA) self.state = 506 @@ -12335,19 +3958,16 @@ def columnTypeExpr(self): self.state = 517 self._errHandler.sync(self) _la = self._input.LA(1) - if ( - (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) - or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) - or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) - or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) - ): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): self.state = 516 self.columnExprList() + self.state = 519 self.match(HogQLParser.RPAREN) pass + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -12356,20 +3976,22 @@ def columnTypeExpr(self): self.exitRule() return localctx + class ColumnExprListContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) - def COMMA(self, i: int = None): + + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -12378,12 +4000,15 @@ def COMMA(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_columnExprList - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprList"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprList" ): return visitor.visitColumnExprList(self) else: return visitor.visitChildren(self) + + + def columnExprList(self): localctx = HogQLParser.ColumnExprListContext(self, self._ctx, self.state) @@ -12394,16 +4019,16 @@ def columnExprList(self): self.columnExpr(0) self.state = 528 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 67, self._ctx) - while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: - if _alt == 1: + _alt = self._interp.adaptivePredict(self._input,67,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: self.state = 524 self.match(HogQLParser.COMMA) self.state = 525 - self.columnExpr(0) + self.columnExpr(0) self.state = 530 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 67, self._ctx) + _alt = self._interp.adaptivePredict(self._input,67,self._ctx) except RecognitionException as re: localctx.exception = re @@ -12413,870 +4038,880 @@ def columnExprList(self): self.exitRule() return localctx + class ColumnExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def getRuleIndex(self): return HogQLParser.RULE_columnExpr - def copyFrom(self, ctx: ParserRuleContext): + + def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) + class ColumnExprTernaryOpContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def QUERY(self): return self.getToken(HogQLParser.QUERY, 0) - def COLON(self): return self.getToken(HogQLParser.COLON, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprTernaryOp"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprTernaryOp" ): return visitor.visitColumnExprTernaryOp(self) else: return visitor.visitChildren(self) + class ColumnExprAliasContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def alias(self): - return self.getTypedRuleContext(HogQLParser.AliasContext, 0) + return self.getTypedRuleContext(HogQLParser.AliasContext,0) def AS(self): return self.getToken(HogQLParser.AS, 0) - def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprAlias"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprAlias" ): return visitor.visitColumnExprAlias(self) else: return visitor.visitChildren(self) + class ColumnExprExtractContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def EXTRACT(self): return self.getToken(HogQLParser.EXTRACT, 0) - def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def interval(self): - return self.getTypedRuleContext(HogQLParser.IntervalContext, 0) + return self.getTypedRuleContext(HogQLParser.IntervalContext,0) def FROM(self): return self.getToken(HogQLParser.FROM, 0) - def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprExtract"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprExtract" ): return visitor.visitColumnExprExtract(self) else: return visitor.visitChildren(self) + class ColumnExprNegateContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def DASH(self): return self.getToken(HogQLParser.DASH, 0) - def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprNegate"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprNegate" ): return visitor.visitColumnExprNegate(self) else: return visitor.visitChildren(self) + class ColumnExprSubqueryContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprSubquery"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprSubquery" ): return visitor.visitColumnExprSubquery(self) else: return visitor.visitChildren(self) + class ColumnExprLiteralContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def literal(self): - return self.getTypedRuleContext(HogQLParser.LiteralContext, 0) + return self.getTypedRuleContext(HogQLParser.LiteralContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprLiteral"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprLiteral" ): return visitor.visitColumnExprLiteral(self) else: return visitor.visitChildren(self) + class ColumnExprArrayContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def LBRACKET(self): return self.getToken(HogQLParser.LBRACKET, 0) - def RBRACKET(self): return self.getToken(HogQLParser.RBRACKET, 0) - def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprArray"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprArray" ): return visitor.visitColumnExprArray(self) else: return visitor.visitChildren(self) + class ColumnExprSubstringContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def SUBSTRING(self): return self.getToken(HogQLParser.SUBSTRING, 0) - def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def FROM(self): return self.getToken(HogQLParser.FROM, 0) - def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def FOR(self): return self.getToken(HogQLParser.FOR, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprSubstring"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprSubstring" ): return visitor.visitColumnExprSubstring(self) else: return visitor.visitChildren(self) + class ColumnExprCastContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def CAST(self): return self.getToken(HogQLParser.CAST, 0) - def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def AS(self): return self.getToken(HogQLParser.AS, 0) - def columnTypeExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnTypeExprContext,0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprCast"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprCast" ): return visitor.visitColumnExprCast(self) else: return visitor.visitChildren(self) + class ColumnExprOrContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def OR(self): return self.getToken(HogQLParser.OR, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprOr"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprOr" ): return visitor.visitColumnExprOr(self) else: return visitor.visitChildren(self) + class ColumnExprPrecedence1Context(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) - self.left = None # ColumnExprContext - self.operator = None # Token - self.right = None # ColumnExprContext + self.left = None # ColumnExprContext + self.operator = None # Token + self.right = None # ColumnExprContext self.copyFrom(ctx) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def ASTERISK(self): return self.getToken(HogQLParser.ASTERISK, 0) - def SLASH(self): return self.getToken(HogQLParser.SLASH, 0) - def PERCENT(self): return self.getToken(HogQLParser.PERCENT, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprPrecedence1"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprPrecedence1" ): return visitor.visitColumnExprPrecedence1(self) else: return visitor.visitChildren(self) + class ColumnExprPrecedence2Context(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) - self.left = None # ColumnExprContext - self.operator = None # Token - self.right = None # ColumnExprContext + self.left = None # ColumnExprContext + self.operator = None # Token + self.right = None # ColumnExprContext self.copyFrom(ctx) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def PLUS(self): return self.getToken(HogQLParser.PLUS, 0) - def DASH(self): return self.getToken(HogQLParser.DASH, 0) - def CONCAT(self): return self.getToken(HogQLParser.CONCAT, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprPrecedence2"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprPrecedence2" ): return visitor.visitColumnExprPrecedence2(self) else: return visitor.visitChildren(self) + class ColumnExprPrecedence3Context(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) - self.left = None # ColumnExprContext - self.operator = None # Token - self.right = None # ColumnExprContext + self.left = None # ColumnExprContext + self.operator = None # Token + self.right = None # ColumnExprContext self.copyFrom(ctx) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def IN(self): return self.getToken(HogQLParser.IN, 0) - def EQ_DOUBLE(self): return self.getToken(HogQLParser.EQ_DOUBLE, 0) - def EQ_SINGLE(self): return self.getToken(HogQLParser.EQ_SINGLE, 0) - def NOT_EQ(self): return self.getToken(HogQLParser.NOT_EQ, 0) - def LT_EQ(self): return self.getToken(HogQLParser.LT_EQ, 0) - def LT(self): return self.getToken(HogQLParser.LT, 0) - def GT_EQ(self): return self.getToken(HogQLParser.GT_EQ, 0) - def GT(self): return self.getToken(HogQLParser.GT, 0) - def LIKE(self): return self.getToken(HogQLParser.LIKE, 0) - def ILIKE(self): return self.getToken(HogQLParser.ILIKE, 0) - def REGEX_SINGLE(self): return self.getToken(HogQLParser.REGEX_SINGLE, 0) - def REGEX_DOUBLE(self): return self.getToken(HogQLParser.REGEX_DOUBLE, 0) - def NOT_REGEX(self): return self.getToken(HogQLParser.NOT_REGEX, 0) - def IREGEX_SINGLE(self): return self.getToken(HogQLParser.IREGEX_SINGLE, 0) - def IREGEX_DOUBLE(self): return self.getToken(HogQLParser.IREGEX_DOUBLE, 0) - def NOT_IREGEX(self): return self.getToken(HogQLParser.NOT_IREGEX, 0) - def COHORT(self): return self.getToken(HogQLParser.COHORT, 0) - def NOT(self): return self.getToken(HogQLParser.NOT, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprPrecedence3"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprPrecedence3" ): return visitor.visitColumnExprPrecedence3(self) else: return visitor.visitChildren(self) + class ColumnExprIntervalContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def INTERVAL(self): return self.getToken(HogQLParser.INTERVAL, 0) - def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def interval(self): - return self.getTypedRuleContext(HogQLParser.IntervalContext, 0) + return self.getTypedRuleContext(HogQLParser.IntervalContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprInterval"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprInterval" ): return visitor.visitColumnExprInterval(self) else: return visitor.visitChildren(self) + class ColumnExprIsNullContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def IS(self): return self.getToken(HogQLParser.IS, 0) - def NULL_SQL(self): return self.getToken(HogQLParser.NULL_SQL, 0) - def NOT(self): return self.getToken(HogQLParser.NOT, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprIsNull"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprIsNull" ): return visitor.visitColumnExprIsNull(self) else: return visitor.visitChildren(self) + class ColumnExprWinFunctionTargetContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def identifier(self, i: int = None): + def identifier(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) def OVER(self): return self.getToken(HogQLParser.OVER, 0) - def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprWinFunctionTarget"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprWinFunctionTarget" ): return visitor.visitColumnExprWinFunctionTarget(self) else: return visitor.visitChildren(self) + class ColumnExprTrimContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def TRIM(self): return self.getToken(HogQLParser.TRIM, 0) - def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) - def FROM(self): return self.getToken(HogQLParser.FROM, 0) - def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def BOTH(self): return self.getToken(HogQLParser.BOTH, 0) - def LEADING(self): return self.getToken(HogQLParser.LEADING, 0) - def TRAILING(self): return self.getToken(HogQLParser.TRAILING, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprTrim"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprTrim" ): return visitor.visitColumnExprTrim(self) else: return visitor.visitChildren(self) + class ColumnExprTupleContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprTuple"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprTuple" ): return visitor.visitColumnExprTuple(self) else: return visitor.visitChildren(self) + class ColumnExprArrayAccessContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def LBRACKET(self): return self.getToken(HogQLParser.LBRACKET, 0) - def RBRACKET(self): return self.getToken(HogQLParser.RBRACKET, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprArrayAccess"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprArrayAccess" ): return visitor.visitColumnExprArrayAccess(self) else: return visitor.visitChildren(self) + class ColumnExprBetweenContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def BETWEEN(self): return self.getToken(HogQLParser.BETWEEN, 0) - def AND(self): return self.getToken(HogQLParser.AND, 0) - def NOT(self): return self.getToken(HogQLParser.NOT, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprBetween"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprBetween" ): return visitor.visitColumnExprBetween(self) else: return visitor.visitChildren(self) + class ColumnExprPropertyAccessContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def DOT(self): return self.getToken(HogQLParser.DOT, 0) - def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprPropertyAccess"): + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprPropertyAccess" ): return visitor.visitColumnExprPropertyAccess(self) else: return visitor.visitChildren(self) + class ColumnExprParensContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprParens"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprParens" ): return visitor.visitColumnExprParens(self) else: return visitor.visitChildren(self) + class ColumnExprTimestampContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def TIMESTAMP(self): return self.getToken(HogQLParser.TIMESTAMP, 0) - def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprTimestamp"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprTimestamp" ): return visitor.visitColumnExprTimestamp(self) else: return visitor.visitChildren(self) + class ColumnExprNullishContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def NULLISH(self): return self.getToken(HogQLParser.NULLISH, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprNullish"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprNullish" ): return visitor.visitColumnExprNullish(self) else: return visitor.visitChildren(self) + class ColumnExprAndContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) def AND(self): return self.getToken(HogQLParser.AND, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprAnd"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprAnd" ): return visitor.visitColumnExprAnd(self) else: return visitor.visitChildren(self) + class ColumnExprTupleAccessContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def DOT(self): return self.getToken(HogQLParser.DOT, 0) - def DECIMAL_LITERAL(self): return self.getToken(HogQLParser.DECIMAL_LITERAL, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprTupleAccess"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprTupleAccess" ): return visitor.visitColumnExprTupleAccess(self) else: return visitor.visitChildren(self) + class ColumnExprCaseContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) - self.caseExpr = None # ColumnExprContext - self.whenExpr = None # ColumnExprContext - self.thenExpr = None # ColumnExprContext - self.elseExpr = None # ColumnExprContext + self.caseExpr = None # ColumnExprContext + self.whenExpr = None # ColumnExprContext + self.thenExpr = None # ColumnExprContext + self.elseExpr = None # ColumnExprContext self.copyFrom(ctx) def CASE(self): return self.getToken(HogQLParser.CASE, 0) - def END(self): return self.getToken(HogQLParser.END, 0) - - def WHEN(self, i: int = None): + def WHEN(self, i:int=None): if i is None: return self.getTokens(HogQLParser.WHEN) else: return self.getToken(HogQLParser.WHEN, i) - - def THEN(self, i: int = None): + def THEN(self, i:int=None): if i is None: return self.getTokens(HogQLParser.THEN) else: return self.getToken(HogQLParser.THEN, i) - def ELSE(self): return self.getToken(HogQLParser.ELSE, 0) - - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprCase"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprCase" ): return visitor.visitColumnExprCase(self) else: return visitor.visitChildren(self) + class ColumnExprDateContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def DATE(self): return self.getToken(HogQLParser.DATE, 0) - def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprDate"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprDate" ): return visitor.visitColumnExprDate(self) else: return visitor.visitChildren(self) + class ColumnExprNotContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def NOT(self): return self.getToken(HogQLParser.NOT, 0) - def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprNot"): + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprNot" ): return visitor.visitColumnExprNot(self) else: return visitor.visitChildren(self) + class ColumnExprWinFunctionContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) def OVER(self): return self.getToken(HogQLParser.OVER, 0) - - def LPAREN(self, i: int = None): + def LPAREN(self, i:int=None): if i is None: return self.getTokens(HogQLParser.LPAREN) else: return self.getToken(HogQLParser.LPAREN, i) - def windowExpr(self): - return self.getTypedRuleContext(HogQLParser.WindowExprContext, 0) + return self.getTypedRuleContext(HogQLParser.WindowExprContext,0) - def RPAREN(self, i: int = None): + def RPAREN(self, i:int=None): if i is None: return self.getTokens(HogQLParser.RPAREN) else: return self.getToken(HogQLParser.RPAREN, i) - def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprWinFunction"): + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprWinFunction" ): return visitor.visitColumnExprWinFunction(self) else: return visitor.visitChildren(self) + class ColumnExprIdentifierContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def columnIdentifier(self): - return self.getTypedRuleContext(HogQLParser.ColumnIdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnIdentifierContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprIdentifier"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprIdentifier" ): return visitor.visitColumnExprIdentifier(self) else: return visitor.visitChildren(self) + class ColumnExprFunctionContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) - def LPAREN(self, i: int = None): + def LPAREN(self, i:int=None): if i is None: return self.getTokens(HogQLParser.LPAREN) else: return self.getToken(HogQLParser.LPAREN, i) - - def RPAREN(self, i: int = None): + def RPAREN(self, i:int=None): if i is None: return self.getTokens(HogQLParser.RPAREN) else: return self.getToken(HogQLParser.RPAREN, i) - def DISTINCT(self): return self.getToken(HogQLParser.DISTINCT, 0) - def columnArgList(self): - return self.getTypedRuleContext(HogQLParser.ColumnArgListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnArgListContext,0) def columnExprList(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprListContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprListContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprFunction"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprFunction" ): return visitor.visitColumnExprFunction(self) else: return visitor.visitChildren(self) + class ColumnExprAsteriskContext(ColumnExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.ColumnExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.ColumnExprContext super().__init__(parser) self.copyFrom(ctx) def ASTERISK(self): return self.getToken(HogQLParser.ASTERISK, 0) - def tableIdentifier(self): - return self.getTypedRuleContext(HogQLParser.TableIdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.TableIdentifierContext,0) def DOT(self): return self.getToken(HogQLParser.DOT, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnExprAsterisk"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnExprAsterisk" ): return visitor.visitColumnExprAsterisk(self) else: return visitor.visitChildren(self) - def columnExpr(self, _p: int = 0): + + + def columnExpr(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = HogQLParser.ColumnExprContext(self, self._ctx, _parentState) _prevctx = localctx _startState = 74 self.enterRecursionRule(localctx, 74, self.RULE_columnExpr, _p) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 660 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 80, self._ctx) + la_ = self._interp.adaptivePredict(self._input,80,self._ctx) if la_ == 1: localctx = HogQLParser.ColumnExprCaseContext(self, localctx) self._ctx = localctx @@ -13286,12 +4921,13 @@ def columnExpr(self, _p: int = 0): self.match(HogQLParser.CASE) self.state = 534 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 68, self._ctx) + la_ = self._interp.adaptivePredict(self._input,68,self._ctx) if la_ == 1: self.state = 533 localctx.caseExpr = self.columnExpr(0) - self.state = 541 + + self.state = 541 self._errHandler.sync(self) _la = self._input.LA(1) while True: @@ -13303,21 +4939,22 @@ def columnExpr(self, _p: int = 0): self.match(HogQLParser.THEN) self.state = 539 localctx.thenExpr = self.columnExpr(0) - self.state = 543 + self.state = 543 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la == 186): + if not (_la==186): break self.state = 547 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 52: + if _la==52: self.state = 545 self.match(HogQLParser.ELSE) self.state = 546 localctx.elseExpr = self.columnExpr(0) + self.state = 549 self.match(HogQLParser.END) pass @@ -13397,12 +5034,13 @@ def columnExpr(self, _p: int = 0): self.state = 578 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 65: + if _la==65: self.state = 576 self.match(HogQLParser.FOR) self.state = 577 self.columnExpr(0) + self.state = 580 self.match(HogQLParser.RPAREN) pass @@ -13427,7 +5065,7 @@ def columnExpr(self, _p: int = 0): self.match(HogQLParser.LPAREN) self.state = 586 _la = self._input.LA(1) - if not (_la == 17 or _la == 95 or _la == 170): + if not(_la==17 or _la==95 or _la==170): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13454,15 +5092,11 @@ def columnExpr(self, _p: int = 0): self.state = 595 self._errHandler.sync(self) _la = self._input.LA(1) - if ( - (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) - or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) - or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) - or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) - ): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): self.state = 594 self.columnExprList() + self.state = 597 self.match(HogQLParser.RPAREN) self.state = 599 @@ -13487,15 +5121,11 @@ def columnExpr(self, _p: int = 0): self.state = 607 self._errHandler.sync(self) _la = self._input.LA(1) - if ( - (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) - or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) - or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) - or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) - ): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): self.state = 606 self.columnExprList() + self.state = 609 self.match(HogQLParser.RPAREN) self.state = 611 @@ -13512,46 +5142,40 @@ def columnExpr(self, _p: int = 0): self.identifier() self.state = 620 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 75, self._ctx) + la_ = self._interp.adaptivePredict(self._input,75,self._ctx) if la_ == 1: self.state = 615 self.match(HogQLParser.LPAREN) self.state = 617 self._errHandler.sync(self) _la = self._input.LA(1) - if ( - (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) - or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) - or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) - or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) - ): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): self.state = 616 self.columnExprList() + self.state = 619 self.match(HogQLParser.RPAREN) + self.state = 622 self.match(HogQLParser.LPAREN) self.state = 624 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 76, self._ctx) + la_ = self._interp.adaptivePredict(self._input,76,self._ctx) if la_ == 1: self.state = 623 self.match(HogQLParser.DISTINCT) + self.state = 627 self._errHandler.sync(self) _la = self._input.LA(1) - if ( - (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) - or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) - or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) - or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) - ): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): self.state = 626 self.columnArgList() + self.state = 629 self.match(HogQLParser.RPAREN) pass @@ -13591,18 +5215,13 @@ def columnExpr(self, _p: int = 0): self.state = 639 self._errHandler.sync(self) _la = self._input.LA(1) - if ( - (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) - or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -5066549581053953) != 0) - or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) - or _la == 192 - or _la == 194 - ): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -5066549581053953) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or _la==192 or _la==194: self.state = 636 self.tableIdentifier() self.state = 637 self.match(HogQLParser.DOT) + self.state = 641 self.match(HogQLParser.ASTERISK) pass @@ -13652,15 +5271,11 @@ def columnExpr(self, _p: int = 0): self.state = 656 self._errHandler.sync(self) _la = self._input.LA(1) - if ( - (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) - or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) - or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) - or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) - ): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): self.state = 655 self.columnExprList() + self.state = 658 self.match(HogQLParser.RBRACKET) pass @@ -13673,28 +5288,26 @@ def columnExpr(self, _p: int = 0): self.columnIdentifier() pass + self._ctx.stop = self._input.LT(-1) self.state = 755 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 91, self._ctx) - while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: - if _alt == 1: + _alt = self._interp.adaptivePredict(self._input,91,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx self.state = 753 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 90, self._ctx) + la_ = self._interp.adaptivePredict(self._input,90,self._ctx) if la_ == 1: - localctx = HogQLParser.ColumnExprPrecedence1Context( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprPrecedence1Context(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) localctx.left = _prevctx self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 662 if not self.precpred(self._ctx, 17): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 17)") self.state = 666 self._errHandler.sync(self) @@ -13719,15 +5332,12 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 2: - localctx = HogQLParser.ColumnExprPrecedence2Context( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprPrecedence2Context(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) localctx.left = _prevctx self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 669 if not self.precpred(self._ctx, 16): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 16)") self.state = 673 self._errHandler.sync(self) @@ -13752,19 +5362,16 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 3: - localctx = HogQLParser.ColumnExprPrecedence3Context( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprPrecedence3Context(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) localctx.left = _prevctx self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 676 if not self.precpred(self._ctx, 15): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 15)") self.state = 701 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 86, self._ctx) + la_ = self._interp.adaptivePredict(self._input,86,self._ctx) if la_ == 1: self.state = 677 localctx.operator = self.match(HogQLParser.EQ_DOUBLE) @@ -13804,32 +5411,35 @@ def columnExpr(self, _p: int = 0): self.state = 685 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 115: + if _la==115: self.state = 684 localctx.operator = self.match(HogQLParser.NOT) + self.state = 687 self.match(HogQLParser.IN) self.state = 689 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 25: + if _la==25: self.state = 688 self.match(HogQLParser.COHORT) + pass elif la_ == 9: self.state = 692 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 115: + if _la==115: self.state = 691 localctx.operator = self.match(HogQLParser.NOT) + self.state = 694 _la = self._input.LA(1) - if not (_la == 79 or _la == 98): + if not(_la==79 or _la==98): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -13866,19 +5476,17 @@ def columnExpr(self, _p: int = 0): localctx.operator = self.match(HogQLParser.NOT_IREGEX) pass + self.state = 703 localctx.right = self.columnExpr(16) pass elif la_ == 4: - localctx = HogQLParser.ColumnExprNullishContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprNullishContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 704 if not self.precpred(self._ctx, 13): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 13)") self.state = 705 self.match(HogQLParser.NULLISH) @@ -13887,14 +5495,11 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 5: - localctx = HogQLParser.ColumnExprAndContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprAndContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 707 if not self.precpred(self._ctx, 11): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 11)") self.state = 708 self.match(HogQLParser.AND) @@ -13903,14 +5508,11 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 6: - localctx = HogQLParser.ColumnExprOrContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprOrContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 710 if not self.precpred(self._ctx, 10): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") self.state = 711 self.match(HogQLParser.OR) @@ -13919,22 +5521,20 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 7: - localctx = HogQLParser.ColumnExprBetweenContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprBetweenContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 713 if not self.precpred(self._ctx, 9): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") self.state = 715 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 115: + if _la==115: self.state = 714 self.match(HogQLParser.NOT) + self.state = 717 self.match(HogQLParser.BETWEEN) self.state = 718 @@ -13946,14 +5546,11 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 8: - localctx = HogQLParser.ColumnExprTernaryOpContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprTernaryOpContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 722 if not self.precpred(self._ctx, 8): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") self.state = 723 self.match(HogQLParser.QUERY) @@ -13966,14 +5563,11 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 9: - localctx = HogQLParser.ColumnExprArrayAccessContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprArrayAccessContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 728 if not self.precpred(self._ctx, 21): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 21)") self.state = 729 self.match(HogQLParser.LBRACKET) @@ -13984,14 +5578,11 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 10: - localctx = HogQLParser.ColumnExprTupleAccessContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprTupleAccessContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 733 if not self.precpred(self._ctx, 20): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 20)") self.state = 734 self.match(HogQLParser.DOT) @@ -14000,14 +5591,11 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 11: - localctx = HogQLParser.ColumnExprPropertyAccessContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprPropertyAccessContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 736 if not self.precpred(self._ctx, 19): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 19)") self.state = 737 self.match(HogQLParser.DOT) @@ -14016,41 +5604,36 @@ def columnExpr(self, _p: int = 0): pass elif la_ == 12: - localctx = HogQLParser.ColumnExprIsNullContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprIsNullContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 739 if not self.precpred(self._ctx, 14): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 14)") self.state = 740 self.match(HogQLParser.IS) self.state = 742 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 115: + if _la==115: self.state = 741 self.match(HogQLParser.NOT) + self.state = 744 self.match(HogQLParser.NULL_SQL) pass elif la_ == 13: - localctx = HogQLParser.ColumnExprAliasContext( - self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.ColumnExprAliasContext(self, HogQLParser.ColumnExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_columnExpr) self.state = 745 if not self.precpred(self._ctx, 7): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") self.state = 751 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 89, self._ctx) + la_ = self._interp.adaptivePredict(self._input,89,self._ctx) if la_ == 1: self.state = 746 self.alias() @@ -14070,11 +5653,13 @@ def columnExpr(self, _p: int = 0): self.match(HogQLParser.STRING_LITERAL) pass + pass + self.state = 757 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 91, self._ctx) + _alt = self._interp.adaptivePredict(self._input,91,self._ctx) except RecognitionException as re: localctx.exception = re @@ -14084,20 +5669,22 @@ def columnExpr(self, _p: int = 0): self.unrollRecursionContexts(_parentctx) return localctx + class ColumnArgListContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def columnArgExpr(self, i: int = None): + def columnArgExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnArgExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnArgExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnArgExprContext,i) - def COMMA(self, i: int = None): + + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -14106,17 +5693,20 @@ def COMMA(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_columnArgList - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnArgList"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnArgList" ): return visitor.visitColumnArgList(self) else: return visitor.visitChildren(self) + + + def columnArgList(self): localctx = HogQLParser.ColumnArgListContext(self, self._ctx, self.state) self.enterRule(localctx, 76, self.RULE_columnArgList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 758 @@ -14124,7 +5714,7 @@ def columnArgList(self): self.state = 763 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 759 self.match(HogQLParser.COMMA) self.state = 760 @@ -14141,28 +5731,34 @@ def columnArgList(self): self.exitRule() return localctx + class ColumnArgExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def columnLambdaExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnLambdaExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnLambdaExprContext,0) + def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def getRuleIndex(self): return HogQLParser.RULE_columnArgExpr - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnArgExpr"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnArgExpr" ): return visitor.visitColumnArgExpr(self) else: return visitor.visitChildren(self) + + + def columnArgExpr(self): localctx = HogQLParser.ColumnArgExprContext(self, self._ctx, self.state) @@ -14170,7 +5766,7 @@ def columnArgExpr(self): try: self.state = 768 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 93, self._ctx) + la_ = self._interp.adaptivePredict(self._input,93,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) self.state = 766 @@ -14183,6 +5779,7 @@ def columnArgExpr(self): self.columnExpr(0) pass + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14191,10 +5788,11 @@ def columnArgExpr(self): self.exitRule() return localctx + class ColumnLambdaExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -14202,21 +5800,23 @@ def ARROW(self): return self.getToken(HogQLParser.ARROW, 0) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) + def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def identifier(self, i: int = None): + def identifier(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) + def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def COMMA(self, i: int = None): + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -14225,17 +5825,20 @@ def COMMA(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_columnLambdaExpr - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnLambdaExpr"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnLambdaExpr" ): return visitor.visitColumnLambdaExpr(self) else: return visitor.visitChildren(self) + + + def columnLambdaExpr(self): localctx = HogQLParser.ColumnLambdaExprContext(self, self._ctx, self.state) self.enterRule(localctx, 80, self.RULE_columnLambdaExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 789 @@ -14249,7 +5852,7 @@ def columnLambdaExpr(self): self.state = 776 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 772 self.match(HogQLParser.COMMA) self.state = 773 @@ -14261,201 +5864,13 @@ def columnLambdaExpr(self): self.state = 779 self.match(HogQLParser.RPAREN) pass - elif token in [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 114, - 115, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 194, - ]: + elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194]: self.state = 781 self.identifier() self.state = 786 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 782 self.match(HogQLParser.COMMA) self.state = 783 @@ -14480,20 +5895,22 @@ def columnLambdaExpr(self): self.exitRule() return localctx + class WithExprListContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def withExpr(self, i: int = None): + def withExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.WithExprContext) else: - return self.getTypedRuleContext(HogQLParser.WithExprContext, i) + return self.getTypedRuleContext(HogQLParser.WithExprContext,i) - def COMMA(self, i: int = None): + + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -14502,17 +5919,20 @@ def COMMA(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_withExprList - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWithExprList"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWithExprList" ): return visitor.visitWithExprList(self) else: return visitor.visitChildren(self) + + + def withExprList(self): localctx = HogQLParser.WithExprListContext(self, self._ctx, self.state) self.enterRule(localctx, 82, self.RULE_withExprList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 794 @@ -14520,7 +5940,7 @@ def withExprList(self): self.state = 799 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 795 self.match(HogQLParser.COMMA) self.state = 796 @@ -14537,65 +5957,73 @@ def withExprList(self): self.exitRule() return localctx + class WithExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def getRuleIndex(self): return HogQLParser.RULE_withExpr - def copyFrom(self, ctx: ParserRuleContext): + + def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) + + class WithExprColumnContext(WithExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.WithExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.WithExprContext super().__init__(parser) self.copyFrom(ctx) def columnExpr(self): - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, 0) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,0) def AS(self): return self.getToken(HogQLParser.AS, 0) - def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWithExprColumn"): + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWithExprColumn" ): return visitor.visitWithExprColumn(self) else: return visitor.visitChildren(self) + class WithExprSubqueryContext(WithExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.WithExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.WithExprContext super().__init__(parser) self.copyFrom(ctx) def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) def AS(self): return self.getToken(HogQLParser.AS, 0) - def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitWithExprSubquery"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitWithExprSubquery" ): return visitor.visitWithExprSubquery(self) else: return visitor.visitChildren(self) + + def withExpr(self): localctx = HogQLParser.WithExprContext(self, self._ctx, self.state) @@ -14603,7 +6031,7 @@ def withExpr(self): try: self.state = 812 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 98, self._ctx) + la_ = self._interp.adaptivePredict(self._input,98,self._ctx) if la_ == 1: localctx = HogQLParser.WithExprSubqueryContext(self, localctx) self.enterOuterAlt(localctx, 1) @@ -14630,6 +6058,7 @@ def withExpr(self): self.identifier() pass + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -14638,10 +6067,11 @@ def withExpr(self): self.exitRule() return localctx + class ColumnIdentifierContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -14649,10 +6079,12 @@ def PLACEHOLDER(self): return self.getToken(HogQLParser.PLACEHOLDER, 0) def nestedIdentifier(self): - return self.getTypedRuleContext(HogQLParser.NestedIdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.NestedIdentifierContext,0) + def tableIdentifier(self): - return self.getTypedRuleContext(HogQLParser.TableIdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.TableIdentifierContext,0) + def DOT(self): return self.getToken(HogQLParser.DOT, 0) @@ -14660,12 +6092,15 @@ def DOT(self): def getRuleIndex(self): return HogQLParser.RULE_columnIdentifier - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitColumnIdentifier"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitColumnIdentifier" ): return visitor.visitColumnIdentifier(self) else: return visitor.visitChildren(self) + + + def columnIdentifier(self): localctx = HogQLParser.ColumnIdentifierContext(self, self._ctx, self.state) @@ -14679,205 +6114,18 @@ def columnIdentifier(self): self.state = 814 self.match(HogQLParser.PLACEHOLDER) pass - elif token in [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 114, - 115, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 194, - ]: + elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194]: self.enterOuterAlt(localctx, 2) self.state = 818 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 99, self._ctx) + la_ = self._interp.adaptivePredict(self._input,99,self._ctx) if la_ == 1: self.state = 815 self.tableIdentifier() self.state = 816 self.match(HogQLParser.DOT) + self.state = 820 self.nestedIdentifier() pass @@ -14892,20 +6140,22 @@ def columnIdentifier(self): self.exitRule() return localctx + class NestedIdentifierContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def identifier(self, i: int = None): + def identifier(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.IdentifierContext) else: - return self.getTypedRuleContext(HogQLParser.IdentifierContext, i) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,i) - def DOT(self, i: int = None): + + def DOT(self, i:int=None): if i is None: return self.getTokens(HogQLParser.DOT) else: @@ -14914,12 +6164,15 @@ def DOT(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_nestedIdentifier - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitNestedIdentifier"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNestedIdentifier" ): return visitor.visitNestedIdentifier(self) else: return visitor.visitChildren(self) + + + def nestedIdentifier(self): localctx = HogQLParser.NestedIdentifierContext(self, self._ctx, self.state) @@ -14930,16 +6183,16 @@ def nestedIdentifier(self): self.identifier() self.state = 828 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 101, self._ctx) - while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: - if _alt == 1: + _alt = self._interp.adaptivePredict(self._input,101,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: self.state = 824 self.match(HogQLParser.DOT) self.state = 825 - self.identifier() + self.identifier() self.state = 830 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 101, self._ctx) + _alt = self._interp.adaptivePredict(self._input,101,self._ctx) except RecognitionException as re: localctx.exception = re @@ -14949,105 +6202,121 @@ def nestedIdentifier(self): self.exitRule() return localctx + class TableExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def getRuleIndex(self): return HogQLParser.RULE_tableExpr - def copyFrom(self, ctx: ParserRuleContext): + + def copyFrom(self, ctx:ParserRuleContext): super().copyFrom(ctx) + class TableExprIdentifierContext(TableExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def tableIdentifier(self): - return self.getTypedRuleContext(HogQLParser.TableIdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.TableIdentifierContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitTableExprIdentifier"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTableExprIdentifier" ): return visitor.visitTableExprIdentifier(self) else: return visitor.visitChildren(self) + class TableExprPlaceholderContext(TableExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def PLACEHOLDER(self): return self.getToken(HogQLParser.PLACEHOLDER, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitTableExprPlaceholder"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTableExprPlaceholder" ): return visitor.visitTableExprPlaceholder(self) else: return visitor.visitChildren(self) + class TableExprSubqueryContext(TableExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) - def selectUnionStmt(self): - return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext, 0) + return self.getTypedRuleContext(HogQLParser.SelectUnionStmtContext,0) def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitTableExprSubquery"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTableExprSubquery" ): return visitor.visitTableExprSubquery(self) else: return visitor.visitChildren(self) + class TableExprAliasContext(TableExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def tableExpr(self): - return self.getTypedRuleContext(HogQLParser.TableExprContext, 0) + return self.getTypedRuleContext(HogQLParser.TableExprContext,0) def alias(self): - return self.getTypedRuleContext(HogQLParser.AliasContext, 0) + return self.getTypedRuleContext(HogQLParser.AliasContext,0) def AS(self): return self.getToken(HogQLParser.AS, 0) - def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitTableExprAlias"): + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTableExprAlias" ): return visitor.visitTableExprAlias(self) else: return visitor.visitChildren(self) + class TableExprFunctionContext(TableExprContext): - def __init__(self, parser, ctx: ParserRuleContext): # actually a HogQLParser.TableExprContext + + def __init__(self, parser, ctx:ParserRuleContext): # actually a HogQLParser.TableExprContext super().__init__(parser) self.copyFrom(ctx) def tableFunctionExpr(self): - return self.getTypedRuleContext(HogQLParser.TableFunctionExprContext, 0) + return self.getTypedRuleContext(HogQLParser.TableFunctionExprContext,0) + - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitTableExprFunction"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTableExprFunction" ): return visitor.visitTableExprFunction(self) else: return visitor.visitChildren(self) - def tableExpr(self, _p: int = 0): + + + def tableExpr(self, _p:int=0): _parentctx = self._ctx _parentState = self.state localctx = HogQLParser.TableExprContext(self, self._ctx, _parentState) @@ -15058,7 +6327,7 @@ def tableExpr(self, _p: int = 0): self.enterOuterAlt(localctx, 1) self.state = 839 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 102, self._ctx) + la_ = self._interp.adaptivePredict(self._input,102,self._ctx) if la_ == 1: localctx = HogQLParser.TableExprIdentifierContext(self, localctx) self._ctx = localctx @@ -15096,23 +6365,21 @@ def tableExpr(self, _p: int = 0): self.match(HogQLParser.PLACEHOLDER) pass + self._ctx.stop = self._input.LT(-1) self.state = 849 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 104, self._ctx) - while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: - if _alt == 1: + _alt = self._interp.adaptivePredict(self._input,104,self._ctx) + while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: + if _alt==1: if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx - localctx = HogQLParser.TableExprAliasContext( - self, HogQLParser.TableExprContext(self, _parentctx, _parentState) - ) + localctx = HogQLParser.TableExprAliasContext(self, HogQLParser.TableExprContext(self, _parentctx, _parentState)) self.pushNewRecursionContext(localctx, _startState, self.RULE_tableExpr) self.state = 841 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") self.state = 845 self._errHandler.sync(self) @@ -15129,10 +6396,10 @@ def tableExpr(self, _p: int = 0): pass else: raise NoViableAltException(self) - + self.state = 851 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input, 104, self._ctx) + _alt = self._interp.adaptivePredict(self._input,104,self._ctx) except RecognitionException as re: localctx.exception = re @@ -15142,15 +6409,17 @@ def tableExpr(self, _p: int = 0): self.unrollRecursionContexts(_parentctx) return localctx + class TableFunctionExprContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + def LPAREN(self): return self.getToken(HogQLParser.LPAREN, 0) @@ -15159,22 +6428,26 @@ def RPAREN(self): return self.getToken(HogQLParser.RPAREN, 0) def tableArgList(self): - return self.getTypedRuleContext(HogQLParser.TableArgListContext, 0) + return self.getTypedRuleContext(HogQLParser.TableArgListContext,0) + def getRuleIndex(self): return HogQLParser.RULE_tableFunctionExpr - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitTableFunctionExpr"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTableFunctionExpr" ): return visitor.visitTableFunctionExpr(self) else: return visitor.visitChildren(self) + + + def tableFunctionExpr(self): localctx = HogQLParser.TableFunctionExprContext(self, self._ctx, self.state) self.enterRule(localctx, 92, self.RULE_tableFunctionExpr) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 852 @@ -15184,15 +6457,11 @@ def tableFunctionExpr(self): self.state = 855 self._errHandler.sync(self) _la = self._input.LA(1) - if ( - (((_la) & ~0x3F) == 0 and ((1 << _la) & -33554436) != 0) - or ((((_la - 64)) & ~0x3F) == 0 and ((1 << (_la - 64)) & -1) != 0) - or ((((_la - 128)) & ~0x3F) == 0 and ((1 << (_la - 128)) & -9) != 0) - or ((((_la - 192)) & ~0x3F) == 0 and ((1 << (_la - 192)) & 69122459133) != 0) - ): + if (((_la) & ~0x3f) == 0 and ((1 << _la) & -33554436) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & -9) != 0) or ((((_la - 192)) & ~0x3f) == 0 and ((1 << (_la - 192)) & 69122459133) != 0): self.state = 854 self.tableArgList() + self.state = 857 self.match(HogQLParser.RPAREN) except RecognitionException as re: @@ -15203,18 +6472,21 @@ def tableFunctionExpr(self): self.exitRule() return localctx + class TableIdentifierContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + def databaseIdentifier(self): - return self.getTypedRuleContext(HogQLParser.DatabaseIdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.DatabaseIdentifierContext,0) + def DOT(self): return self.getToken(HogQLParser.DOT, 0) @@ -15222,12 +6494,15 @@ def DOT(self): def getRuleIndex(self): return HogQLParser.RULE_tableIdentifier - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitTableIdentifier"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTableIdentifier" ): return visitor.visitTableIdentifier(self) else: return visitor.visitChildren(self) + + + def tableIdentifier(self): localctx = HogQLParser.TableIdentifierContext(self, self._ctx, self.state) @@ -15236,13 +6511,14 @@ def tableIdentifier(self): self.enterOuterAlt(localctx, 1) self.state = 862 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 106, self._ctx) + la_ = self._interp.adaptivePredict(self._input,106,self._ctx) if la_ == 1: self.state = 859 self.databaseIdentifier() self.state = 860 self.match(HogQLParser.DOT) + self.state = 864 self.identifier() except RecognitionException as re: @@ -15253,20 +6529,22 @@ def tableIdentifier(self): self.exitRule() return localctx + class TableArgListContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def columnExpr(self, i: int = None): + def columnExpr(self, i:int=None): if i is None: return self.getTypedRuleContexts(HogQLParser.ColumnExprContext) else: - return self.getTypedRuleContext(HogQLParser.ColumnExprContext, i) + return self.getTypedRuleContext(HogQLParser.ColumnExprContext,i) - def COMMA(self, i: int = None): + + def COMMA(self, i:int=None): if i is None: return self.getTokens(HogQLParser.COMMA) else: @@ -15275,17 +6553,20 @@ def COMMA(self, i: int = None): def getRuleIndex(self): return HogQLParser.RULE_tableArgList - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitTableArgList"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitTableArgList" ): return visitor.visitTableArgList(self) else: return visitor.visitChildren(self) + + + def tableArgList(self): localctx = HogQLParser.TableArgListContext(self, self._ctx, self.state) self.enterRule(localctx, 96, self.RULE_tableArgList) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 866 @@ -15293,7 +6574,7 @@ def tableArgList(self): self.state = 871 self._errHandler.sync(self) _la = self._input.LA(1) - while _la == 206: + while _la==206: self.state = 867 self.match(HogQLParser.COMMA) self.state = 868 @@ -15310,25 +6591,30 @@ def tableArgList(self): self.exitRule() return localctx + class DatabaseIdentifierContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def identifier(self): - return self.getTypedRuleContext(HogQLParser.IdentifierContext, 0) + return self.getTypedRuleContext(HogQLParser.IdentifierContext,0) + def getRuleIndex(self): return HogQLParser.RULE_databaseIdentifier - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitDatabaseIdentifier"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitDatabaseIdentifier" ): return visitor.visitDatabaseIdentifier(self) else: return visitor.visitChildren(self) + + + def databaseIdentifier(self): localctx = HogQLParser.DatabaseIdentifierContext(self, self._ctx, self.state) @@ -15345,10 +6631,11 @@ def databaseIdentifier(self): self.exitRule() return localctx + class FloatingLiteralContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -15358,7 +6645,7 @@ def FLOATING_LITERAL(self): def DOT(self): return self.getToken(HogQLParser.DOT, 0) - def DECIMAL_LITERAL(self, i: int = None): + def DECIMAL_LITERAL(self, i:int=None): if i is None: return self.getTokens(HogQLParser.DECIMAL_LITERAL) else: @@ -15370,17 +6657,20 @@ def OCTAL_LITERAL(self): def getRuleIndex(self): return HogQLParser.RULE_floatingLiteral - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitFloatingLiteral"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitFloatingLiteral" ): return visitor.visitFloatingLiteral(self) else: return visitor.visitChildren(self) + + + def floatingLiteral(self): localctx = HogQLParser.FloatingLiteralContext(self, self._ctx, self.state) self.enterRule(localctx, 100, self.RULE_floatingLiteral) - self._la = 0 # Token type + self._la = 0 # Token type try: self.state = 884 self._errHandler.sync(self) @@ -15396,7 +6686,7 @@ def floatingLiteral(self): self.match(HogQLParser.DOT) self.state = 878 _la = self._input.LA(1) - if not (_la == 196 or _la == 197): + if not(_la==196 or _la==197): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -15410,16 +6700,17 @@ def floatingLiteral(self): self.match(HogQLParser.DOT) self.state = 882 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 108, self._ctx) + la_ = self._interp.adaptivePredict(self._input,108,self._ctx) if la_ == 1: self.state = 881 _la = self._input.LA(1) - if not (_la == 196 or _la == 197): + if not(_la==196 or _la==197): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + pass else: raise NoViableAltException(self) @@ -15432,15 +6723,17 @@ def floatingLiteral(self): self.exitRule() return localctx + class NumberLiteralContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def floatingLiteral(self): - return self.getTypedRuleContext(HogQLParser.FloatingLiteralContext, 0) + return self.getTypedRuleContext(HogQLParser.FloatingLiteralContext,0) + def OCTAL_LITERAL(self): return self.getToken(HogQLParser.OCTAL_LITERAL, 0) @@ -15466,34 +6759,38 @@ def DASH(self): def getRuleIndex(self): return HogQLParser.RULE_numberLiteral - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitNumberLiteral"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitNumberLiteral" ): return visitor.visitNumberLiteral(self) else: return visitor.visitChildren(self) + + + def numberLiteral(self): localctx = HogQLParser.NumberLiteralContext(self, self._ctx, self.state) self.enterRule(localctx, 102, self.RULE_numberLiteral) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 887 self._errHandler.sync(self) _la = self._input.LA(1) - if _la == 208 or _la == 228: + if _la==208 or _la==228: self.state = 886 _la = self._input.LA(1) - if not (_la == 208 or _la == 228): + if not(_la==208 or _la==228): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() + self.state = 895 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input, 111, self._ctx) + la_ = self._interp.adaptivePredict(self._input,111,self._ctx) if la_ == 1: self.state = 889 self.floatingLiteral() @@ -15524,6 +6821,7 @@ def numberLiteral(self): self.match(HogQLParser.NAN_SQL) pass + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -15532,15 +6830,17 @@ def numberLiteral(self): self.exitRule() return localctx + class LiteralContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser def numberLiteral(self): - return self.getTypedRuleContext(HogQLParser.NumberLiteralContext, 0) + return self.getTypedRuleContext(HogQLParser.NumberLiteralContext,0) + def STRING_LITERAL(self): return self.getToken(HogQLParser.STRING_LITERAL, 0) @@ -15551,12 +6851,15 @@ def NULL_SQL(self): def getRuleIndex(self): return HogQLParser.RULE_literal - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitLiteral"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitLiteral" ): return visitor.visitLiteral(self) else: return visitor.visitChildren(self) + + + def literal(self): localctx = HogQLParser.LiteralContext(self, self._ctx, self.state) @@ -15591,10 +6894,11 @@ def literal(self): self.exitRule() return localctx + class IntervalContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -15625,26 +6929,25 @@ def YEAR(self): def getRuleIndex(self): return HogQLParser.RULE_interval - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitInterval"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitInterval" ): return visitor.visitInterval(self) else: return visitor.visitChildren(self) + + + def interval(self): localctx = HogQLParser.IntervalContext(self, self._ctx, self.state) self.enterRule(localctx, 106, self.RULE_interval) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 902 _la = self._input.LA(1) - if not ( - _la == 37 - or ((((_la - 76)) & ~0x3F) == 0 and ((1 << (_la - 76)) & 72057615512764417) != 0) - or ((((_la - 145)) & ~0x3F) == 0 and ((1 << (_la - 145)) & 36283883716609) != 0) - ): + if not(_la==37 or ((((_la - 76)) & ~0x3f) == 0 and ((1 << (_la - 76)) & 72057615512764417) != 0) or ((((_la - 145)) & ~0x3f) == 0 and ((1 << (_la - 145)) & 36283883716609) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -15657,10 +6960,11 @@ def interval(self): self.exitRule() return localctx + class KeywordContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -16201,26 +7505,25 @@ def WITH(self): def getRuleIndex(self): return HogQLParser.RULE_keyword - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitKeyword"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitKeyword" ): return visitor.visitKeyword(self) else: return visitor.visitChildren(self) + + + def keyword(self): localctx = HogQLParser.KeywordContext(self, self._ctx, self.state) self.enterRule(localctx, 108, self.RULE_keyword) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 904 _la = self._input.LA(1) - if not ( - ((((_la - 2)) & ~0x3F) == 0 and ((1 << (_la - 2)) & -34368126977) != 0) - or ((((_la - 66)) & ~0x3F) == 0 and ((1 << (_la - 66)) & -1288627627820033) != 0) - or ((((_la - 130)) & ~0x3F) == 0 and ((1 << (_la - 130)) & 8034421735228932089) != 0) - ): + if not(((((_la - 2)) & ~0x3f) == 0 and ((1 << (_la - 2)) & -34368126977) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & -1288627627820033) != 0) or ((((_la - 130)) & ~0x3f) == 0 and ((1 << (_la - 130)) & 8034421735228932089) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -16233,10 +7536,11 @@ def keyword(self): self.exitRule() return localctx + class KeywordForAliasContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -16255,22 +7559,25 @@ def KEY(self): def getRuleIndex(self): return HogQLParser.RULE_keywordForAlias - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitKeywordForAlias"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitKeywordForAlias" ): return visitor.visitKeywordForAlias(self) else: return visitor.visitChildren(self) + + + def keywordForAlias(self): localctx = HogQLParser.KeywordForAliasContext(self, self._ctx, self.state) self.enterRule(localctx, 110, self.RULE_keywordForAlias) - self._la = 0 # Token type + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 906 _la = self._input.LA(1) - if not (((((_la - 36)) & ~0x3F) == 0 and ((1 << (_la - 36)) & 36030996109328385) != 0)): + if not(((((_la - 36)) & ~0x3f) == 0 and ((1 << (_la - 36)) & 36030996109328385) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -16283,10 +7590,11 @@ def keywordForAlias(self): self.exitRule() return localctx + class AliasContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -16294,17 +7602,21 @@ def IDENTIFIER(self): return self.getToken(HogQLParser.IDENTIFIER, 0) def keywordForAlias(self): - return self.getTypedRuleContext(HogQLParser.KeywordForAliasContext, 0) + return self.getTypedRuleContext(HogQLParser.KeywordForAliasContext,0) + def getRuleIndex(self): return HogQLParser.RULE_alias - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitAlias"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitAlias" ): return visitor.visitAlias(self) else: return visitor.visitChildren(self) + + + def alias(self): localctx = HogQLParser.AliasContext(self, self._ctx, self.state) @@ -16334,10 +7646,11 @@ def alias(self): self.exitRule() return localctx + class IdentifierContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -16345,20 +7658,25 @@ def IDENTIFIER(self): return self.getToken(HogQLParser.IDENTIFIER, 0) def interval(self): - return self.getTypedRuleContext(HogQLParser.IntervalContext, 0) + return self.getTypedRuleContext(HogQLParser.IntervalContext,0) + def keyword(self): - return self.getTypedRuleContext(HogQLParser.KeywordContext, 0) + return self.getTypedRuleContext(HogQLParser.KeywordContext,0) + def getRuleIndex(self): return HogQLParser.RULE_identifier - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitIdentifier"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitIdentifier" ): return visitor.visitIdentifier(self) else: return visitor.visitChildren(self) + + + def identifier(self): localctx = HogQLParser.IdentifierContext(self, self._ctx, self.state) @@ -16377,186 +7695,7 @@ def identifier(self): self.state = 913 self.interval() pass - elif token in [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 77, - 78, - 79, - 80, - 81, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 109, - 111, - 112, - 114, - 115, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 186, - 187, - 188, - 189, - 191, - 192, - ]: + elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 109, 111, 112, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 191, 192]: self.enterOuterAlt(localctx, 3) self.state = 914 self.keyword() @@ -16572,10 +7711,11 @@ def identifier(self): self.exitRule() return localctx + class EnumValueContext(ParserRuleContext): - __slots__ = "parser" + __slots__ = 'parser' - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser @@ -16586,17 +7726,21 @@ def EQ_SINGLE(self): return self.getToken(HogQLParser.EQ_SINGLE, 0) def numberLiteral(self): - return self.getTypedRuleContext(HogQLParser.NumberLiteralContext, 0) + return self.getTypedRuleContext(HogQLParser.NumberLiteralContext,0) + def getRuleIndex(self): return HogQLParser.RULE_enumValue - def accept(self, visitor: ParseTreeVisitor): - if hasattr(visitor, "visitEnumValue"): + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitEnumValue" ): return visitor.visitEnumValue(self) else: return visitor.visitChildren(self) + + + def enumValue(self): localctx = HogQLParser.EnumValueContext(self, self._ctx, self.state) @@ -16617,7 +7761,9 @@ def enumValue(self): self.exitRule() return localctx - def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int): + + + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): if self._predicates == None: self._predicates = dict() self._predicates[18] = self.joinExpr_sempred @@ -16629,53 +7775,73 @@ def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int): else: return pred(localctx, predIndex) - def joinExpr_sempred(self, localctx: JoinExprContext, predIndex: int): - if predIndex == 0: - return self.precpred(self._ctx, 3) + def joinExpr_sempred(self, localctx:JoinExprContext, predIndex:int): + if predIndex == 0: + return self.precpred(self._ctx, 3) + + + if predIndex == 1: + return self.precpred(self._ctx, 4) + + + def columnExpr_sempred(self, localctx:ColumnExprContext, predIndex:int): + if predIndex == 2: + return self.precpred(self._ctx, 17) + + + if predIndex == 3: + return self.precpred(self._ctx, 16) + + + if predIndex == 4: + return self.precpred(self._ctx, 15) + - if predIndex == 1: - return self.precpred(self._ctx, 4) + if predIndex == 5: + return self.precpred(self._ctx, 13) + - def columnExpr_sempred(self, localctx: ColumnExprContext, predIndex: int): - if predIndex == 2: - return self.precpred(self._ctx, 17) + if predIndex == 6: + return self.precpred(self._ctx, 11) + - if predIndex == 3: - return self.precpred(self._ctx, 16) + if predIndex == 7: + return self.precpred(self._ctx, 10) + - if predIndex == 4: - return self.precpred(self._ctx, 15) + if predIndex == 8: + return self.precpred(self._ctx, 9) + - if predIndex == 5: - return self.precpred(self._ctx, 13) + if predIndex == 9: + return self.precpred(self._ctx, 8) + - if predIndex == 6: - return self.precpred(self._ctx, 11) + if predIndex == 10: + return self.precpred(self._ctx, 21) + - if predIndex == 7: - return self.precpred(self._ctx, 10) + if predIndex == 11: + return self.precpred(self._ctx, 20) + - if predIndex == 8: - return self.precpred(self._ctx, 9) + if predIndex == 12: + return self.precpred(self._ctx, 19) + - if predIndex == 9: - return self.precpred(self._ctx, 8) + if predIndex == 13: + return self.precpred(self._ctx, 14) + - if predIndex == 10: - return self.precpred(self._ctx, 21) + if predIndex == 14: + return self.precpred(self._ctx, 7) + - if predIndex == 11: - return self.precpred(self._ctx, 20) + def tableExpr_sempred(self, localctx:TableExprContext, predIndex:int): + if predIndex == 15: + return self.precpred(self._ctx, 2) + - if predIndex == 12: - return self.precpred(self._ctx, 19) - if predIndex == 13: - return self.precpred(self._ctx, 14) - if predIndex == 14: - return self.precpred(self._ctx, 7) - def tableExpr_sempred(self, localctx: TableExprContext, predIndex: int): - if predIndex == 15: - return self.precpred(self._ctx, 2) diff --git a/posthog/hogql/grammar/HogQLParserVisitor.py b/posthog/hogql/grammar/HogQLParserVisitor.py index 4884ee340fe43..61c17aecae477 100644 --- a/posthog/hogql/grammar/HogQLParserVisitor.py +++ b/posthog/hogql/grammar/HogQLParserVisitor.py @@ -1,6 +1,5 @@ # Generated from HogQLParser.g4 by ANTLR 4.13.1 from antlr4 import * - if "." in __name__: from .HogQLParser import HogQLParser else: @@ -8,432 +7,537 @@ # This class defines a complete generic visitor for a parse tree produced by HogQLParser. - class HogQLParserVisitor(ParseTreeVisitor): # Visit a parse tree produced by HogQLParser#select. - def visitSelect(self, ctx: HogQLParser.SelectContext): + def visitSelect(self, ctx:HogQLParser.SelectContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#selectUnionStmt. - def visitSelectUnionStmt(self, ctx: HogQLParser.SelectUnionStmtContext): + def visitSelectUnionStmt(self, ctx:HogQLParser.SelectUnionStmtContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#selectStmtWithParens. - def visitSelectStmtWithParens(self, ctx: HogQLParser.SelectStmtWithParensContext): + def visitSelectStmtWithParens(self, ctx:HogQLParser.SelectStmtWithParensContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#selectStmt. - def visitSelectStmt(self, ctx: HogQLParser.SelectStmtContext): + def visitSelectStmt(self, ctx:HogQLParser.SelectStmtContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#withClause. - def visitWithClause(self, ctx: HogQLParser.WithClauseContext): + def visitWithClause(self, ctx:HogQLParser.WithClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#topClause. - def visitTopClause(self, ctx: HogQLParser.TopClauseContext): + def visitTopClause(self, ctx:HogQLParser.TopClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#fromClause. - def visitFromClause(self, ctx: HogQLParser.FromClauseContext): + def visitFromClause(self, ctx:HogQLParser.FromClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#arrayJoinClause. - def visitArrayJoinClause(self, ctx: HogQLParser.ArrayJoinClauseContext): + def visitArrayJoinClause(self, ctx:HogQLParser.ArrayJoinClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#windowClause. - def visitWindowClause(self, ctx: HogQLParser.WindowClauseContext): + def visitWindowClause(self, ctx:HogQLParser.WindowClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#prewhereClause. - def visitPrewhereClause(self, ctx: HogQLParser.PrewhereClauseContext): + def visitPrewhereClause(self, ctx:HogQLParser.PrewhereClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#whereClause. - def visitWhereClause(self, ctx: HogQLParser.WhereClauseContext): + def visitWhereClause(self, ctx:HogQLParser.WhereClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#groupByClause. - def visitGroupByClause(self, ctx: HogQLParser.GroupByClauseContext): + def visitGroupByClause(self, ctx:HogQLParser.GroupByClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#havingClause. - def visitHavingClause(self, ctx: HogQLParser.HavingClauseContext): + def visitHavingClause(self, ctx:HogQLParser.HavingClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#orderByClause. - def visitOrderByClause(self, ctx: HogQLParser.OrderByClauseContext): + def visitOrderByClause(self, ctx:HogQLParser.OrderByClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#projectionOrderByClause. - def visitProjectionOrderByClause(self, ctx: HogQLParser.ProjectionOrderByClauseContext): + def visitProjectionOrderByClause(self, ctx:HogQLParser.ProjectionOrderByClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#limitAndOffsetClause. - def visitLimitAndOffsetClause(self, ctx: HogQLParser.LimitAndOffsetClauseContext): + def visitLimitAndOffsetClause(self, ctx:HogQLParser.LimitAndOffsetClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#offsetOnlyClause. - def visitOffsetOnlyClause(self, ctx: HogQLParser.OffsetOnlyClauseContext): + def visitOffsetOnlyClause(self, ctx:HogQLParser.OffsetOnlyClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#settingsClause. - def visitSettingsClause(self, ctx: HogQLParser.SettingsClauseContext): + def visitSettingsClause(self, ctx:HogQLParser.SettingsClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#JoinExprOp. - def visitJoinExprOp(self, ctx: HogQLParser.JoinExprOpContext): + def visitJoinExprOp(self, ctx:HogQLParser.JoinExprOpContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#JoinExprTable. - def visitJoinExprTable(self, ctx: HogQLParser.JoinExprTableContext): + def visitJoinExprTable(self, ctx:HogQLParser.JoinExprTableContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#JoinExprParens. - def visitJoinExprParens(self, ctx: HogQLParser.JoinExprParensContext): + def visitJoinExprParens(self, ctx:HogQLParser.JoinExprParensContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#JoinExprCrossOp. - def visitJoinExprCrossOp(self, ctx: HogQLParser.JoinExprCrossOpContext): + def visitJoinExprCrossOp(self, ctx:HogQLParser.JoinExprCrossOpContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#JoinOpInner. - def visitJoinOpInner(self, ctx: HogQLParser.JoinOpInnerContext): + def visitJoinOpInner(self, ctx:HogQLParser.JoinOpInnerContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#JoinOpLeftRight. - def visitJoinOpLeftRight(self, ctx: HogQLParser.JoinOpLeftRightContext): + def visitJoinOpLeftRight(self, ctx:HogQLParser.JoinOpLeftRightContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#JoinOpFull. - def visitJoinOpFull(self, ctx: HogQLParser.JoinOpFullContext): + def visitJoinOpFull(self, ctx:HogQLParser.JoinOpFullContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#joinOpCross. - def visitJoinOpCross(self, ctx: HogQLParser.JoinOpCrossContext): + def visitJoinOpCross(self, ctx:HogQLParser.JoinOpCrossContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#joinConstraintClause. - def visitJoinConstraintClause(self, ctx: HogQLParser.JoinConstraintClauseContext): + def visitJoinConstraintClause(self, ctx:HogQLParser.JoinConstraintClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#sampleClause. - def visitSampleClause(self, ctx: HogQLParser.SampleClauseContext): + def visitSampleClause(self, ctx:HogQLParser.SampleClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#orderExprList. - def visitOrderExprList(self, ctx: HogQLParser.OrderExprListContext): + def visitOrderExprList(self, ctx:HogQLParser.OrderExprListContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#orderExpr. - def visitOrderExpr(self, ctx: HogQLParser.OrderExprContext): + def visitOrderExpr(self, ctx:HogQLParser.OrderExprContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ratioExpr. - def visitRatioExpr(self, ctx: HogQLParser.RatioExprContext): + def visitRatioExpr(self, ctx:HogQLParser.RatioExprContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#settingExprList. - def visitSettingExprList(self, ctx: HogQLParser.SettingExprListContext): + def visitSettingExprList(self, ctx:HogQLParser.SettingExprListContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#settingExpr. - def visitSettingExpr(self, ctx: HogQLParser.SettingExprContext): + def visitSettingExpr(self, ctx:HogQLParser.SettingExprContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#windowExpr. - def visitWindowExpr(self, ctx: HogQLParser.WindowExprContext): + def visitWindowExpr(self, ctx:HogQLParser.WindowExprContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#winPartitionByClause. - def visitWinPartitionByClause(self, ctx: HogQLParser.WinPartitionByClauseContext): + def visitWinPartitionByClause(self, ctx:HogQLParser.WinPartitionByClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#winOrderByClause. - def visitWinOrderByClause(self, ctx: HogQLParser.WinOrderByClauseContext): + def visitWinOrderByClause(self, ctx:HogQLParser.WinOrderByClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#winFrameClause. - def visitWinFrameClause(self, ctx: HogQLParser.WinFrameClauseContext): + def visitWinFrameClause(self, ctx:HogQLParser.WinFrameClauseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#frameStart. - def visitFrameStart(self, ctx: HogQLParser.FrameStartContext): + def visitFrameStart(self, ctx:HogQLParser.FrameStartContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#frameBetween. - def visitFrameBetween(self, ctx: HogQLParser.FrameBetweenContext): + def visitFrameBetween(self, ctx:HogQLParser.FrameBetweenContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#winFrameBound. - def visitWinFrameBound(self, ctx: HogQLParser.WinFrameBoundContext): + def visitWinFrameBound(self, ctx:HogQLParser.WinFrameBoundContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#expr. - def visitExpr(self, ctx: HogQLParser.ExprContext): + def visitExpr(self, ctx:HogQLParser.ExprContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnTypeExprSimple. - def visitColumnTypeExprSimple(self, ctx: HogQLParser.ColumnTypeExprSimpleContext): + def visitColumnTypeExprSimple(self, ctx:HogQLParser.ColumnTypeExprSimpleContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnTypeExprNested. - def visitColumnTypeExprNested(self, ctx: HogQLParser.ColumnTypeExprNestedContext): + def visitColumnTypeExprNested(self, ctx:HogQLParser.ColumnTypeExprNestedContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnTypeExprEnum. - def visitColumnTypeExprEnum(self, ctx: HogQLParser.ColumnTypeExprEnumContext): + def visitColumnTypeExprEnum(self, ctx:HogQLParser.ColumnTypeExprEnumContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnTypeExprComplex. - def visitColumnTypeExprComplex(self, ctx: HogQLParser.ColumnTypeExprComplexContext): + def visitColumnTypeExprComplex(self, ctx:HogQLParser.ColumnTypeExprComplexContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnTypeExprParam. - def visitColumnTypeExprParam(self, ctx: HogQLParser.ColumnTypeExprParamContext): + def visitColumnTypeExprParam(self, ctx:HogQLParser.ColumnTypeExprParamContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#columnExprList. - def visitColumnExprList(self, ctx: HogQLParser.ColumnExprListContext): + def visitColumnExprList(self, ctx:HogQLParser.ColumnExprListContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprTernaryOp. - def visitColumnExprTernaryOp(self, ctx: HogQLParser.ColumnExprTernaryOpContext): + def visitColumnExprTernaryOp(self, ctx:HogQLParser.ColumnExprTernaryOpContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprAlias. - def visitColumnExprAlias(self, ctx: HogQLParser.ColumnExprAliasContext): + def visitColumnExprAlias(self, ctx:HogQLParser.ColumnExprAliasContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprExtract. - def visitColumnExprExtract(self, ctx: HogQLParser.ColumnExprExtractContext): + def visitColumnExprExtract(self, ctx:HogQLParser.ColumnExprExtractContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprNegate. - def visitColumnExprNegate(self, ctx: HogQLParser.ColumnExprNegateContext): + def visitColumnExprNegate(self, ctx:HogQLParser.ColumnExprNegateContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprSubquery. - def visitColumnExprSubquery(self, ctx: HogQLParser.ColumnExprSubqueryContext): + def visitColumnExprSubquery(self, ctx:HogQLParser.ColumnExprSubqueryContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprLiteral. - def visitColumnExprLiteral(self, ctx: HogQLParser.ColumnExprLiteralContext): + def visitColumnExprLiteral(self, ctx:HogQLParser.ColumnExprLiteralContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprArray. - def visitColumnExprArray(self, ctx: HogQLParser.ColumnExprArrayContext): + def visitColumnExprArray(self, ctx:HogQLParser.ColumnExprArrayContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprSubstring. - def visitColumnExprSubstring(self, ctx: HogQLParser.ColumnExprSubstringContext): + def visitColumnExprSubstring(self, ctx:HogQLParser.ColumnExprSubstringContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprCast. - def visitColumnExprCast(self, ctx: HogQLParser.ColumnExprCastContext): + def visitColumnExprCast(self, ctx:HogQLParser.ColumnExprCastContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprOr. - def visitColumnExprOr(self, ctx: HogQLParser.ColumnExprOrContext): + def visitColumnExprOr(self, ctx:HogQLParser.ColumnExprOrContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprPrecedence1. - def visitColumnExprPrecedence1(self, ctx: HogQLParser.ColumnExprPrecedence1Context): + def visitColumnExprPrecedence1(self, ctx:HogQLParser.ColumnExprPrecedence1Context): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprPrecedence2. - def visitColumnExprPrecedence2(self, ctx: HogQLParser.ColumnExprPrecedence2Context): + def visitColumnExprPrecedence2(self, ctx:HogQLParser.ColumnExprPrecedence2Context): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprPrecedence3. - def visitColumnExprPrecedence3(self, ctx: HogQLParser.ColumnExprPrecedence3Context): + def visitColumnExprPrecedence3(self, ctx:HogQLParser.ColumnExprPrecedence3Context): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprInterval. - def visitColumnExprInterval(self, ctx: HogQLParser.ColumnExprIntervalContext): + def visitColumnExprInterval(self, ctx:HogQLParser.ColumnExprIntervalContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprIsNull. - def visitColumnExprIsNull(self, ctx: HogQLParser.ColumnExprIsNullContext): + def visitColumnExprIsNull(self, ctx:HogQLParser.ColumnExprIsNullContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprWinFunctionTarget. - def visitColumnExprWinFunctionTarget(self, ctx: HogQLParser.ColumnExprWinFunctionTargetContext): + def visitColumnExprWinFunctionTarget(self, ctx:HogQLParser.ColumnExprWinFunctionTargetContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprTrim. - def visitColumnExprTrim(self, ctx: HogQLParser.ColumnExprTrimContext): + def visitColumnExprTrim(self, ctx:HogQLParser.ColumnExprTrimContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprTuple. - def visitColumnExprTuple(self, ctx: HogQLParser.ColumnExprTupleContext): + def visitColumnExprTuple(self, ctx:HogQLParser.ColumnExprTupleContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprArrayAccess. - def visitColumnExprArrayAccess(self, ctx: HogQLParser.ColumnExprArrayAccessContext): + def visitColumnExprArrayAccess(self, ctx:HogQLParser.ColumnExprArrayAccessContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprBetween. - def visitColumnExprBetween(self, ctx: HogQLParser.ColumnExprBetweenContext): + def visitColumnExprBetween(self, ctx:HogQLParser.ColumnExprBetweenContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprPropertyAccess. - def visitColumnExprPropertyAccess(self, ctx: HogQLParser.ColumnExprPropertyAccessContext): + def visitColumnExprPropertyAccess(self, ctx:HogQLParser.ColumnExprPropertyAccessContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprParens. - def visitColumnExprParens(self, ctx: HogQLParser.ColumnExprParensContext): + def visitColumnExprParens(self, ctx:HogQLParser.ColumnExprParensContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprTimestamp. - def visitColumnExprTimestamp(self, ctx: HogQLParser.ColumnExprTimestampContext): + def visitColumnExprTimestamp(self, ctx:HogQLParser.ColumnExprTimestampContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprNullish. - def visitColumnExprNullish(self, ctx: HogQLParser.ColumnExprNullishContext): + def visitColumnExprNullish(self, ctx:HogQLParser.ColumnExprNullishContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprAnd. - def visitColumnExprAnd(self, ctx: HogQLParser.ColumnExprAndContext): + def visitColumnExprAnd(self, ctx:HogQLParser.ColumnExprAndContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprTupleAccess. - def visitColumnExprTupleAccess(self, ctx: HogQLParser.ColumnExprTupleAccessContext): + def visitColumnExprTupleAccess(self, ctx:HogQLParser.ColumnExprTupleAccessContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprCase. - def visitColumnExprCase(self, ctx: HogQLParser.ColumnExprCaseContext): + def visitColumnExprCase(self, ctx:HogQLParser.ColumnExprCaseContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprDate. - def visitColumnExprDate(self, ctx: HogQLParser.ColumnExprDateContext): + def visitColumnExprDate(self, ctx:HogQLParser.ColumnExprDateContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprNot. - def visitColumnExprNot(self, ctx: HogQLParser.ColumnExprNotContext): + def visitColumnExprNot(self, ctx:HogQLParser.ColumnExprNotContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprWinFunction. - def visitColumnExprWinFunction(self, ctx: HogQLParser.ColumnExprWinFunctionContext): + def visitColumnExprWinFunction(self, ctx:HogQLParser.ColumnExprWinFunctionContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprIdentifier. - def visitColumnExprIdentifier(self, ctx: HogQLParser.ColumnExprIdentifierContext): + def visitColumnExprIdentifier(self, ctx:HogQLParser.ColumnExprIdentifierContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprFunction. - def visitColumnExprFunction(self, ctx: HogQLParser.ColumnExprFunctionContext): + def visitColumnExprFunction(self, ctx:HogQLParser.ColumnExprFunctionContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#ColumnExprAsterisk. - def visitColumnExprAsterisk(self, ctx: HogQLParser.ColumnExprAsteriskContext): + def visitColumnExprAsterisk(self, ctx:HogQLParser.ColumnExprAsteriskContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#columnArgList. - def visitColumnArgList(self, ctx: HogQLParser.ColumnArgListContext): + def visitColumnArgList(self, ctx:HogQLParser.ColumnArgListContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#columnArgExpr. - def visitColumnArgExpr(self, ctx: HogQLParser.ColumnArgExprContext): + def visitColumnArgExpr(self, ctx:HogQLParser.ColumnArgExprContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#columnLambdaExpr. - def visitColumnLambdaExpr(self, ctx: HogQLParser.ColumnLambdaExprContext): + def visitColumnLambdaExpr(self, ctx:HogQLParser.ColumnLambdaExprContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#withExprList. - def visitWithExprList(self, ctx: HogQLParser.WithExprListContext): + def visitWithExprList(self, ctx:HogQLParser.WithExprListContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#WithExprSubquery. - def visitWithExprSubquery(self, ctx: HogQLParser.WithExprSubqueryContext): + def visitWithExprSubquery(self, ctx:HogQLParser.WithExprSubqueryContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#WithExprColumn. - def visitWithExprColumn(self, ctx: HogQLParser.WithExprColumnContext): + def visitWithExprColumn(self, ctx:HogQLParser.WithExprColumnContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#columnIdentifier. - def visitColumnIdentifier(self, ctx: HogQLParser.ColumnIdentifierContext): + def visitColumnIdentifier(self, ctx:HogQLParser.ColumnIdentifierContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#nestedIdentifier. - def visitNestedIdentifier(self, ctx: HogQLParser.NestedIdentifierContext): + def visitNestedIdentifier(self, ctx:HogQLParser.NestedIdentifierContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#TableExprIdentifier. - def visitTableExprIdentifier(self, ctx: HogQLParser.TableExprIdentifierContext): + def visitTableExprIdentifier(self, ctx:HogQLParser.TableExprIdentifierContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#TableExprPlaceholder. - def visitTableExprPlaceholder(self, ctx: HogQLParser.TableExprPlaceholderContext): + def visitTableExprPlaceholder(self, ctx:HogQLParser.TableExprPlaceholderContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#TableExprSubquery. - def visitTableExprSubquery(self, ctx: HogQLParser.TableExprSubqueryContext): + def visitTableExprSubquery(self, ctx:HogQLParser.TableExprSubqueryContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#TableExprAlias. - def visitTableExprAlias(self, ctx: HogQLParser.TableExprAliasContext): + def visitTableExprAlias(self, ctx:HogQLParser.TableExprAliasContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#TableExprFunction. - def visitTableExprFunction(self, ctx: HogQLParser.TableExprFunctionContext): + def visitTableExprFunction(self, ctx:HogQLParser.TableExprFunctionContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#tableFunctionExpr. - def visitTableFunctionExpr(self, ctx: HogQLParser.TableFunctionExprContext): + def visitTableFunctionExpr(self, ctx:HogQLParser.TableFunctionExprContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#tableIdentifier. - def visitTableIdentifier(self, ctx: HogQLParser.TableIdentifierContext): + def visitTableIdentifier(self, ctx:HogQLParser.TableIdentifierContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#tableArgList. - def visitTableArgList(self, ctx: HogQLParser.TableArgListContext): + def visitTableArgList(self, ctx:HogQLParser.TableArgListContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#databaseIdentifier. - def visitDatabaseIdentifier(self, ctx: HogQLParser.DatabaseIdentifierContext): + def visitDatabaseIdentifier(self, ctx:HogQLParser.DatabaseIdentifierContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#floatingLiteral. - def visitFloatingLiteral(self, ctx: HogQLParser.FloatingLiteralContext): + def visitFloatingLiteral(self, ctx:HogQLParser.FloatingLiteralContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#numberLiteral. - def visitNumberLiteral(self, ctx: HogQLParser.NumberLiteralContext): + def visitNumberLiteral(self, ctx:HogQLParser.NumberLiteralContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#literal. - def visitLiteral(self, ctx: HogQLParser.LiteralContext): + def visitLiteral(self, ctx:HogQLParser.LiteralContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#interval. - def visitInterval(self, ctx: HogQLParser.IntervalContext): + def visitInterval(self, ctx:HogQLParser.IntervalContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#keyword. - def visitKeyword(self, ctx: HogQLParser.KeywordContext): + def visitKeyword(self, ctx:HogQLParser.KeywordContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#keywordForAlias. - def visitKeywordForAlias(self, ctx: HogQLParser.KeywordForAliasContext): + def visitKeywordForAlias(self, ctx:HogQLParser.KeywordForAliasContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#alias. - def visitAlias(self, ctx: HogQLParser.AliasContext): + def visitAlias(self, ctx:HogQLParser.AliasContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#identifier. - def visitIdentifier(self, ctx: HogQLParser.IdentifierContext): + def visitIdentifier(self, ctx:HogQLParser.IdentifierContext): return self.visitChildren(ctx) + # Visit a parse tree produced by HogQLParser#enumValue. - def visitEnumValue(self, ctx: HogQLParser.EnumValueContext): + def visitEnumValue(self, ctx:HogQLParser.EnumValueContext): return self.visitChildren(ctx) -del HogQLParser + +del HogQLParser \ No newline at end of file From e3999a401d6058d93d3deefea2e1936b1653e3d3 Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Mon, 30 Oct 2023 17:44:42 +0000 Subject: [PATCH 10/10] Run format --- posthog/hogql_queries/sessions_timeline_query_runner.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/posthog/hogql_queries/sessions_timeline_query_runner.py b/posthog/hogql_queries/sessions_timeline_query_runner.py index 7d9d1d29a1646..abea2867e2b90 100644 --- a/posthog/hogql_queries/sessions_timeline_query_runner.py +++ b/posthog/hogql_queries/sessions_timeline_query_runner.py @@ -160,9 +160,7 @@ def calculate(self) -> SessionsTimelineQueryResponse: formal_session_id, informal_session_id, recording_duration_s, - ) in reversed( - query_result.results[: self.EVENT_LIMIT] - ): # The last result is a marker of more results + ) in reversed(query_result.results[: self.EVENT_LIMIT]): # The last result is a marker of more results entry_id = str(formal_session_id or informal_session_id) if entry_id not in timeline_entries_map: timeline_entries_map[entry_id] = TimelineEntry(