From 4d2b8dc4f2e908821dfb34d4ffc14244fce83c41 Mon Sep 17 00:00:00 2001
From: Nhat Nguyen
Date: Mon, 24 Feb 2025 08:49:54 -0800
Subject: [PATCH 01/10] Fix early termination in LuceneSourceOperator (#123197)
The LuceneSourceOperator is supposed to terminate when it reaches the
limit; unfortunately, we don't have a test to cover this. Due to this
bug, we continue scanning all segments, even though we discard the
results as the limit was reached. This can cause performance issues for
simple queries like FROM .. | LIMIT 10, when Lucene indices are on the
warm or cold tier. I will submit a follow-up PR to ensure we only
collect up to the limit across multiple drivers.
---
docs/changelog/123197.yaml | 5 +++++
.../compute/lucene/LuceneSourceOperator.java | 2 +-
.../lucene/LuceneSourceOperatorTests.java | 22 +++++++++++++++++++
3 files changed, 28 insertions(+), 1 deletion(-)
create mode 100644 docs/changelog/123197.yaml
diff --git a/docs/changelog/123197.yaml b/docs/changelog/123197.yaml
new file mode 100644
index 000000000000..ffb4bab79fe8
--- /dev/null
+++ b/docs/changelog/123197.yaml
@@ -0,0 +1,5 @@
+pr: 123197
+summary: Fix early termination in `LuceneSourceOperator`
+area: ES|QL
+type: bug
+issues: []
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneSourceOperator.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneSourceOperator.java
index 3d34067e1a83..61a7cbad3e8a 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneSourceOperator.java
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneSourceOperator.java
@@ -140,7 +140,7 @@ public class LuceneSourceOperator extends LuceneOperator {
@Override
public boolean isFinished() {
- return doneCollecting;
+ return doneCollecting || remainingDocs <= 0;
}
@Override
diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneSourceOperatorTests.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneSourceOperatorTests.java
index 574f9b25ff14..42c9f49a2db7 100644
--- a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneSourceOperatorTests.java
+++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/LuceneSourceOperatorTests.java
@@ -25,6 +25,7 @@ import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.Driver;
import org.elasticsearch.compute.operator.DriverContext;
import org.elasticsearch.compute.operator.Operator;
+import org.elasticsearch.compute.operator.SourceOperator;
import org.elasticsearch.compute.test.AnyOperatorTestCase;
import org.elasticsearch.compute.test.OperatorTestCase;
import org.elasticsearch.compute.test.TestResultPageSinkOperator;
@@ -117,6 +118,27 @@ public class LuceneSourceOperatorTests extends AnyOperatorTestCase {
testSimple(driverContext(), size, limit);
}
+ public void testEarlyTermination() {
+ int size = between(1_000, 20_000);
+ int limit = between(10, size);
+ LuceneSourceOperator.Factory factory = simple(randomFrom(DataPartitioning.values()), size, limit, scoring);
+ try (SourceOperator sourceOperator = factory.get(driverContext())) {
+ assertFalse(sourceOperator.isFinished());
+ int collected = 0;
+ while (sourceOperator.isFinished() == false) {
+ Page page = sourceOperator.getOutput();
+ if (page != null) {
+ collected += page.getPositionCount();
+ page.releaseBlocks();
+ }
+ if (collected >= limit) {
+ assertTrue("source operator is not finished after reaching limit", sourceOperator.isFinished());
+ assertThat(collected, equalTo(limit));
+ }
+ }
+ }
+ }
+
public void testEmpty() {
testSimple(driverContext(), 0, between(10, 10_000));
}
From d007dae1ada91c20d452bb9046390b62c841cb88 Mon Sep 17 00:00:00 2001
From: David Turner
Date: Mon, 24 Feb 2025 17:08:31 +0000
Subject: [PATCH 02/10] Remove redundant `IndexNameExpressionResolver` params
(#123258)
Follow-up to #120531 to remove all the now-redundant constructor
parameters.
---
.../MigrateToDataStreamTransportAction.java | 2 -
.../PromoteDataStreamTransportAction.java | 2 -
...portGetDataStreamLifecycleStatsAction.java | 2 -
...etDataStreamLifecycleStatsActionTests.java | 2 -
...portDeleteDatabaseConfigurationAction.java | 4 +-
...ansportPutDatabaseConfigurationAction.java | 4 +-
...ansportClusterAllocationExplainAction.java | 2 -
.../TransportDeleteDesiredBalanceAction.java | 2 -
.../TransportGetAllocationStatsAction.java | 2 -
.../TransportGetDesiredBalanceAction.java | 2 -
...nsportAddVotingConfigExclusionsAction.java | 2 -
...portClearVotingConfigExclusionsAction.java | 2 -
.../TransportDeleteDesiredNodesAction.java | 4 +-
.../TransportGetDesiredNodesAction.java | 4 +-
...ransportGetFeatureUpgradeStatusAction.java | 2 -
.../TransportPostFeatureUpgradeAction.java | 2 -
...TransportPrevalidateNodeRemovalAction.java | 2 -
.../TransportCleanupRepositoryAction.java | 4 +-
.../TransportDeleteRepositoryAction.java | 4 +-
.../get/TransportGetRepositoriesAction.java | 4 +-
.../put/TransportPutRepositoryAction.java | 4 +-
.../TransportVerifyRepositoryAction.java | 4 +-
.../TransportClusterRerouteAction.java | 4 +-
.../TransportClusterUpdateSettingsAction.java | 2 -
.../clone/TransportCloneSnapshotAction.java | 4 +-
.../create/TransportCreateSnapshotAction.java | 4 +-
.../delete/TransportDeleteSnapshotAction.java | 4 +-
.../TransportResetFeatureStateAction.java | 4 +-
.../TransportSnapshottableFeaturesAction.java | 2 -
.../get/TransportGetSnapshotsAction.java | 4 +-
.../TransportGetShardSnapshotAction.java | 4 +-
.../TransportRestoreSnapshotAction.java | 4 +-
.../TransportSnapshotsStatusAction.java | 4 +-
.../TransportDeleteStoredScriptAction.java | 4 +-
.../TransportGetStoredScriptAction.java | 4 +-
.../TransportPutStoredScriptAction.java | 2 -
.../TransportPendingClusterTasksAction.java | 4 +-
.../indices/create/AutoCreateAction.java | 1 -
.../create/TransportCreateIndexAction.java | 1 -
.../TransportDeleteDanglingIndexAction.java | 2 -
.../indices/shrink/TransportResizeAction.java | 13 +---
...ransportDeleteComponentTemplateAction.java | 4 +-
...rtDeleteComposableIndexTemplateAction.java | 4 +-
.../TransportDeleteIndexTemplateAction.java | 4 +-
.../TransportPutComponentTemplateAction.java | 2 -
...sportPutComposableIndexTemplateAction.java | 4 +-
.../put/TransportPutIndexTemplateAction.java | 2 -
.../ingest/DeletePipelineTransportAction.java | 4 +-
.../CompletionPersistentTaskAction.java | 4 +-
.../RemovePersistentTaskAction.java | 4 +-
.../persistent/StartPersistentTaskAction.java | 4 +-
.../UpdatePersistentTaskStatusAction.java | 4 +-
.../snapshots/SnapshotsService.java | 11 +---
...rtClusterAllocationExplainActionTests.java | 1 -
...nsportDeleteDesiredBalanceActionTests.java | 3 -
...ransportGetAllocationStatsActionTests.java | 1 -
...TransportGetDesiredBalanceActionTests.java | 3 -
...tAddVotingConfigExclusionsActionTests.java | 2 -
...learVotingConfigExclusionsActionTests.java | 2 -
.../ClusterUpdateSettingsRequestTests.java | 2 -
.../TransportCreateIndexActionTests.java | 5 --
...vedComposableIndexTemplateActionTests.java | 13 ++--
.../indices/cluster/ClusterStateChanges.java | 4 +-
.../snapshots/SnapshotResiliencyTests.java | 64 ++-----------------
.../action/AnalyticsUsageTransportAction.java | 2 -
.../AnalyticsInfoTransportActionTests.java | 2 -
...ransportDeleteAutoscalingPolicyAction.java | 4 +-
...TransportGetAutoscalingCapacityAction.java | 2 -
.../TransportGetAutoscalingPolicyAction.java | 2 -
.../TransportPutAutoscalingPolicyAction.java | 13 +---
...ortDeleteAutoscalingPolicyActionTests.java | 7 +-
...nsportGetAutoscalingPolicyActionTests.java | 3 -
...nsportPutAutoscalingPolicyActionTests.java | 3 -
.../xpack/ccr/CCRUsageTransportAction.java | 2 -
...nsportActivateAutoFollowPatternAction.java | 4 +-
.../ccr/action/TransportCcrStatsAction.java | 2 -
...ransportDeleteAutoFollowPatternAction.java | 4 +-
.../TransportGetAutoFollowPatternAction.java | 4 +-
.../action/TransportPauseFollowAction.java | 2 -
.../TransportPutAutoFollowPatternAction.java | 2 -
.../ccr/action/TransportPutFollowAction.java | 2 -
.../action/TransportResumeFollowAction.java | 2 -
.../ccr/action/TransportUnfollowAction.java | 2 -
.../ccr/CCRInfoTransportActionTests.java | 1 -
.../allocation/DataTierTelemetryPlugin.java | 4 +-
.../DataTiersUsageRestCancellationIT.java | 4 +-
.../action/XPackUsageRestCancellationIT.java | 10 +--
.../license/TransportDeleteLicenseAction.java | 4 +-
.../TransportGetBasicStatusAction.java | 4 +-
.../license/TransportGetLicenseAction.java | 2 -
.../TransportGetTrialStatusAction.java | 2 -
.../TransportPostStartBasicAction.java | 4 +-
.../TransportPostStartTrialAction.java | 4 +-
.../license/TransportPutLicenseAction.java | 4 +-
.../core/HealthApiUsageTransportAction.java | 2 -
.../RemoteClusterUsageTransportAction.java | 4 +-
.../AbstractTransportSetResetModeAction.java | 4 +-
...AbstractTransportSetUpgradeModeAction.java | 4 +-
...taStreamLifecycleUsageTransportAction.java | 2 -
.../DataStreamUsageTransportAction.java | 2 -
.../action/TransportXPackUsageAction.java | 2 -
.../DataTiersUsageTransportAction.java | 2 -
.../UpdateIndexMigrationVersionAction.java | 4 +-
...actTransportSetUpgradeModeActionTests.java | 4 +-
.../downsample/TransportDownsampleAction.java | 2 -
.../action/EnrichUsageTransportAction.java | 4 +-
.../TransportExecuteEnrichPolicyAction.java | 2 -
.../EnterpriseSearchUsageTransportAction.java | 2 -
...nsportDeleteAnalyticsCollectionAction.java | 2 -
...TransportGetAnalyticsCollectionAction.java | 2 -
...TransportPutAnalyticsCollectionAction.java | 2 -
.../xpack/eql/EqlUsageTransportAction.java | 2 -
.../eql/EqlInfoTransportActionTests.java | 9 +--
.../xpack/esql/EsqlUsageTransportAction.java | 2 -
.../esql/EsqlInfoTransportActionTests.java | 9 +--
.../FrozenIndicesUsageTransportAction.java | 4 +-
.../graph/GraphUsageTransportAction.java | 2 -
.../graph/GraphInfoTransportActionTests.java | 2 -
.../IndexLifecycleUsageTransportAction.java | 4 +-
.../TransportDeleteLifecycleAction.java | 4 +-
.../ilm/action/TransportGetStatusAction.java | 4 +-
.../TransportMigrateToDataTiersAction.java | 2 -
.../ilm/action/TransportMoveToStepAction.java | 2 -
.../action/TransportPutLifecycleAction.java | 2 -
.../ilm/action/TransportRetryAction.java | 2 -
.../ilm/action/TransportStopILMAction.java | 4 +-
...ndexLifecycleInfoTransportActionTests.java | 2 +-
.../TransportDeleteLifecycleActionTests.java | 4 +-
.../TransportPutLifecycleActionTests.java | 2 -
.../action/TransportStopILMActionTests.java | 4 +-
...ransportDeleteInferenceEndpointAction.java | 2 -
.../action/TransportInferenceUsageAction.java | 2 -
.../TransportPutInferenceModelAction.java | 2 -
.../TransportUpdateInferenceModelAction.java | 2 -
...ortDeleteInferenceEndpointActionTests.java | 2 -
.../TransportInferenceUsageActionTests.java | 2 -
.../logsdb/LogsDBUsageTransportAction.java | 4 +-
.../LogstashUsageTransportAction.java | 2 -
.../LogstashInfoTransportActionTests.java | 1 -
...ortGetTrainedModelPackageConfigAction.java | 4 +-
.../TransportLoadTrainedModelPackage.java | 2 -
...TransportLoadTrainedModelPackageTests.java | 2 -
.../MachineLearningUsageTransportAction.java | 2 -
...ansportDeleteDataFrameAnalyticsAction.java | 2 -
.../action/TransportDeleteDatafeedAction.java | 2 -
.../ml/action/TransportDeleteJobAction.java | 2 -
.../TransportDeleteTrainedModelAction.java | 2 -
...ransportDeleteTrainedModelAliasAction.java | 4 +-
...ortDeleteTrainedModelAssignmentAction.java | 4 +-
.../TransportFinalizeJobExecutionAction.java | 2 -
...TransportFlushTrainedModelCacheAction.java | 2 -
.../action/TransportGetDatafeedsAction.java | 4 +-
...etJobModelSnapshotsUpgradeStatsAction.java | 2 -
.../ml/action/TransportGetJobsAction.java | 2 -
.../TransportGetMlAutoscalingStats.java | 2 -
.../ml/action/TransportMlMemoryAction.java | 2 -
.../ml/action/TransportOpenJobAction.java | 2 -
.../ml/action/TransportPutDatafeedAction.java | 2 -
.../ml/action/TransportPutJobAction.java | 2 -
.../TransportPutTrainedModelAction.java | 2 -
.../TransportPutTrainedModelAliasAction.java | 4 +-
...nsportPutTrainedModelVocabularyAction.java | 2 -
.../action/TransportSetResetModeAction.java | 6 +-
.../action/TransportSetUpgradeModeAction.java | 4 +-
.../action/TransportStartDatafeedAction.java | 1 -
...portStartTrainedModelDeploymentAction.java | 2 -
...ansportUpdateDataFrameAnalyticsAction.java | 2 -
.../action/TransportUpdateDatafeedAction.java | 2 -
.../ml/action/TransportUpdateJobAction.java | 2 -
...dateTrainedModelAssignmentStateAction.java | 4 +-
...ortUpdateTrainedModelDeploymentAction.java | 2 -
...ransportUpgradeJobModelSnapshotAction.java | 2 -
...chineLearningInfoTransportActionTests.java | 2 -
...nsportFinalizeJobExecutionActionTests.java | 2 -
...portFlushTrainedModelCacheActionTests.java | 2 -
.../TransportPutTrainedModelActionTests.java | 1 -
.../MonitoringUsageTransportAction.java | 2 -
...ransportMonitoringMigrateAlertsAction.java | 4 +-
.../monitoring/LocalStateMonitoring.java | 4 +-
.../MonitoringInfoTransportActionTests.java | 1 -
.../bwc/ArchiveUsageTransportAction.java | 2 -
.../action/ProfilingUsageTransportAction.java | 2 -
.../action/TransportGetStatusAction.java | 4 +-
.../action/RollupUsageTransportAction.java | 4 +-
.../action/TransportPutRollupJobAction.java | 2 -
.../RollupInfoTransportActionTests.java | 2 +-
...archableSnapshotsUsageTransportAction.java | 2 -
...ransportMountSearchableSnapshotAction.java | 2 -
.../SecurityUsageTransportAction.java | 2 -
.../TransportGetSecuritySettingsAction.java | 4 +-
...TransportUpdateSecuritySettingsAction.java | 4 +-
.../xpack/security/LocalStateSecurity.java | 4 +-
.../SecurityInfoTransportActionTests.java | 1 -
.../TransportDeleteShutdownNodeAction.java | 4 +-
.../TransportGetShutdownStatusAction.java | 2 -
.../TransportPutShutdownNodeAction.java | 4 +-
...ransportDeleteShutdownNodeActionTests.java | 11 +---
.../TransportPutShutdownNodeActionTests.java | 11 +---
.../xpack/slm/SLMUsageTransportAction.java | 4 +-
...ransportDeleteSnapshotLifecycleAction.java | 4 +-
...ansportExecuteSnapshotLifecycleAction.java | 2 -
...ansportExecuteSnapshotRetentionAction.java | 2 -
.../action/TransportGetSLMStatusAction.java | 4 +-
.../TransportGetSnapshotLifecycleAction.java | 4 +-
...nsportGetSnapshotLifecycleStatsAction.java | 4 +-
.../TransportPutSnapshotLifecycleAction.java | 4 +-
.../slm/action/TransportStartSLMAction.java | 4 +-
.../slm/action/TransportStopSLMAction.java | 4 +-
...vedSnapshotLifecycleStateServiceTests.java | 7 +-
.../action/TransportStopSLMActionTests.java | 4 +-
.../action/SpatialUsageTransportAction.java | 2 -
.../SpatialInfoTransportActionTests.java | 2 -
.../xpack/sql/SqlUsageTransportAction.java | 2 -
.../sql/SqlInfoTransportActionTests.java | 9 +--
.../TransformUsageTransportAction.java | 2 -
.../TransportDeleteTransformAction.java | 2 -
.../TransportSetTransformResetModeAction.java | 6 +-
...ransportSetTransformUpgradeModeAction.java | 12 +---
...ortSetTransformUpgradeModeActionTests.java | 1 -
.../VotingOnlyUsageTransportAction.java | 4 +-
.../watcher/WatcherUsageTransportAction.java | 2 -
.../TransportWatcherServiceAction.java | 4 +-
.../WatcherInfoTransportActionTests.java | 1 -
223 files changed, 118 insertions(+), 668 deletions(-)
diff --git a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/MigrateToDataStreamTransportAction.java b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/MigrateToDataStreamTransportAction.java
index 1c1edc694bef..c8b9a381c125 100644
--- a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/MigrateToDataStreamTransportAction.java
+++ b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/MigrateToDataStreamTransportAction.java
@@ -16,7 +16,6 @@ import org.elasticsearch.action.support.master.AcknowledgedTransportMasterNodeAc
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.MetadataCreateIndexService;
import org.elasticsearch.cluster.metadata.MetadataMigrateToDataStreamService;
import org.elasticsearch.cluster.service.ClusterService;
@@ -37,7 +36,6 @@ public class MigrateToDataStreamTransportAction extends AcknowledgedTransportMas
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
IndicesService indicesService,
MetadataCreateIndexService metadataCreateIndexService
) {
diff --git a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/PromoteDataStreamTransportAction.java b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/PromoteDataStreamTransportAction.java
index 574e4c532750..fa24249b020a 100644
--- a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/PromoteDataStreamTransportAction.java
+++ b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/action/PromoteDataStreamTransportAction.java
@@ -21,7 +21,6 @@ import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.DataStream;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Priority;
@@ -49,7 +48,6 @@ public class PromoteDataStreamTransportAction extends AcknowledgedTransportMaste
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
SystemIndices systemIndices
) {
super(
diff --git a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/lifecycle/action/TransportGetDataStreamLifecycleStatsAction.java b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/lifecycle/action/TransportGetDataStreamLifecycleStatsAction.java
index 5b973737e575..ba276c7718ad 100644
--- a/modules/data-streams/src/main/java/org/elasticsearch/datastreams/lifecycle/action/TransportGetDataStreamLifecycleStatsAction.java
+++ b/modules/data-streams/src/main/java/org/elasticsearch/datastreams/lifecycle/action/TransportGetDataStreamLifecycleStatsAction.java
@@ -15,7 +15,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.DataStream;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -46,7 +45,6 @@ public class TransportGetDataStreamLifecycleStatsAction extends TransportMasterN
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
DataStreamLifecycleService lifecycleService
) {
super(
diff --git a/modules/data-streams/src/test/java/org/elasticsearch/datastreams/lifecycle/action/TransportGetDataStreamLifecycleStatsActionTests.java b/modules/data-streams/src/test/java/org/elasticsearch/datastreams/lifecycle/action/TransportGetDataStreamLifecycleStatsActionTests.java
index 5bfd9fb25ca6..7e030e9b82b1 100644
--- a/modules/data-streams/src/test/java/org/elasticsearch/datastreams/lifecycle/action/TransportGetDataStreamLifecycleStatsActionTests.java
+++ b/modules/data-streams/src/test/java/org/elasticsearch/datastreams/lifecycle/action/TransportGetDataStreamLifecycleStatsActionTests.java
@@ -17,7 +17,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.DataStream;
import org.elasticsearch.cluster.metadata.DataStreamLifecycle;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
@@ -52,7 +51,6 @@ public class TransportGetDataStreamLifecycleStatsActionTests extends ESTestCase
mock(ClusterService.class),
mock(ThreadPool.class),
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
dataStreamLifecycleService
);
private Long lastRunDuration;
diff --git a/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/direct/TransportDeleteDatabaseConfigurationAction.java b/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/direct/TransportDeleteDatabaseConfigurationAction.java
index 41bd29b87602..66cb8d30bfa0 100644
--- a/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/direct/TransportDeleteDatabaseConfigurationAction.java
+++ b/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/direct/TransportDeleteDatabaseConfigurationAction.java
@@ -21,7 +21,6 @@ import org.elasticsearch.cluster.ClusterStateTaskListener;
import org.elasticsearch.cluster.SimpleBatchedExecutor;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.cluster.service.MasterServiceTaskQueue;
@@ -63,8 +62,7 @@ public class TransportDeleteDatabaseConfigurationAction extends TransportMasterN
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
DeleteDatabaseConfigurationAction.NAME,
diff --git a/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/direct/TransportPutDatabaseConfigurationAction.java b/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/direct/TransportPutDatabaseConfigurationAction.java
index 605cd40ddea6..56e15c1e6580 100644
--- a/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/direct/TransportPutDatabaseConfigurationAction.java
+++ b/modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/direct/TransportPutDatabaseConfigurationAction.java
@@ -20,7 +20,6 @@ import org.elasticsearch.cluster.ClusterStateTaskListener;
import org.elasticsearch.cluster.SimpleBatchedExecutor;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.cluster.service.MasterServiceTaskQueue;
@@ -65,8 +64,7 @@ public class TransportPutDatabaseConfigurationAction extends TransportMasterNode
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
PutDatabaseConfigurationAction.NAME,
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportClusterAllocationExplainAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportClusterAllocationExplainAction.java
index b183b5497f1b..2d9cd4f03e15 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportClusterAllocationExplainAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportClusterAllocationExplainAction.java
@@ -20,7 +20,6 @@ import org.elasticsearch.cluster.ClusterInfoService;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.routing.ShardRouting;
import org.elasticsearch.cluster.routing.allocation.AllocationService;
@@ -61,7 +60,6 @@ public class TransportClusterAllocationExplainAction extends TransportMasterNode
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
ClusterInfoService clusterInfoService,
SnapshotsInfoService snapshotsInfoService,
AllocationDeciders allocationDeciders,
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportDeleteDesiredBalanceAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportDeleteDesiredBalanceAction.java
index b1393e3bf597..ae46fc1d93d5 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportDeleteDesiredBalanceAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportDeleteDesiredBalanceAction.java
@@ -20,7 +20,6 @@ import org.elasticsearch.cluster.ClusterStateTaskExecutor;
import org.elasticsearch.cluster.ClusterStateTaskListener;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.routing.allocation.AllocationService;
import org.elasticsearch.cluster.routing.allocation.allocator.AllocationActionMultiListener;
import org.elasticsearch.cluster.routing.allocation.allocator.DesiredBalanceShardsAllocator;
@@ -46,7 +45,6 @@ public class TransportDeleteDesiredBalanceAction extends TransportMasterNodeActi
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
AllocationService allocationService,
ShardsAllocator shardsAllocator
) {
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetAllocationStatsAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetAllocationStatsAction.java
index b2e995a11633..63cebdffecf5 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetAllocationStatsAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetAllocationStatsAction.java
@@ -24,7 +24,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeReadAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.routing.allocation.AllocationStatsService;
import org.elasticsearch.cluster.routing.allocation.DiskThresholdSettings;
import org.elasticsearch.cluster.routing.allocation.NodeAllocationStats;
@@ -59,7 +58,6 @@ public class TransportGetAllocationStatsAction extends TransportMasterNodeReadAc
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
AllocationStatsService allocationStatsService
) {
super(
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetDesiredBalanceAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetDesiredBalanceAction.java
index 0d06da7f3348..454fdad7cccc 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetDesiredBalanceAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetDesiredBalanceAction.java
@@ -18,7 +18,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.routing.IndexRoutingTable;
import org.elasticsearch.cluster.routing.IndexShardRoutingTable;
import org.elasticsearch.cluster.routing.ShardRouting;
@@ -56,7 +55,6 @@ public class TransportGetDesiredBalanceAction extends TransportMasterNodeReadAct
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
ShardsAllocator shardsAllocator,
ClusterInfoService clusterInfoService,
WriteLoadForecaster writeLoadForecaster
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsAction.java
index 8b2bad08b192..b7d9146e8478 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsAction.java
@@ -26,7 +26,6 @@ import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.coordination.CoordinationMetadata;
import org.elasticsearch.cluster.coordination.CoordinationMetadata.VotingConfigExclusion;
import org.elasticsearch.cluster.coordination.Reconfigurator;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Priority;
@@ -72,7 +71,6 @@ public class TransportAddVotingConfigExclusionsAction extends TransportMasterNod
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Reconfigurator reconfigurator
) {
super(
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsAction.java
index 4b11fd326cc3..24d8273ba2b4 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsAction.java
@@ -26,7 +26,6 @@ import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.coordination.CoordinationMetadata;
import org.elasticsearch.cluster.coordination.CoordinationMetadata.VotingConfigExclusion;
import org.elasticsearch.cluster.coordination.Reconfigurator;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Priority;
@@ -54,7 +53,6 @@ public class TransportClearVotingConfigExclusionsAction extends TransportMasterN
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Reconfigurator reconfigurator
) {
super(
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/desirednodes/TransportDeleteDesiredNodesAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/desirednodes/TransportDeleteDesiredNodesAction.java
index 4d13b9dc68a1..f81e3225eab5 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/desirednodes/TransportDeleteDesiredNodesAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/desirednodes/TransportDeleteDesiredNodesAction.java
@@ -21,7 +21,6 @@ import org.elasticsearch.cluster.SimpleBatchedExecutor;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.DesiredNodesMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.cluster.service.MasterServiceTaskQueue;
import org.elasticsearch.common.Priority;
@@ -46,8 +45,7 @@ public class TransportDeleteDesiredNodesAction extends TransportMasterNodeAction
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
TYPE.name(),
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/desirednodes/TransportGetDesiredNodesAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/desirednodes/TransportGetDesiredNodesAction.java
index 6d59c35c8a11..935d8b31ae33 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/desirednodes/TransportGetDesiredNodesAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/desirednodes/TransportGetDesiredNodesAction.java
@@ -17,7 +17,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.DesiredNodes;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -33,8 +32,7 @@ public class TransportGetDesiredNodesAction extends TransportMasterNodeReadActio
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
GetDesiredNodesAction.NAME,
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/migration/TransportGetFeatureUpgradeStatusAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/migration/TransportGetFeatureUpgradeStatusAction.java
index 57673e5fe137..0e6586b7998f 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/migration/TransportGetFeatureUpgradeStatusAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/migration/TransportGetFeatureUpgradeStatusAction.java
@@ -16,7 +16,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.core.UpdateForV10;
@@ -67,7 +66,6 @@ public class TransportGetFeatureUpgradeStatusAction extends TransportMasterNodeA
ThreadPool threadPool,
ActionFilters actionFilters,
ClusterService clusterService,
- IndexNameExpressionResolver indexNameExpressionResolver,
SystemIndices systemIndices
) {
super(
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/migration/TransportPostFeatureUpgradeAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/migration/TransportPostFeatureUpgradeAction.java
index ecf7bab6a21c..08438de4bfea 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/migration/TransportPostFeatureUpgradeAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/migration/TransportPostFeatureUpgradeAction.java
@@ -18,7 +18,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.core.TimeValue;
@@ -53,7 +52,6 @@ public class TransportPostFeatureUpgradeAction extends TransportMasterNodeAction
ThreadPool threadPool,
ActionFilters actionFilters,
ClusterService clusterService,
- IndexNameExpressionResolver indexNameExpressionResolver,
SystemIndices systemIndices,
PersistentTasksService persistentTasksService
) {
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/node/shutdown/TransportPrevalidateNodeRemovalAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/node/shutdown/TransportPrevalidateNodeRemovalAction.java
index c8d7341263ab..f6f9c536cd34 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/node/shutdown/TransportPrevalidateNodeRemovalAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/node/shutdown/TransportPrevalidateNodeRemovalAction.java
@@ -19,7 +19,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.health.ClusterHealthStatus;
import org.elasticsearch.cluster.health.ClusterStateHealth;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.node.DiscoveryNodes;
@@ -62,7 +61,6 @@ public class TransportPrevalidateNodeRemovalAction extends TransportMasterNodeRe
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
NodeClient client
) {
super(
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/cleanup/TransportCleanupRepositoryAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/cleanup/TransportCleanupRepositoryAction.java
index c3c9ee4c2a64..11a6a6967cb7 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/cleanup/TransportCleanupRepositoryAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/cleanup/TransportCleanupRepositoryAction.java
@@ -21,7 +21,6 @@ import org.elasticsearch.cluster.SnapshotDeletionsInProgress;
import org.elasticsearch.cluster.SnapshotsInProgress;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.blobstore.DeleteResult;
@@ -72,8 +71,7 @@ public final class TransportCleanupRepositoryAction extends TransportMasterNodeA
ClusterService clusterService,
RepositoriesService repositoriesService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
TYPE.name(),
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/delete/TransportDeleteRepositoryAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/delete/TransportDeleteRepositoryAction.java
index 6d63a39e811a..fc01c0fecca0 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/delete/TransportDeleteRepositoryAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/delete/TransportDeleteRepositoryAction.java
@@ -18,7 +18,6 @@ import org.elasticsearch.action.support.master.AcknowledgedTransportMasterNodeAc
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -44,8 +43,7 @@ public class TransportDeleteRepositoryAction extends AcknowledgedTransportMaster
ClusterService clusterService,
RepositoriesService repositoriesService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
TYPE.name(),
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/get/TransportGetRepositoriesAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/get/TransportGetRepositoriesAction.java
index ed1f1cdcc20a..dbb448b8153e 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/get/TransportGetRepositoriesAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/get/TransportGetRepositoriesAction.java
@@ -15,7 +15,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeReadAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.RepositoriesMetadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -36,8 +35,7 @@ public class TransportGetRepositoriesAction extends TransportMasterNodeReadActio
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
GetRepositoriesAction.NAME,
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/put/TransportPutRepositoryAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/put/TransportPutRepositoryAction.java
index 83221f9bdbfb..2456bc6a7c6c 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/put/TransportPutRepositoryAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/put/TransportPutRepositoryAction.java
@@ -18,7 +18,6 @@ import org.elasticsearch.action.support.master.AcknowledgedTransportMasterNodeAc
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -44,8 +43,7 @@ public class TransportPutRepositoryAction extends AcknowledgedTransportMasterNod
ClusterService clusterService,
RepositoriesService repositoriesService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
TYPE.name(),
diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/verify/TransportVerifyRepositoryAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/verify/TransportVerifyRepositoryAction.java
index f3ea83d0def0..b2344e18ddd6 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/verify/TransportVerifyRepositoryAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/verify/TransportVerifyRepositoryAction.java
@@ -15,7 +15,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -38,8 +37,7 @@ public class TransportVerifyRepositoryAction extends TransportMasterNodeAction {
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
MetadataCreateIndexService createIndexService,
MetadataCreateDataStreamService metadataCreateDataStreamService,
AutoCreateIndex autoCreateIndex,
diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/create/TransportCreateIndexAction.java b/server/src/main/java/org/elasticsearch/action/admin/indices/create/TransportCreateIndexAction.java
index 423dffc6f403..746ea43752b8 100644
--- a/server/src/main/java/org/elasticsearch/action/admin/indices/create/TransportCreateIndexAction.java
+++ b/server/src/main/java/org/elasticsearch/action/admin/indices/create/TransportCreateIndexAction.java
@@ -58,7 +58,6 @@ public class TransportCreateIndexAction extends TransportMasterNodeAction ClusterInfo.EMPTY,
EmptySnapshotsInfoService.INSTANCE,
new AllocationDeciders(List.of()),
diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportDeleteDesiredBalanceActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportDeleteDesiredBalanceActionTests.java
index 385ac600666d..999845fa7361 100644
--- a/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportDeleteDesiredBalanceActionTests.java
+++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportDeleteDesiredBalanceActionTests.java
@@ -20,7 +20,6 @@ import org.elasticsearch.cluster.ESAllocationTestCase;
import org.elasticsearch.cluster.EmptyClusterInfoService;
import org.elasticsearch.cluster.TestShardRoutingRoleStrategies;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.node.DiscoveryNodes;
import org.elasticsearch.cluster.routing.RoutingTable;
@@ -74,7 +73,6 @@ public class TransportDeleteDesiredBalanceActionTests extends ESAllocationTestCa
mock(ClusterService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
mock(AllocationService.class),
mock(ShardsAllocator.class)
).masterOperation(mock(Task.class), new DesiredBalanceRequest(TEST_REQUEST_TIMEOUT), ClusterState.EMPTY_STATE, listener);
@@ -149,7 +147,6 @@ public class TransportDeleteDesiredBalanceActionTests extends ESAllocationTestCa
clusterService,
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
allocationService,
allocator
);
diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetAllocationStatsActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetAllocationStatsActionTests.java
index d362be6a3e32..4510044b1790 100644
--- a/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetAllocationStatsActionTests.java
+++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetAllocationStatsActionTests.java
@@ -73,7 +73,6 @@ public class TransportGetAllocationStatsActionTests extends ESTestCase {
clusterService,
threadPool,
new ActionFilters(Set.of()),
- null,
allocationStatsService
);
}
diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetDesiredBalanceActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetDesiredBalanceActionTests.java
index 0af210f4be32..25e22dc9daa5 100644
--- a/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetDesiredBalanceActionTests.java
+++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/TransportGetDesiredBalanceActionTests.java
@@ -18,7 +18,6 @@ import org.elasticsearch.cluster.ClusterName;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ESAllocationTestCase;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.node.DiscoveryNodeRole;
import org.elasticsearch.cluster.node.DiscoveryNodes;
@@ -80,7 +79,6 @@ public class TransportGetDesiredBalanceActionTests extends ESAllocationTestCase
mock(ClusterService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
desiredBalanceShardsAllocator,
clusterInfoService,
TEST_WRITE_LOAD_FORECASTER
@@ -112,7 +110,6 @@ public class TransportGetDesiredBalanceActionTests extends ESAllocationTestCase
mock(ClusterService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
mock(ShardsAllocator.class),
mock(ClusterInfoService.class),
mock(WriteLoadForecaster.class)
diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsActionTests.java
index 0f0610321239..70633e64325b 100644
--- a/server/src/test/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsActionTests.java
+++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/configuration/TransportAddVotingConfigExclusionsActionTests.java
@@ -34,7 +34,6 @@ import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.settings.ClusterSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.TimeValue;
-import org.elasticsearch.indices.TestIndexNameExpressionResolver;
import org.elasticsearch.test.ESTestCase;
import org.elasticsearch.test.transport.MockTransport;
import org.elasticsearch.threadpool.TestThreadPool;
@@ -133,7 +132,6 @@ public class TransportAddVotingConfigExclusionsActionTests extends ESTestCase {
clusterService,
threadPool,
new ActionFilters(emptySet()),
- TestIndexNameExpressionResolver.newInstance(threadPool.getThreadContext()),
reconfigurator
); // registers action
diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsActionTests.java
index 8ed8963df60a..32d41ac669a5 100644
--- a/server/src/test/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsActionTests.java
+++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsActionTests.java
@@ -24,7 +24,6 @@ import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.TimeValue;
-import org.elasticsearch.indices.TestIndexNameExpressionResolver;
import org.elasticsearch.test.ESTestCase;
import org.elasticsearch.test.transport.MockTransport;
import org.elasticsearch.threadpool.TestThreadPool;
@@ -94,7 +93,6 @@ public class TransportClearVotingConfigExclusionsActionTests extends ESTestCase
clusterService,
threadPool,
new ActionFilters(emptySet()),
- TestIndexNameExpressionResolver.newInstance(threadPool.getThreadContext()),
reconfigurator
); // registers action
diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsRequestTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsRequestTests.java
index e46494bb7e84..9c794008760e 100644
--- a/server/src/test/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsRequestTests.java
+++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsRequestTests.java
@@ -10,7 +10,6 @@
package org.elasticsearch.action.admin.cluster.settings;
import org.elasticsearch.action.support.ActionFilters;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.routing.RerouteService;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.bytes.BytesReference;
@@ -97,7 +96,6 @@ public class ClusterUpdateSettingsRequestTests extends ESTestCase {
mock(RerouteService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
clusterSettings
);
diff --git a/server/src/test/java/org/elasticsearch/action/admin/indices/create/TransportCreateIndexActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/indices/create/TransportCreateIndexActionTests.java
index 9f8b4da357ee..29d23be39c77 100644
--- a/server/src/test/java/org/elasticsearch/action/admin/indices/create/TransportCreateIndexActionTests.java
+++ b/server/src/test/java/org/elasticsearch/action/admin/indices/create/TransportCreateIndexActionTests.java
@@ -16,7 +16,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterName;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.metadata.MetadataCreateIndexService;
import org.elasticsearch.cluster.node.DiscoveryNodeRole;
@@ -26,7 +25,6 @@ import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.cluster.version.CompatibilityVersions;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
-import org.elasticsearch.common.util.concurrent.ThreadContext;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.indices.SystemIndexDescriptor;
import org.elasticsearch.indices.SystemIndices;
@@ -118,8 +116,6 @@ public class TransportCreateIndexActionTests extends ESTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
- ThreadContext threadContext = new ThreadContext(Settings.EMPTY);
- IndexNameExpressionResolver indexNameExpressionResolver = new IndexNameExpressionResolver(threadContext, SYSTEM_INDICES);
this.metadataCreateIndexService = mock(MetadataCreateIndexService.class);
final ThreadPool threadPool = mock(ThreadPool.class);
@@ -130,7 +126,6 @@ public class TransportCreateIndexActionTests extends ESTestCase {
threadPool,
metadataCreateIndexService,
mock(ActionFilters.class),
- indexNameExpressionResolver,
SYSTEM_INDICES
);
}
diff --git a/server/src/test/java/org/elasticsearch/action/admin/indices/template/reservedstate/ReservedComposableIndexTemplateActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/indices/template/reservedstate/ReservedComposableIndexTemplateActionTests.java
index 3e49cbe774ee..d055eb0eda40 100644
--- a/server/src/test/java/org/elasticsearch/action/admin/indices/template/reservedstate/ReservedComposableIndexTemplateActionTests.java
+++ b/server/src/test/java/org/elasticsearch/action/admin/indices/template/reservedstate/ReservedComposableIndexTemplateActionTests.java
@@ -684,8 +684,7 @@ public class ReservedComposableIndexTemplateActionTests extends ESTestCase {
null,
threadPool,
null,
- mock(ActionFilters.class),
- null
+ mock(ActionFilters.class)
);
assertEquals(ReservedComposableIndexTemplateAction.NAME, putIndexAction.reservedStateHandlerName().get());
assertThat(
@@ -697,8 +696,7 @@ public class ReservedComposableIndexTemplateActionTests extends ESTestCase {
null,
threadPool,
null,
- mock(ActionFilters.class),
- null
+ mock(ActionFilters.class)
);
assertEquals(ReservedComposableIndexTemplateAction.NAME, delIndexAction.reservedStateHandlerName().get());
assertThat(
@@ -712,7 +710,6 @@ public class ReservedComposableIndexTemplateActionTests extends ESTestCase {
threadPool,
null,
mock(ActionFilters.class),
- null,
indexScopedSettings
);
assertEquals(ReservedComposableIndexTemplateAction.NAME, putComponentAction.reservedStateHandlerName().get());
@@ -726,8 +723,7 @@ public class ReservedComposableIndexTemplateActionTests extends ESTestCase {
null,
threadPool,
null,
- mock(ActionFilters.class),
- null
+ mock(ActionFilters.class)
);
assertEquals(ReservedComposableIndexTemplateAction.NAME, delComponentAction.reservedStateHandlerName().get());
assertThat(
@@ -943,8 +939,7 @@ public class ReservedComposableIndexTemplateActionTests extends ESTestCase {
null,
threadPool,
null,
- mock(ActionFilters.class),
- null
+ mock(ActionFilters.class)
);
// Try fake REST modification request with validate_template, this will fail
diff --git a/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java b/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java
index 86053b7db8b3..ec357aeadfd9 100644
--- a/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java
+++ b/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java
@@ -342,8 +342,7 @@ public class ClusterStateChanges {
clusterService,
threadPool,
allocationService,
- actionFilters,
- indexNameExpressionResolver
+ actionFilters
);
transportCreateIndexAction = new TransportCreateIndexAction(
transportService,
@@ -351,7 +350,6 @@ public class ClusterStateChanges {
threadPool,
createIndexService,
actionFilters,
- indexNameExpressionResolver,
EmptySystemIndices.INSTANCE
);
diff --git a/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java b/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java
index 503ca22b3c31..cc992c149fc5 100644
--- a/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java
+++ b/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java
@@ -2374,7 +2374,6 @@ public class SnapshotResiliencyTests extends ESTestCase {
threadPool,
metadataCreateIndexService,
actionFilters,
- indexNameExpressionResolver,
EmptySystemIndices.INSTANCE
)
);
@@ -2490,14 +2489,7 @@ public class SnapshotResiliencyTests extends ESTestCase {
);
actions.put(
TransportRestoreSnapshotAction.TYPE,
- new TransportRestoreSnapshotAction(
- transportService,
- clusterService,
- threadPool,
- restoreService,
- actionFilters,
- indexNameExpressionResolver
- )
+ new TransportRestoreSnapshotAction(transportService, clusterService, threadPool, restoreService, actionFilters)
);
actions.put(
TransportDeleteIndexAction.TYPE,
@@ -2513,58 +2505,23 @@ public class SnapshotResiliencyTests extends ESTestCase {
);
actions.put(
TransportPutRepositoryAction.TYPE,
- new TransportPutRepositoryAction(
- transportService,
- clusterService,
- repositoriesService,
- threadPool,
- actionFilters,
- indexNameExpressionResolver
- )
+ new TransportPutRepositoryAction(transportService, clusterService, repositoriesService, threadPool, actionFilters)
);
actions.put(
TransportCleanupRepositoryAction.TYPE,
- new TransportCleanupRepositoryAction(
- transportService,
- clusterService,
- repositoriesService,
- threadPool,
- actionFilters,
- indexNameExpressionResolver
- )
+ new TransportCleanupRepositoryAction(transportService, clusterService, repositoriesService, threadPool, actionFilters)
);
actions.put(
TransportCreateSnapshotAction.TYPE,
- new TransportCreateSnapshotAction(
- transportService,
- clusterService,
- threadPool,
- snapshotsService,
- actionFilters,
- indexNameExpressionResolver
- )
+ new TransportCreateSnapshotAction(transportService, clusterService, threadPool, snapshotsService, actionFilters)
);
actions.put(
TransportCloneSnapshotAction.TYPE,
- new TransportCloneSnapshotAction(
- transportService,
- clusterService,
- threadPool,
- snapshotsService,
- actionFilters,
- indexNameExpressionResolver
- )
+ new TransportCloneSnapshotAction(transportService, clusterService, threadPool, snapshotsService, actionFilters)
);
actions.put(
TransportClusterRerouteAction.TYPE,
- new TransportClusterRerouteAction(
- transportService,
- clusterService,
- threadPool,
- allocationService,
- actionFilters,
- indexNameExpressionResolver
- )
+ new TransportClusterRerouteAction(transportService, clusterService, threadPool, allocationService, actionFilters)
);
actions.put(
ClusterStateAction.INSTANCE,
@@ -2602,14 +2559,7 @@ public class SnapshotResiliencyTests extends ESTestCase {
);
actions.put(
TransportDeleteSnapshotAction.TYPE,
- new TransportDeleteSnapshotAction(
- transportService,
- clusterService,
- threadPool,
- snapshotsService,
- actionFilters,
- indexNameExpressionResolver
- )
+ new TransportDeleteSnapshotAction(transportService, clusterService, threadPool, snapshotsService, actionFilters)
);
client.initialize(
actions,
diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/action/AnalyticsUsageTransportAction.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/action/AnalyticsUsageTransportAction.java
index 8ec1f61084b5..e47abf5d4061 100644
--- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/action/AnalyticsUsageTransportAction.java
+++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/action/AnalyticsUsageTransportAction.java
@@ -10,7 +10,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
@@ -32,7 +31,6 @@ public class AnalyticsUsageTransportAction extends XPackUsageFeatureTransportAct
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client
) {
super(XPackUsageFeatureAction.ANALYTICS.name(), transportService, clusterService, threadPool, actionFilters);
diff --git a/x-pack/plugin/analytics/src/test/java/org/elasticsearch/xpack/analytics/action/AnalyticsInfoTransportActionTests.java b/x-pack/plugin/analytics/src/test/java/org/elasticsearch/xpack/analytics/action/AnalyticsInfoTransportActionTests.java
index 77d3d5a5577b..4cfffc80d248 100644
--- a/x-pack/plugin/analytics/src/test/java/org/elasticsearch/xpack/analytics/action/AnalyticsInfoTransportActionTests.java
+++ b/x-pack/plugin/analytics/src/test/java/org/elasticsearch/xpack/analytics/action/AnalyticsInfoTransportActionTests.java
@@ -70,7 +70,6 @@ public class AnalyticsInfoTransportActionTests extends ESTestCase {
clusterService,
threadPool,
mock(ActionFilters.class),
- null,
client
);
PlainActionFuture future = new PlainActionFuture<>();
@@ -98,7 +97,6 @@ public class AnalyticsInfoTransportActionTests extends ESTestCase {
clusterService,
threadPool,
mock(ActionFilters.class),
- null,
client
);
PlainActionFuture future = new PlainActionFuture<>();
diff --git a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportDeleteAutoscalingPolicyAction.java b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportDeleteAutoscalingPolicyAction.java
index 7fa7c58ab67d..ee2e6b07a2ba 100644
--- a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportDeleteAutoscalingPolicyAction.java
+++ b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportDeleteAutoscalingPolicyAction.java
@@ -19,7 +19,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.regex.Regex;
@@ -46,8 +45,7 @@ public class TransportDeleteAutoscalingPolicyAction extends AcknowledgedTranspor
final TransportService transportService,
final ClusterService clusterService,
final ThreadPool threadPool,
- final ActionFilters actionFilters,
- final IndexNameExpressionResolver indexNameExpressionResolver
+ final ActionFilters actionFilters
) {
super(
DeleteAutoscalingPolicyAction.NAME,
diff --git a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingCapacityAction.java b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingCapacityAction.java
index 6fd42aee5fec..fc459bd528c0 100644
--- a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingCapacityAction.java
+++ b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingCapacityAction.java
@@ -15,7 +15,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterInfoService;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -53,7 +52,6 @@ public class TransportGetAutoscalingCapacityAction extends TransportMasterNodeAc
final ClusterService clusterService,
final ThreadPool threadPool,
final ActionFilters actionFilters,
- final IndexNameExpressionResolver indexNameExpressionResolver,
final AutoscalingCalculateCapacityService.Holder capacityServiceHolder,
final ClusterInfoService clusterInfoService,
final SnapshotsInfoService snapshotsInfoService,
diff --git a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingPolicyAction.java b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingPolicyAction.java
index 0c20d551b5c3..e0df73995d72 100644
--- a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingPolicyAction.java
+++ b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingPolicyAction.java
@@ -14,7 +14,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -40,7 +39,6 @@ public class TransportGetAutoscalingPolicyAction extends TransportMasterNodeActi
final ClusterService clusterService,
final ThreadPool threadPool,
final ActionFilters actionFilters,
- final IndexNameExpressionResolver indexNameExpressionResolver,
final AutoscalingLicenseChecker autoscalingLicenseChecker
) {
super(
diff --git a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportPutAutoscalingPolicyAction.java b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportPutAutoscalingPolicyAction.java
index 06c0010cd09f..a26501f856d8 100644
--- a/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportPutAutoscalingPolicyAction.java
+++ b/x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/action/TransportPutAutoscalingPolicyAction.java
@@ -18,7 +18,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -53,19 +52,10 @@ public class TransportPutAutoscalingPolicyAction extends AcknowledgedTransportMa
final ClusterService clusterService,
final ThreadPool threadPool,
final ActionFilters actionFilters,
- final IndexNameExpressionResolver indexNameExpressionResolver,
final AutoscalingCalculateCapacityService.Holder policyValidatorHolder,
final AutoscalingLicenseChecker autoscalingLicenseChecker
) {
- this(
- transportService,
- clusterService,
- threadPool,
- actionFilters,
- indexNameExpressionResolver,
- policyValidatorHolder.get(),
- autoscalingLicenseChecker
- );
+ this(transportService, clusterService, threadPool, actionFilters, policyValidatorHolder.get(), autoscalingLicenseChecker);
}
TransportPutAutoscalingPolicyAction(
@@ -73,7 +63,6 @@ public class TransportPutAutoscalingPolicyAction extends AcknowledgedTransportMa
final ClusterService clusterService,
final ThreadPool threadPool,
final ActionFilters actionFilters,
- final IndexNameExpressionResolver indexNameExpressionResolver,
final PolicyValidator policyValidator,
final AutoscalingLicenseChecker autoscalingLicenseChecker
) {
diff --git a/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportDeleteAutoscalingPolicyActionTests.java b/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportDeleteAutoscalingPolicyActionTests.java
index 4e6514face33..40c445799809 100644
--- a/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportDeleteAutoscalingPolicyActionTests.java
+++ b/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportDeleteAutoscalingPolicyActionTests.java
@@ -15,7 +15,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlocks;
import org.elasticsearch.cluster.coordination.NoMasterBlockService;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.regex.Regex;
@@ -46,8 +45,7 @@ public class TransportDeleteAutoscalingPolicyActionTests extends AutoscalingTest
transportService,
mock(ClusterService.class),
threadPool,
- mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class)
+ mock(ActionFilters.class)
);
final ClusterBlocks blocks = ClusterBlocks.builder()
.addGlobalBlock(
@@ -73,8 +71,7 @@ public class TransportDeleteAutoscalingPolicyActionTests extends AutoscalingTest
transportService,
mock(ClusterService.class),
threadPool,
- mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class)
+ mock(ActionFilters.class)
);
final ClusterBlocks blocks = ClusterBlocks.builder().build();
final ClusterState state = ClusterState.builder(new ClusterName(randomAlphaOfLength(8))).blocks(blocks).build();
diff --git a/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingPolicyActionTests.java b/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingPolicyActionTests.java
index a16b224d2589..9d17b048ac3d 100644
--- a/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingPolicyActionTests.java
+++ b/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportGetAutoscalingPolicyActionTests.java
@@ -15,7 +15,6 @@ import org.elasticsearch.cluster.block.ClusterBlock;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.block.ClusterBlocks;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.rest.RestStatus;
@@ -45,7 +44,6 @@ public class TransportGetAutoscalingPolicyActionTests extends AutoscalingTestCas
mock(ClusterService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
new AutoscalingLicenseChecker(() -> true)
);
final ClusterBlocks blocks = ClusterBlocks.builder()
@@ -77,7 +75,6 @@ public class TransportGetAutoscalingPolicyActionTests extends AutoscalingTestCas
mock(ClusterService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
new AutoscalingLicenseChecker(() -> true)
);
final ClusterBlocks blocks = ClusterBlocks.builder().build();
diff --git a/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportPutAutoscalingPolicyActionTests.java b/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportPutAutoscalingPolicyActionTests.java
index d67978b727ca..f91994564000 100644
--- a/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportPutAutoscalingPolicyActionTests.java
+++ b/x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/action/TransportPutAutoscalingPolicyActionTests.java
@@ -14,7 +14,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlocks;
import org.elasticsearch.cluster.coordination.NoMasterBlockService;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.test.MockUtils;
@@ -49,7 +48,6 @@ public class TransportPutAutoscalingPolicyActionTests extends AutoscalingTestCas
mock(ClusterService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
NO_VALIDATION,
new AutoscalingLicenseChecker(() -> true)
);
@@ -75,7 +73,6 @@ public class TransportPutAutoscalingPolicyActionTests extends AutoscalingTestCas
mock(ClusterService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
NO_VALIDATION,
new AutoscalingLicenseChecker(() -> true)
);
diff --git a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/CCRUsageTransportAction.java b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/CCRUsageTransportAction.java
index 8f4d247f171f..196b8b7b561a 100644
--- a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/CCRUsageTransportAction.java
+++ b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/CCRUsageTransportAction.java
@@ -10,7 +10,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
@@ -40,7 +39,6 @@ public class CCRUsageTransportAction extends XPackUsageFeatureTransportAction {
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Settings settings,
XPackLicenseState licenseState
) {
diff --git a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportActivateAutoFollowPatternAction.java b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportActivateAutoFollowPatternAction.java
index 81ac8893f6c3..b012c683eecf 100644
--- a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportActivateAutoFollowPatternAction.java
+++ b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportActivateAutoFollowPatternAction.java
@@ -16,7 +16,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.core.SuppressForbidden;
@@ -38,8 +37,7 @@ public class TransportActivateAutoFollowPatternAction extends AcknowledgedTransp
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver resolver
+ ActionFilters actionFilters
) {
super(
ActivateAutoFollowPatternAction.NAME,
diff --git a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportCcrStatsAction.java b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportCcrStatsAction.java
index 66afc9cb0c99..c9c159e462ec 100644
--- a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportCcrStatsAction.java
+++ b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportCcrStatsAction.java
@@ -14,7 +14,6 @@ import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.license.LicenseUtils;
@@ -41,7 +40,6 @@ public class TransportCcrStatsAction extends TransportMasterNodeAction> successFunc;
TestTransportSetUpgradeModeAction(boolean upgradeMode, Consumer> successFunc) {
- super("actionName", "taskQueuePrefix", mock(), clusterService(), mock(), mock(), mock());
+ super("actionName", "taskQueuePrefix", mock(), clusterService(), mock(), mock());
this.upgradeMode = upgradeMode;
this.updatedClusterState = ClusterState.EMPTY_STATE;
this.successFunc = successFunc;
}
TestTransportSetUpgradeModeAction(ClusterService clusterService, boolean upgradeMode) {
- super("actionName", "taskQueuePrefix", mock(), clusterService, mock(), mock(), mock());
+ super("actionName", "taskQueuePrefix", mock(), clusterService, mock(), mock());
this.upgradeMode = upgradeMode;
this.updatedClusterState = ClusterState.EMPTY_STATE;
this.successFunc = listener -> {};
diff --git a/x-pack/plugin/downsample/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleAction.java b/x-pack/plugin/downsample/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleAction.java
index 4aaead13f753..dfda9458f365 100644
--- a/x-pack/plugin/downsample/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleAction.java
+++ b/x-pack/plugin/downsample/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleAction.java
@@ -34,7 +34,6 @@ import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexMetadata;
import org.elasticsearch.cluster.metadata.IndexMetadata.DownsampleTaskStatus;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.metadata.MetadataCreateIndexService;
import org.elasticsearch.cluster.routing.allocation.DataTier;
@@ -154,7 +153,6 @@ public class TransportDownsampleAction extends AcknowledgedTransportMasterNodeAc
ThreadPool threadPool,
MetadataCreateIndexService metadataCreateIndexService,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
IndexScopedSettings indexScopedSettings,
PersistentTasksService persistentTasksService,
DownsampleMetrics downsampleMetrics
diff --git a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/action/EnrichUsageTransportAction.java b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/action/EnrichUsageTransportAction.java
index 6674e19edecd..64a356ab57e5 100644
--- a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/action/EnrichUsageTransportAction.java
+++ b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/action/EnrichUsageTransportAction.java
@@ -9,7 +9,6 @@ package org.elasticsearch.xpack.enrich.action;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
@@ -28,8 +27,7 @@ public class EnrichUsageTransportAction extends XPackUsageFeatureTransportAction
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(XPackUsageFeatureAction.ENRICH.name(), transportService, clusterService, threadPool, actionFilters);
}
diff --git a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/action/TransportExecuteEnrichPolicyAction.java b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/action/TransportExecuteEnrichPolicyAction.java
index 89b1c3e64dfe..b075e386cf73 100644
--- a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/action/TransportExecuteEnrichPolicyAction.java
+++ b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/action/TransportExecuteEnrichPolicyAction.java
@@ -12,7 +12,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -41,7 +40,6 @@ public class TransportExecuteEnrichPolicyAction extends TransportMasterNodeActio
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
EnrichPolicyExecutor enrichPolicyExecutor
) {
super(
diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearchUsageTransportAction.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearchUsageTransportAction.java
index 27f1496a4c6d..9ba4ca092c26 100644
--- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearchUsageTransportAction.java
+++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/EnterpriseSearchUsageTransportAction.java
@@ -17,7 +17,6 @@ import org.elasticsearch.client.internal.Client;
import org.elasticsearch.client.internal.IndicesAdminClient;
import org.elasticsearch.client.internal.OriginSettingClient;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.injection.guice.Inject;
@@ -67,7 +66,6 @@ public class EnterpriseSearchUsageTransportAction extends XPackUsageFeatureTrans
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Settings settings,
XPackLicenseState licenseState,
Client client
diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportDeleteAnalyticsCollectionAction.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportDeleteAnalyticsCollectionAction.java
index 6e2cd19a8240..78fc1e171df1 100644
--- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportDeleteAnalyticsCollectionAction.java
+++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportDeleteAnalyticsCollectionAction.java
@@ -14,7 +14,6 @@ import org.elasticsearch.action.support.master.AcknowledgedTransportMasterNodeAc
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -34,7 +33,6 @@ public class TransportDeleteAnalyticsCollectionAction extends AcknowledgedTransp
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
AnalyticsCollectionService analyticsCollectionService
) {
super(
diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportGetAnalyticsCollectionAction.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportGetAnalyticsCollectionAction.java
index 8ad39c901706..6d6a19aeb146 100644
--- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportGetAnalyticsCollectionAction.java
+++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportGetAnalyticsCollectionAction.java
@@ -12,7 +12,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.master.TransportMasterNodeReadAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -33,7 +32,6 @@ public class TransportGetAnalyticsCollectionAction extends TransportMasterNodeRe
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
AnalyticsCollectionService analyticsCollectionService
) {
super(
diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportPutAnalyticsCollectionAction.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportPutAnalyticsCollectionAction.java
index e0e47b945e81..d34d723c0e76 100644
--- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportPutAnalyticsCollectionAction.java
+++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/analytics/action/TransportPutAnalyticsCollectionAction.java
@@ -13,7 +13,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -34,7 +33,6 @@ public class TransportPutAnalyticsCollectionAction extends TransportMasterNodeAc
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
AnalyticsCollectionService analyticsCollectionService
) {
super(
diff --git a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/EqlUsageTransportAction.java b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/EqlUsageTransportAction.java
index ee5a412b4424..d62684a0c58f 100644
--- a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/EqlUsageTransportAction.java
+++ b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/EqlUsageTransportAction.java
@@ -10,7 +10,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
@@ -40,7 +39,6 @@ public class EqlUsageTransportAction extends XPackUsageFeatureTransportAction {
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client
) {
super(XPackUsageFeatureAction.EQL.name(), transportService, clusterService, threadPool, actionFilters);
diff --git a/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/EqlInfoTransportActionTests.java b/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/EqlInfoTransportActionTests.java
index c9d2f97eb562..38b1f8f87bd1 100644
--- a/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/EqlInfoTransportActionTests.java
+++ b/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/EqlInfoTransportActionTests.java
@@ -98,14 +98,7 @@ public class EqlInfoTransportActionTests extends ESTestCase {
ThreadPool threadPool = mock(ThreadPool.class);
TransportService transportService = MockUtils.setupTransportServiceWithThreadpoolExecutor(threadPool);
- var usageAction = new EqlUsageTransportAction(
- transportService,
- clusterService,
- threadPool,
- mock(ActionFilters.class),
- null,
- client
- );
+ var usageAction = new EqlUsageTransportAction(transportService, clusterService, threadPool, mock(ActionFilters.class), client);
PlainActionFuture future = new PlainActionFuture<>();
usageAction.masterOperation(mock(Task.class), null, null, future);
EqlFeatureSetUsage eqlUsage = (EqlFeatureSetUsage) future.get().getUsage();
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/EsqlUsageTransportAction.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/EsqlUsageTransportAction.java
index a9605d469fa3..164fcb7ab427 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/EsqlUsageTransportAction.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/EsqlUsageTransportAction.java
@@ -10,7 +10,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
@@ -40,7 +39,6 @@ public class EsqlUsageTransportAction extends XPackUsageFeatureTransportAction {
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client
) {
super(XPackUsageFeatureAction.ESQL.name(), transportService, clusterService, threadPool, actionFilters);
diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/EsqlInfoTransportActionTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/EsqlInfoTransportActionTests.java
index 61e218572183..3521e173cdee 100644
--- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/EsqlInfoTransportActionTests.java
+++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/EsqlInfoTransportActionTests.java
@@ -100,14 +100,7 @@ public class EsqlInfoTransportActionTests extends ESTestCase {
when(mockNode.getId()).thenReturn("mocknode");
when(clusterService.localNode()).thenReturn(mockNode);
- var usageAction = new EsqlUsageTransportAction(
- transportService,
- clusterService,
- threadPool,
- mock(ActionFilters.class),
- null,
- client
- );
+ var usageAction = new EsqlUsageTransportAction(transportService, clusterService, threadPool, mock(ActionFilters.class), client);
PlainActionFuture future = new PlainActionFuture<>();
usageAction.masterOperation(mock(Task.class), null, null, future);
EsqlFeatureSetUsage esqlUsage = (EsqlFeatureSetUsage) future.get().getUsage();
diff --git a/x-pack/plugin/frozen-indices/src/main/java/org/elasticsearch/xpack/frozen/FrozenIndicesUsageTransportAction.java b/x-pack/plugin/frozen-indices/src/main/java/org/elasticsearch/xpack/frozen/FrozenIndicesUsageTransportAction.java
index ad62fb4452a9..8bc3d94c8286 100644
--- a/x-pack/plugin/frozen-indices/src/main/java/org/elasticsearch/xpack/frozen/FrozenIndicesUsageTransportAction.java
+++ b/x-pack/plugin/frozen-indices/src/main/java/org/elasticsearch/xpack/frozen/FrozenIndicesUsageTransportAction.java
@@ -9,7 +9,6 @@ package org.elasticsearch.xpack.frozen;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.core.UpdateForV10;
import org.elasticsearch.injection.guice.Inject;
@@ -30,8 +29,7 @@ public class FrozenIndicesUsageTransportAction extends XPackUsageFeatureTranspor
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(XPackUsageFeatureAction.FROZEN_INDICES.name(), transportService, clusterService, threadPool, actionFilters);
}
diff --git a/x-pack/plugin/graph/src/main/java/org/elasticsearch/xpack/graph/GraphUsageTransportAction.java b/x-pack/plugin/graph/src/main/java/org/elasticsearch/xpack/graph/GraphUsageTransportAction.java
index 358998e207ca..89799b399d7a 100644
--- a/x-pack/plugin/graph/src/main/java/org/elasticsearch/xpack/graph/GraphUsageTransportAction.java
+++ b/x-pack/plugin/graph/src/main/java/org/elasticsearch/xpack/graph/GraphUsageTransportAction.java
@@ -9,7 +9,6 @@ package org.elasticsearch.xpack.graph;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.injection.guice.Inject;
@@ -35,7 +34,6 @@ public class GraphUsageTransportAction extends XPackUsageFeatureTransportAction
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Settings settings,
XPackLicenseState licenseState
) {
diff --git a/x-pack/plugin/graph/src/test/java/org/elasticsearch/xpack/graph/GraphInfoTransportActionTests.java b/x-pack/plugin/graph/src/test/java/org/elasticsearch/xpack/graph/GraphInfoTransportActionTests.java
index db6bfe798568..8624969a9710 100644
--- a/x-pack/plugin/graph/src/test/java/org/elasticsearch/xpack/graph/GraphInfoTransportActionTests.java
+++ b/x-pack/plugin/graph/src/test/java/org/elasticsearch/xpack/graph/GraphInfoTransportActionTests.java
@@ -50,7 +50,6 @@ public class GraphInfoTransportActionTests extends ESTestCase {
null,
mock(ThreadPool.class),
mock(ActionFilters.class),
- null,
Settings.EMPTY,
licenseState
);
@@ -90,7 +89,6 @@ public class GraphInfoTransportActionTests extends ESTestCase {
null,
mock(ThreadPool.class),
mock(ActionFilters.class),
- null,
settings.build(),
licenseState
);
diff --git a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycleUsageTransportAction.java b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycleUsageTransportAction.java
index a76e86f3f297..370518804093 100644
--- a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycleUsageTransportAction.java
+++ b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycleUsageTransportAction.java
@@ -10,7 +10,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.admin.indices.rollover.RolloverConditions;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.core.Tuple;
@@ -48,8 +47,7 @@ public class IndexLifecycleUsageTransportAction extends XPackUsageFeatureTranspo
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(XPackUsageFeatureAction.INDEX_LIFECYCLE.name(), transportService, clusterService, threadPool, actionFilters);
}
diff --git a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/action/TransportDeleteLifecycleAction.java b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/action/TransportDeleteLifecycleAction.java
index fd2e2681e77e..d6af6d9a6f8c 100644
--- a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/action/TransportDeleteLifecycleAction.java
+++ b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/action/TransportDeleteLifecycleAction.java
@@ -17,7 +17,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -46,8 +45,7 @@ public class TransportDeleteLifecycleAction extends TransportMasterNodeAction future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, clusterState, future);
IndexLifecycleFeatureSetUsage ilmUsage = (IndexLifecycleFeatureSetUsage) future.get().getUsage();
diff --git a/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportDeleteLifecycleActionTests.java b/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportDeleteLifecycleActionTests.java
index e75a609d236e..93999d95e19b 100644
--- a/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportDeleteLifecycleActionTests.java
+++ b/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportDeleteLifecycleActionTests.java
@@ -8,7 +8,6 @@
package org.elasticsearch.xpack.ilm.action;
import org.elasticsearch.action.support.ActionFilters;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.test.ESTestCase;
import org.elasticsearch.test.MockUtils;
@@ -27,8 +26,7 @@ public class TransportDeleteLifecycleActionTests extends ESTestCase {
transportService,
mock(ClusterService.class),
threadPool,
- mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class)
+ mock(ActionFilters.class)
);
assertEquals(ReservedLifecycleAction.NAME, putAction.reservedStateHandlerName().get());
diff --git a/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportPutLifecycleActionTests.java b/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportPutLifecycleActionTests.java
index 7f4e70bc1b30..af9f3fc187de 100644
--- a/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportPutLifecycleActionTests.java
+++ b/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportPutLifecycleActionTests.java
@@ -9,7 +9,6 @@ package org.elasticsearch.xpack.ilm.action;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.client.internal.Client;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.license.XPackLicenseState;
import org.elasticsearch.test.ESTestCase;
@@ -54,7 +53,6 @@ public class TransportPutLifecycleActionTests extends ESTestCase {
mock(ClusterService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
mock(NamedXContentRegistry.class),
mock(XPackLicenseState.class),
mock(Client.class)
diff --git a/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportStopILMActionTests.java b/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportStopILMActionTests.java
index bd0d63ebb0f3..073cb5554443 100644
--- a/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportStopILMActionTests.java
+++ b/x-pack/plugin/ilm/src/test/java/org/elasticsearch/xpack/ilm/action/TransportStopILMActionTests.java
@@ -11,7 +11,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.AckedClusterStateUpdateTask;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Priority;
import org.elasticsearch.tasks.Task;
@@ -42,8 +41,7 @@ public class TransportStopILMActionTests extends ESTestCase {
transportService,
clusterService,
threadPool,
- mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class)
+ mock(ActionFilters.class)
);
Task task = new Task(
randomLong(),
diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportDeleteInferenceEndpointAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportDeleteInferenceEndpointAction.java
index 3b6901ae0c31..82e04b08c4e7 100644
--- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportDeleteInferenceEndpointAction.java
+++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportDeleteInferenceEndpointAction.java
@@ -18,7 +18,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.inference.InferenceServiceRegistry;
@@ -53,7 +52,6 @@ public class TransportDeleteInferenceEndpointAction extends TransportMasterNodeA
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
ModelRegistry modelRegistry,
InferenceServiceRegistry serviceRegistry
) {
diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportInferenceUsageAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportInferenceUsageAction.java
index ec41c9327b34..6804257d1cf4 100644
--- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportInferenceUsageAction.java
+++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportInferenceUsageAction.java
@@ -12,7 +12,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.client.internal.OriginSettingClient;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.inference.ModelConfigurations;
import org.elasticsearch.inference.TaskType;
@@ -42,7 +41,6 @@ public class TransportInferenceUsageAction extends XPackUsageFeatureTransportAct
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client
) {
super(XPackUsageFeatureAction.INFERENCE.name(), transportService, clusterService, threadPool, actionFilters);
diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportPutInferenceModelAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportPutInferenceModelAction.java
index 73af12dacfad..fb7543079923 100644
--- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportPutInferenceModelAction.java
+++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportPutInferenceModelAction.java
@@ -16,7 +16,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -72,7 +71,6 @@ public class TransportPutInferenceModelAction extends TransportMasterNodeAction<
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
XPackLicenseState licenseState,
ModelRegistry modelRegistry,
InferenceServiceRegistry serviceRegistry,
diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportUpdateInferenceModelAction.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportUpdateInferenceModelAction.java
index ed005a86d66b..004739710b74 100644
--- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportUpdateInferenceModelAction.java
+++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/action/TransportUpdateInferenceModelAction.java
@@ -19,7 +19,6 @@ import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -83,7 +82,6 @@ public class TransportUpdateInferenceModelAction extends TransportMasterNodeActi
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
XPackLicenseState licenseState,
ModelRegistry modelRegistry,
InferenceServiceRegistry serviceRegistry,
diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/TransportDeleteInferenceEndpointActionTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/TransportDeleteInferenceEndpointActionTests.java
index a640e64c2022..cfc2c70003ff 100644
--- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/TransportDeleteInferenceEndpointActionTests.java
+++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/TransportDeleteInferenceEndpointActionTests.java
@@ -12,7 +12,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.PlainActionFuture;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.inference.InferenceService;
@@ -50,7 +49,6 @@ public class TransportDeleteInferenceEndpointActionTests extends ESTestCase {
mock(ClusterService.class),
threadPool,
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
modelRegistry,
mock(InferenceServiceRegistry.class)
);
diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/TransportInferenceUsageActionTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/TransportInferenceUsageActionTests.java
index bf173432f3d9..430e1c0048da 100644
--- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/TransportInferenceUsageActionTests.java
+++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/action/TransportInferenceUsageActionTests.java
@@ -12,7 +12,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.PlainActionFuture;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.io.stream.BytesStreamOutput;
import org.elasticsearch.inference.ModelConfigurations;
@@ -64,7 +63,6 @@ public class TransportInferenceUsageActionTests extends ESTestCase {
mock(ClusterService.class),
mock(ThreadPool.class),
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
client
);
}
diff --git a/x-pack/plugin/logsdb/src/main/java/org/elasticsearch/xpack/logsdb/LogsDBUsageTransportAction.java b/x-pack/plugin/logsdb/src/main/java/org/elasticsearch/xpack/logsdb/LogsDBUsageTransportAction.java
index 8fede5eca347..aadf8dabc415 100644
--- a/x-pack/plugin/logsdb/src/main/java/org/elasticsearch/xpack/logsdb/LogsDBUsageTransportAction.java
+++ b/x-pack/plugin/logsdb/src/main/java/org/elasticsearch/xpack/logsdb/LogsDBUsageTransportAction.java
@@ -11,7 +11,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.index.IndexMode;
@@ -38,8 +37,7 @@ public class LogsDBUsageTransportAction extends XPackUsageFeatureTransportAction
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- Client client,
- IndexNameExpressionResolver indexNameExpressionResolver
+ Client client
) {
super(XPackUsageFeatureAction.LOGSDB.name(), transportService, clusterService, threadPool, actionFilters);
this.clusterService = clusterService;
diff --git a/x-pack/plugin/logstash/src/main/java/org/elasticsearch/xpack/logstash/LogstashUsageTransportAction.java b/x-pack/plugin/logstash/src/main/java/org/elasticsearch/xpack/logstash/LogstashUsageTransportAction.java
index 39b86cbcf7cc..d0587dffe13b 100644
--- a/x-pack/plugin/logstash/src/main/java/org/elasticsearch/xpack/logstash/LogstashUsageTransportAction.java
+++ b/x-pack/plugin/logstash/src/main/java/org/elasticsearch/xpack/logstash/LogstashUsageTransportAction.java
@@ -9,7 +9,6 @@ package org.elasticsearch.xpack.logstash;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.license.XPackLicenseState;
@@ -32,7 +31,6 @@ public class LogstashUsageTransportAction extends XPackUsageFeatureTransportActi
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
XPackLicenseState licenseState
) {
super(XPackUsageFeatureAction.LOGSTASH.name(), transportService, clusterService, threadPool, actionFilters);
diff --git a/x-pack/plugin/logstash/src/test/java/org/elasticsearch/xpack/logstash/LogstashInfoTransportActionTests.java b/x-pack/plugin/logstash/src/test/java/org/elasticsearch/xpack/logstash/LogstashInfoTransportActionTests.java
index cfcefbaee461..93eb5b6a6d8a 100644
--- a/x-pack/plugin/logstash/src/test/java/org/elasticsearch/xpack/logstash/LogstashInfoTransportActionTests.java
+++ b/x-pack/plugin/logstash/src/test/java/org/elasticsearch/xpack/logstash/LogstashInfoTransportActionTests.java
@@ -71,7 +71,6 @@ public class LogstashInfoTransportActionTests extends ESTestCase {
null,
transportService.getThreadPool(),
mock(ActionFilters.class),
- null,
licenseState
);
}
diff --git a/x-pack/plugin/ml-package-loader/src/main/java/org/elasticsearch/xpack/ml/packageloader/action/TransportGetTrainedModelPackageConfigAction.java b/x-pack/plugin/ml-package-loader/src/main/java/org/elasticsearch/xpack/ml/packageloader/action/TransportGetTrainedModelPackageConfigAction.java
index ab3048c1cc0f..a19c077977a7 100644
--- a/x-pack/plugin/ml-package-loader/src/main/java/org/elasticsearch/xpack/ml/packageloader/action/TransportGetTrainedModelPackageConfigAction.java
+++ b/x-pack/plugin/ml-package-loader/src/main/java/org/elasticsearch/xpack/ml/packageloader/action/TransportGetTrainedModelPackageConfigAction.java
@@ -16,7 +16,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -50,8 +49,7 @@ public class TransportGetTrainedModelPackageConfigAction extends TransportMaster
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
GetTrainedModelPackageConfigAction.NAME,
diff --git a/x-pack/plugin/ml-package-loader/src/main/java/org/elasticsearch/xpack/ml/packageloader/action/TransportLoadTrainedModelPackage.java b/x-pack/plugin/ml-package-loader/src/main/java/org/elasticsearch/xpack/ml/packageloader/action/TransportLoadTrainedModelPackage.java
index 4d40ec7880fb..ead85ffab0b6 100644
--- a/x-pack/plugin/ml-package-loader/src/main/java/org/elasticsearch/xpack/ml/packageloader/action/TransportLoadTrainedModelPackage.java
+++ b/x-pack/plugin/ml-package-loader/src/main/java/org/elasticsearch/xpack/ml/packageloader/action/TransportLoadTrainedModelPackage.java
@@ -20,7 +20,6 @@ import org.elasticsearch.client.internal.OriginSettingClient;
import org.elasticsearch.client.internal.ParentTaskAssigningClient;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.indices.breaker.CircuitBreakerService;
@@ -66,7 +65,6 @@ public class TransportLoadTrainedModelPackage extends TransportMasterNodeAction<
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client,
CircuitBreakerService circuitBreakerService
) {
diff --git a/x-pack/plugin/ml-package-loader/src/test/java/org/elasticsearch/xpack/ml/packageloader/action/TransportLoadTrainedModelPackageTests.java b/x-pack/plugin/ml-package-loader/src/test/java/org/elasticsearch/xpack/ml/packageloader/action/TransportLoadTrainedModelPackageTests.java
index 3486ce6af0db..61f5bf4aac72 100644
--- a/x-pack/plugin/ml-package-loader/src/test/java/org/elasticsearch/xpack/ml/packageloader/action/TransportLoadTrainedModelPackageTests.java
+++ b/x-pack/plugin/ml-package-loader/src/test/java/org/elasticsearch/xpack/ml/packageloader/action/TransportLoadTrainedModelPackageTests.java
@@ -13,7 +13,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.client.internal.Client;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.indices.breaker.CircuitBreakerService;
import org.elasticsearch.rest.RestStatus;
@@ -150,7 +149,6 @@ public class TransportLoadTrainedModelPackageTests extends ESTestCase {
mock(ClusterService.class),
mock(ThreadPool.class),
mock(ActionFilters.class),
- mock(IndexNameExpressionResolver.class),
mock(Client.class),
mock(CircuitBreakerService.class)
);
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearningUsageTransportAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearningUsageTransportAction.java
index 03c9334483bf..a088a50cac40 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearningUsageTransportAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearningUsageTransportAction.java
@@ -12,7 +12,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.client.internal.OriginSettingClient;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.service.ClusterService;
@@ -125,7 +124,6 @@ public class MachineLearningUsageTransportAction extends XPackUsageFeatureTransp
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Environment environment,
Client client,
XPackLicenseState licenseState,
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteDataFrameAnalyticsAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteDataFrameAnalyticsAction.java
index a99bd7fc6ec7..1399f9fbe884 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteDataFrameAnalyticsAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteDataFrameAnalyticsAction.java
@@ -17,7 +17,6 @@ import org.elasticsearch.client.internal.ParentTaskAssigningClient;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -61,7 +60,6 @@ public class TransportDeleteDataFrameAnalyticsAction extends AcknowledgedTranspo
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client,
MlMemoryTracker memoryTracker,
DataFrameAnalyticsConfigProvider configProvider,
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteDatafeedAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteDatafeedAction.java
index 4ee67871ecec..2f136640be6c 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteDatafeedAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteDatafeedAction.java
@@ -15,7 +15,6 @@ import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -46,7 +45,6 @@ public class TransportDeleteDatafeedAction extends AcknowledgedTransportMasterNo
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client,
PersistentTasksService persistentTasksService,
DatafeedManager datafeedManager
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteJobAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteJobAction.java
index 1f3257992267..cbd0289d98aa 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteJobAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteJobAction.java
@@ -21,7 +21,6 @@ import org.elasticsearch.client.internal.ParentTaskAssigningClient;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.core.Nullable;
@@ -88,7 +87,6 @@ public class TransportDeleteJobAction extends AcknowledgedTransportMasterNodeAct
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
PersistentTasksService persistentTasksService,
Client client,
AnomalyDetectionAuditor auditor,
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAction.java
index b9308502c154..ed083532d9b8 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAction.java
@@ -22,7 +22,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -77,7 +76,6 @@ public class TransportDeleteTrainedModelAction extends AcknowledgedTransportMast
ThreadPool threadPool,
Client client,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
TrainedModelProvider configProvider,
InferenceAuditor auditor,
IngestService ingestService
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAliasAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAliasAction.java
index 21e6e2e8adac..d9c86c329939 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAliasAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAliasAction.java
@@ -19,7 +19,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -55,8 +54,7 @@ public class TransportDeleteTrainedModelAliasAction extends AcknowledgedTranspor
ThreadPool threadPool,
ActionFilters actionFilters,
InferenceAuditor auditor,
- IngestService ingestService,
- IndexNameExpressionResolver indexNameExpressionResolver
+ IngestService ingestService
) {
super(
DeleteTrainedModelAliasAction.NAME,
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAssignmentAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAssignmentAction.java
index a726e1aaca90..c1433c84598b 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAssignmentAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteTrainedModelAssignmentAction.java
@@ -14,7 +14,6 @@ import org.elasticsearch.action.support.master.AcknowledgedTransportMasterNodeAc
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -35,8 +34,7 @@ public class TransportDeleteTrainedModelAssignmentAction extends AcknowledgedTra
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
DeleteTrainedModelAssignmentAction.NAME,
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportFinalizeJobExecutionAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportFinalizeJobExecutionAction.java
index 0e2fb354b916..5888a605e368 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportFinalizeJobExecutionAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportFinalizeJobExecutionAction.java
@@ -19,7 +19,6 @@ import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -51,7 +50,6 @@ public class TransportFinalizeJobExecutionAction extends AcknowledgedTransportMa
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client
) {
super(
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportFlushTrainedModelCacheAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportFlushTrainedModelCacheAction.java
index b0c85f91aa60..3bb783f601b7 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportFlushTrainedModelCacheAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportFlushTrainedModelCacheAction.java
@@ -14,7 +14,6 @@ import org.elasticsearch.action.support.master.AcknowledgedTransportMasterNodeAc
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -34,7 +33,6 @@ public class TransportFlushTrainedModelCacheAction extends AcknowledgedTransport
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
TrainedModelCacheMetadataService modelCacheMetadataService
) {
super(
diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportGetDatafeedsAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportGetDatafeedsAction.java
index 65e53f5e3f21..50d18c00d746 100644
--- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportGetDatafeedsAction.java
+++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportGetDatafeedsAction.java
@@ -14,7 +14,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeReadAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -37,8 +36,7 @@ public class TransportGetDatafeedsAction extends TransportMasterNodeReadAction future = new PlainActionFuture<>();
diff --git a/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/ArchiveUsageTransportAction.java b/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/ArchiveUsageTransportAction.java
index 601a965ee609..22a293a645a2 100644
--- a/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/ArchiveUsageTransportAction.java
+++ b/x-pack/plugin/old-lucene-versions/src/main/java/org/elasticsearch/xpack/lucene/bwc/ArchiveUsageTransportAction.java
@@ -11,7 +11,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.license.XPackLicenseState;
@@ -36,7 +35,6 @@ public class ArchiveUsageTransportAction extends XPackUsageFeatureTransportActio
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
XPackLicenseState licenseState
) {
super(XPackUsageFeatureAction.ARCHIVE.name(), transportService, clusterService, threadPool, actionFilters);
diff --git a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/action/ProfilingUsageTransportAction.java b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/action/ProfilingUsageTransportAction.java
index ba8609da57f0..49dd05d25591 100644
--- a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/action/ProfilingUsageTransportAction.java
+++ b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/action/ProfilingUsageTransportAction.java
@@ -10,7 +10,6 @@ package org.elasticsearch.xpack.profiling.action;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.injection.guice.Inject;
@@ -35,7 +34,6 @@ public class ProfilingUsageTransportAction extends XPackUsageFeatureTransportAct
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
ProfilingLicenseChecker licenseChecker,
Settings settings
) {
diff --git a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/action/TransportGetStatusAction.java b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/action/TransportGetStatusAction.java
index ac619b342883..1381eac5faa8 100644
--- a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/action/TransportGetStatusAction.java
+++ b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/action/TransportGetStatusAction.java
@@ -20,7 +20,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateObserver;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.service.ClusterService;
@@ -52,8 +51,7 @@ public class TransportGetStatusAction extends TransportMasterNodeAction future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
RollupFeatureSetUsage rollupUsage = (RollupFeatureSetUsage) future.get().getUsage();
diff --git a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/action/SearchableSnapshotsUsageTransportAction.java b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/action/SearchableSnapshotsUsageTransportAction.java
index cd9576b40b16..8ba1df04c0f7 100644
--- a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/action/SearchableSnapshotsUsageTransportAction.java
+++ b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/action/SearchableSnapshotsUsageTransportAction.java
@@ -11,7 +11,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.license.XPackLicenseState;
@@ -36,7 +35,6 @@ public class SearchableSnapshotsUsageTransportAction extends XPackUsageFeatureTr
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
XPackLicenseState licenseState
) {
super(XPackUsageFeatureAction.SEARCHABLE_SNAPSHOTS.name(), transportService, clusterService, threadPool, actionFilters);
diff --git a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/action/TransportMountSearchableSnapshotAction.java b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/action/TransportMountSearchableSnapshotAction.java
index df5aa3d787b7..913e5f7a31fd 100644
--- a/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/action/TransportMountSearchableSnapshotAction.java
+++ b/x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/action/TransportMountSearchableSnapshotAction.java
@@ -17,7 +17,6 @@ import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.routing.allocation.DataTier;
import org.elasticsearch.cluster.routing.allocation.ExistingShardsAllocator;
import org.elasticsearch.cluster.routing.allocation.decider.DiskThresholdDecider;
@@ -85,7 +84,6 @@ public class TransportMountSearchableSnapshotAction extends TransportMasterNodeA
ThreadPool threadPool,
RepositoriesService repositoriesService,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
XPackLicenseState licenseState,
SystemIndices systemIndices
) {
diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/SecurityUsageTransportAction.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/SecurityUsageTransportAction.java
index fa196daee411..45b019ad18f7 100644
--- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/SecurityUsageTransportAction.java
+++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/SecurityUsageTransportAction.java
@@ -10,7 +10,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.RefCountingListener;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.Maps;
@@ -69,7 +68,6 @@ public class SecurityUsageTransportAction extends XPackUsageFeatureTransportActi
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Settings settings,
XPackLicenseState licenseState,
SecurityUsageServices securityServices
diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/settings/TransportGetSecuritySettingsAction.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/settings/TransportGetSecuritySettingsAction.java
index d238123667a0..0db860541ed6 100644
--- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/settings/TransportGetSecuritySettingsAction.java
+++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/settings/TransportGetSecuritySettingsAction.java
@@ -15,7 +15,6 @@ import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexAbstraction;
import org.elasticsearch.cluster.metadata.IndexMetadata;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -43,8 +42,7 @@ public class TransportGetSecuritySettingsAction extends TransportMasterNodeActio
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
GetSecuritySettingsAction.INSTANCE.name(),
diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/settings/TransportUpdateSecuritySettingsAction.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/settings/TransportUpdateSecuritySettingsAction.java
index 5042f2a8a014..f4ea5f58d062 100644
--- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/settings/TransportUpdateSecuritySettingsAction.java
+++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/settings/TransportUpdateSecuritySettingsAction.java
@@ -17,7 +17,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexAbstraction;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.MetadataUpdateSettingsService;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Strings;
@@ -53,8 +52,7 @@ public class TransportUpdateSecuritySettingsAction extends TransportMasterNodeAc
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- MetadataUpdateSettingsService metadataUpdateSettingsService,
- IndexNameExpressionResolver indexNameExpressionResolver
+ MetadataUpdateSettingsService metadataUpdateSettingsService
) {
super(
UpdateSecuritySettingsAction.INSTANCE.name(),
diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/LocalStateSecurity.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/LocalStateSecurity.java
index 98fc8a8a49c4..d75e0d4c5396 100644
--- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/LocalStateSecurity.java
+++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/LocalStateSecurity.java
@@ -10,7 +10,6 @@ import org.elasticsearch.action.ActionType;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.TransportAction;
import org.elasticsearch.client.internal.node.NodeClient;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.injection.guice.Inject;
@@ -49,10 +48,9 @@ public class LocalStateSecurity extends LocalStateCompositeXPackPlugin implement
TransportService transportService,
ClusterService clusterService,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
NodeClient client
) {
- super(threadPool, transportService, clusterService, actionFilters, indexNameExpressionResolver, client);
+ super(threadPool, transportService, clusterService, actionFilters, client);
}
@Override
diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityInfoTransportActionTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityInfoTransportActionTests.java
index 688e12fe727c..e0a971aef746 100644
--- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityInfoTransportActionTests.java
+++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityInfoTransportActionTests.java
@@ -373,7 +373,6 @@ public class SecurityInfoTransportActionTests extends ESTestCase {
null,
threadPool,
mock(ActionFilters.class),
- null,
settings,
licenseState,
securityServices
diff --git a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportDeleteShutdownNodeAction.java b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportDeleteShutdownNodeAction.java
index 9abee6b68e18..4f80922ce9f4 100644
--- a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportDeleteShutdownNodeAction.java
+++ b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportDeleteShutdownNodeAction.java
@@ -19,7 +19,6 @@ import org.elasticsearch.cluster.ClusterStateTaskExecutor;
import org.elasticsearch.cluster.ClusterStateTaskListener;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.metadata.NodesShutdownMetadata;
import org.elasticsearch.cluster.metadata.SingleNodeShutdownMetadata;
@@ -110,8 +109,7 @@ public class TransportDeleteShutdownNodeAction extends AcknowledgedTransportMast
ClusterService clusterService,
RerouteService rerouteService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
DeleteShutdownNodeAction.NAME,
diff --git a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportGetShutdownStatusAction.java b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportGetShutdownStatusAction.java
index 982525281e11..478a235f6838 100644
--- a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportGetShutdownStatusAction.java
+++ b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportGetShutdownStatusAction.java
@@ -16,7 +16,6 @@ import org.elasticsearch.cluster.ClusterInfoService;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.LifecycleExecutionState;
import org.elasticsearch.cluster.metadata.NodesShutdownMetadata;
import org.elasticsearch.cluster.metadata.ShutdownPersistentTasksStatus;
@@ -74,7 +73,6 @@ public class TransportGetShutdownStatusAction extends TransportMasterNodeAction<
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
AllocationService allocationService,
AllocationDeciders allocationDeciders,
ClusterInfoService clusterInfoService,
diff --git a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportPutShutdownNodeAction.java b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportPutShutdownNodeAction.java
index 6c13c9930d95..e8313d757f21 100644
--- a/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportPutShutdownNodeAction.java
+++ b/x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportPutShutdownNodeAction.java
@@ -18,7 +18,6 @@ import org.elasticsearch.cluster.ClusterStateTaskExecutor;
import org.elasticsearch.cluster.ClusterStateTaskListener;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.NodesShutdownMetadata;
import org.elasticsearch.cluster.metadata.SingleNodeShutdownMetadata;
import org.elasticsearch.cluster.node.DiscoveryNode;
@@ -154,8 +153,7 @@ public class TransportPutShutdownNodeAction extends AcknowledgedTransportMasterN
ClusterService clusterService,
AllocationService allocationService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
PutShutdownNodeAction.NAME,
diff --git a/x-pack/plugin/shutdown/src/test/java/org/elasticsearch/xpack/shutdown/TransportDeleteShutdownNodeActionTests.java b/x-pack/plugin/shutdown/src/test/java/org/elasticsearch/xpack/shutdown/TransportDeleteShutdownNodeActionTests.java
index 88f397ff9ad2..817ebf02aa37 100644
--- a/x-pack/plugin/shutdown/src/test/java/org/elasticsearch/xpack/shutdown/TransportDeleteShutdownNodeActionTests.java
+++ b/x-pack/plugin/shutdown/src/test/java/org/elasticsearch/xpack/shutdown/TransportDeleteShutdownNodeActionTests.java
@@ -12,7 +12,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateTaskExecutor;
import org.elasticsearch.cluster.ClusterStateTaskExecutor.TaskContext;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.metadata.NodesShutdownMetadata;
import org.elasticsearch.cluster.metadata.SingleNodeShutdownMetadata;
@@ -60,18 +59,10 @@ public class TransportDeleteShutdownNodeActionTests extends ESTestCase {
clusterService = mock(ClusterService.class);
var rerouteService = mock(RerouteService.class);
var actionFilters = mock(ActionFilters.class);
- var indexNameExpressionResolver = mock(IndexNameExpressionResolver.class);
when(clusterService.createTaskQueue(any(), any(), Mockito.>any())).thenReturn(
taskQueue
);
- action = new TransportDeleteShutdownNodeAction(
- transportService,
- clusterService,
- rerouteService,
- threadPool,
- actionFilters,
- indexNameExpressionResolver
- );
+ action = new TransportDeleteShutdownNodeAction(transportService, clusterService, rerouteService, threadPool, actionFilters);
}
public void testNoop() throws Exception {
diff --git a/x-pack/plugin/shutdown/src/test/java/org/elasticsearch/xpack/shutdown/TransportPutShutdownNodeActionTests.java b/x-pack/plugin/shutdown/src/test/java/org/elasticsearch/xpack/shutdown/TransportPutShutdownNodeActionTests.java
index ed603d30d059..b8be1de03959 100644
--- a/x-pack/plugin/shutdown/src/test/java/org/elasticsearch/xpack/shutdown/TransportPutShutdownNodeActionTests.java
+++ b/x-pack/plugin/shutdown/src/test/java/org/elasticsearch/xpack/shutdown/TransportPutShutdownNodeActionTests.java
@@ -13,7 +13,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateTaskExecutor;
import org.elasticsearch.cluster.ClusterStateTaskExecutor.TaskContext;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.SingleNodeShutdownMetadata.Type;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.node.DiscoveryNodes;
@@ -72,18 +71,10 @@ public class TransportPutShutdownNodeActionTests extends ESTestCase {
var allocationService = mock(AllocationService.class);
when(allocationService.reroute(any(ClusterState.class), anyString(), any())).then(invocation -> invocation.getArgument(0));
var actionFilters = mock(ActionFilters.class);
- var indexNameExpressionResolver = mock(IndexNameExpressionResolver.class);
when(clusterService.createTaskQueue(any(), any(), Mockito.>any())).thenReturn(
taskQueue
);
- action = new TransportPutShutdownNodeAction(
- transportService,
- clusterService,
- allocationService,
- threadPool,
- actionFilters,
- indexNameExpressionResolver
- );
+ action = new TransportPutShutdownNodeAction(transportService, clusterService, allocationService, threadPool, actionFilters);
}
public void testNoop() throws Exception {
diff --git a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SLMUsageTransportAction.java b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SLMUsageTransportAction.java
index 3cee86d26684..2cdca432aac9 100644
--- a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SLMUsageTransportAction.java
+++ b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/SLMUsageTransportAction.java
@@ -10,7 +10,6 @@ package org.elasticsearch.xpack.slm;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
@@ -30,8 +29,7 @@ public class SLMUsageTransportAction extends XPackUsageFeatureTransportAction {
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(XPackUsageFeatureAction.SNAPSHOT_LIFECYCLE.name(), transportService, clusterService, threadPool, actionFilters);
}
diff --git a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportDeleteSnapshotLifecycleAction.java b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportDeleteSnapshotLifecycleAction.java
index 6d3134c5d74c..da6c7fbb5f04 100644
--- a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportDeleteSnapshotLifecycleAction.java
+++ b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportDeleteSnapshotLifecycleAction.java
@@ -17,7 +17,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@@ -45,8 +44,7 @@ public class TransportDeleteSnapshotLifecycleAction extends TransportMasterNodeA
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
DeleteSnapshotLifecycleAction.NAME,
diff --git a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportExecuteSnapshotLifecycleAction.java b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportExecuteSnapshotLifecycleAction.java
index 6aafaee21c9e..a59a71373250 100644
--- a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportExecuteSnapshotLifecycleAction.java
+++ b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportExecuteSnapshotLifecycleAction.java
@@ -15,7 +15,6 @@ import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.tasks.Task;
@@ -43,7 +42,6 @@ public class TransportExecuteSnapshotLifecycleAction extends TransportMasterNode
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client,
SnapshotHistoryStore historyStore
) {
diff --git a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportExecuteSnapshotRetentionAction.java b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportExecuteSnapshotRetentionAction.java
index eff7b3144d6f..6b1dc1ed124e 100644
--- a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportExecuteSnapshotRetentionAction.java
+++ b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportExecuteSnapshotRetentionAction.java
@@ -17,7 +17,6 @@ import org.elasticsearch.action.support.master.AcknowledgedTransportMasterNodeAc
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.tasks.Task;
@@ -38,7 +37,6 @@ public class TransportExecuteSnapshotRetentionAction extends AcknowledgedTranspo
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
SnapshotRetentionService retentionService
) {
super(
diff --git a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportGetSLMStatusAction.java b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportGetSLMStatusAction.java
index 0d9ab7c057ae..0e92c683fcd7 100644
--- a/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportGetSLMStatusAction.java
+++ b/x-pack/plugin/slm/src/main/java/org/elasticsearch/xpack/slm/action/TransportGetSLMStatusAction.java
@@ -14,7 +14,6 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@@ -32,8 +31,7 @@ public class TransportGetSLMStatusAction extends TransportMasterNodeAction future = new PlainActionFuture<>();
@@ -94,7 +93,6 @@ public class SpatialInfoTransportActionTests extends ESTestCase {
clusterService,
threadPool,
mock(ActionFilters.class),
- null,
mockClient()
);
PlainActionFuture future = new PlainActionFuture<>();
diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/SqlUsageTransportAction.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/SqlUsageTransportAction.java
index 284cd72576b6..4191d326ed32 100644
--- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/SqlUsageTransportAction.java
+++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/SqlUsageTransportAction.java
@@ -10,7 +10,6 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
@@ -39,7 +38,6 @@ public class SqlUsageTransportAction extends XPackUsageFeatureTransportAction {
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client
) {
super(XPackUsageFeatureAction.SQL.name(), transportService, clusterService, threadPool, actionFilters);
diff --git a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/SqlInfoTransportActionTests.java b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/SqlInfoTransportActionTests.java
index c663a48895a3..e8100a6e3c4b 100644
--- a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/SqlInfoTransportActionTests.java
+++ b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/SqlInfoTransportActionTests.java
@@ -95,14 +95,7 @@ public class SqlInfoTransportActionTests extends ESTestCase {
ThreadPool threadPool = mock(ThreadPool.class);
TransportService transportService = MockUtils.setupTransportServiceWithThreadpoolExecutor(threadPool);
- var usageAction = new SqlUsageTransportAction(
- transportService,
- clusterService,
- threadPool,
- mock(ActionFilters.class),
- null,
- client
- );
+ var usageAction = new SqlUsageTransportAction(transportService, clusterService, threadPool, mock(ActionFilters.class), client);
PlainActionFuture future = new PlainActionFuture<>();
usageAction.masterOperation(mock(Task.class), null, null, future);
SqlFeatureSetUsage sqlUsage = (SqlFeatureSetUsage) future.get().getUsage();
diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/TransformUsageTransportAction.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/TransformUsageTransportAction.java
index 5f7ec0a3cc2d..d8b1056078ba 100644
--- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/TransformUsageTransportAction.java
+++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/TransformUsageTransportAction.java
@@ -16,7 +16,6 @@ import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.injection.guice.Inject;
@@ -78,7 +77,6 @@ public class TransformUsageTransportAction extends XPackUsageFeatureTransportAct
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Client client
) {
super(XPackUsageFeatureAction.TRANSFORM.name(), transportService, clusterService, threadPool, actionFilters);
diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportDeleteTransformAction.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportDeleteTransformAction.java
index 619e72581cb5..d2cfdeac2886 100644
--- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportDeleteTransformAction.java
+++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportDeleteTransformAction.java
@@ -23,7 +23,6 @@ import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.core.TimeValue;
@@ -67,7 +66,6 @@ public class TransportDeleteTransformAction extends AcknowledgedTransportMasterN
ActionFilters actionFilters,
ThreadPool threadPool,
ClusterService clusterService,
- IndexNameExpressionResolver indexNameExpressionResolver,
TransformServices transformServices,
Client client
) {
diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportSetTransformResetModeAction.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportSetTransformResetModeAction.java
index 460cad9bd6b2..e164612c42f6 100644
--- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportSetTransformResetModeAction.java
+++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportSetTransformResetModeAction.java
@@ -8,7 +8,6 @@ package org.elasticsearch.xpack.transform.action;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
@@ -26,10 +25,9 @@ public class TransportSetTransformResetModeAction extends AbstractTransportSetRe
TransportService transportService,
ThreadPool threadPool,
ClusterService clusterService,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
- super(SetResetModeAction.NAME, transportService, threadPool, clusterService, actionFilters, indexNameExpressionResolver);
+ super(SetResetModeAction.NAME, transportService, threadPool, clusterService, actionFilters);
}
@Override
diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportSetTransformUpgradeModeAction.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportSetTransformUpgradeModeAction.java
index 0d41d1a9a55d..717a8d86c2cb 100644
--- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportSetTransformUpgradeModeAction.java
+++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportSetTransformUpgradeModeAction.java
@@ -18,7 +18,6 @@ import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.client.internal.OriginSettingClient;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.persistent.PersistentTasksClusterService;
@@ -53,20 +52,11 @@ public class TransportSetTransformUpgradeModeAction extends AbstractTransportSet
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
PersistentTasksClusterService persistentTasksClusterService,
PersistentTasksService persistentTasksService,
Client client
) {
- super(
- SetTransformUpgradeModeAction.NAME,
- "transform",
- transportService,
- clusterService,
- threadPool,
- actionFilters,
- indexNameExpressionResolver
- );
+ super(SetTransformUpgradeModeAction.NAME, "transform", transportService, clusterService, threadPool, actionFilters);
this.persistentTasksClusterService = persistentTasksClusterService;
this.persistentTasksService = persistentTasksService;
this.client = new OriginSettingClient(client, TRANSFORM_ORIGIN);
diff --git a/x-pack/plugin/transform/src/test/java/org/elasticsearch/xpack/transform/action/TransportSetTransformUpgradeModeActionTests.java b/x-pack/plugin/transform/src/test/java/org/elasticsearch/xpack/transform/action/TransportSetTransformUpgradeModeActionTests.java
index f31922d5b69f..c9ee8e943d5f 100644
--- a/x-pack/plugin/transform/src/test/java/org/elasticsearch/xpack/transform/action/TransportSetTransformUpgradeModeActionTests.java
+++ b/x-pack/plugin/transform/src/test/java/org/elasticsearch/xpack/transform/action/TransportSetTransformUpgradeModeActionTests.java
@@ -78,7 +78,6 @@ public class TransportSetTransformUpgradeModeActionTests extends ESTestCase {
clusterService,
threadPool,
mock(),
- mock(),
persistentTasksClusterService,
persistentTasksService,
client
diff --git a/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyUsageTransportAction.java b/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyUsageTransportAction.java
index 62835a90c9af..b9873b31881f 100644
--- a/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyUsageTransportAction.java
+++ b/x-pack/plugin/voting-only-node/src/main/java/org/elasticsearch/cluster/coordination/votingonly/VotingOnlyUsageTransportAction.java
@@ -10,7 +10,6 @@ package org.elasticsearch.cluster.coordination.votingonly;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
@@ -29,8 +28,7 @@ public class VotingOnlyUsageTransportAction extends XPackUsageFeatureTransportAc
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(XPackUsageFeatureAction.VOTING_ONLY.name(), transportService, clusterService, threadPool, actionFilters);
}
diff --git a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/WatcherUsageTransportAction.java b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/WatcherUsageTransportAction.java
index 35332d720787..8bf4ae276034 100644
--- a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/WatcherUsageTransportAction.java
+++ b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/WatcherUsageTransportAction.java
@@ -11,7 +11,6 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.ContextPreservingActionListener;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.ThreadContext;
@@ -49,7 +48,6 @@ public class WatcherUsageTransportAction extends XPackUsageFeatureTransportActio
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver,
Settings settings,
XPackLicenseState licenseState,
Client client
diff --git a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/transport/actions/TransportWatcherServiceAction.java b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/transport/actions/TransportWatcherServiceAction.java
index 0abb3159864d..7874a95b4b9e 100644
--- a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/transport/actions/TransportWatcherServiceAction.java
+++ b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/transport/actions/TransportWatcherServiceAction.java
@@ -18,7 +18,6 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
-import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.core.SuppressForbidden;
@@ -42,8 +41,7 @@ public class TransportWatcherServiceAction extends AcknowledgedTransportMasterNo
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
- ActionFilters actionFilters,
- IndexNameExpressionResolver indexNameExpressionResolver
+ ActionFilters actionFilters
) {
super(
WatcherServiceAction.NAME,
diff --git a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherInfoTransportActionTests.java b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherInfoTransportActionTests.java
index 87258afcc532..2fd38a7b81cd 100644
--- a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherInfoTransportActionTests.java
+++ b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/WatcherInfoTransportActionTests.java
@@ -138,7 +138,6 @@ public class WatcherInfoTransportActionTests extends ESTestCase {
clusterService,
threadPool,
mock(ActionFilters.class),
- null,
Settings.EMPTY,
licenseState,
client
From c7bcdd37f4f76b9fe5bebf6667fe46392576ebe7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lorenzo=20Dematt=C3=A9?=
Date: Mon, 24 Feb 2025 18:27:36 +0100
Subject: [PATCH 03/10] [Entitlements] Cross-platform implementation of
Path.isAbsolute() (#123282)
---
.../policy/entitlements/FilesEntitlement.java | 57 +++++++++++++++++--
.../policy/entitlements/FileDataTests.java | 41 +++++++++++++
.../entitlements/FilesEntitlementTests.java | 26 ++++++++-
3 files changed, 117 insertions(+), 7 deletions(-)
create mode 100644 libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FileDataTests.java
diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java
index 21b54ba51ca8..7f356daea832 100644
--- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java
+++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java
@@ -21,6 +21,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.stream.Stream;
+import static java.lang.Character.isLetter;
+
/**
* Describes a file entitlement with a path and mode.
*/
@@ -60,6 +62,51 @@ public record FilesEntitlement(List filesData) implements Entitlement
static FileData ofRelativePathSetting(String setting, BaseDir baseDir, Mode mode) {
return new RelativePathSettingFileData(setting, baseDir, mode);
}
+
+ /**
+ * Tests if a path is absolute or relative, taking into consideration both Unix and Windows conventions.
+ * Note that this leads to a conflict, resolved in favor of Unix rules: `/foo` can be either a Unix absolute path, or a Windows
+ * relative path with "wrong" directory separator (using non-canonical slash in Windows).
+ */
+ static boolean isAbsolutePath(String path) {
+ if (path.isEmpty()) {
+ return false;
+ }
+ if (path.charAt(0) == '/') {
+ // Unix/BSD absolute
+ return true;
+ }
+
+ return isWindowsAbsolutePath(path);
+ }
+
+ private static boolean isSlash(char c) {
+ return (c == '\\') || (c == '/');
+ }
+
+ private static boolean isWindowsAbsolutePath(String input) {
+ // if a prefix is present, we expected (long) UNC or (long) absolute
+ if (input.startsWith("\\\\?\\")) {
+ return true;
+ }
+
+ if (input.length() > 1) {
+ char c0 = input.charAt(0);
+ char c1 = input.charAt(1);
+ char c = 0;
+ int next = 2;
+ if (isSlash(c0) && isSlash(c1)) {
+ // Two slashes or more: UNC
+ return true;
+ }
+ if (isLetter(c0) && c1 == ':') {
+ // A drive: absolute
+ return true;
+ }
+ }
+ // Otherwise relative
+ return false;
+ }
}
private sealed interface RelativeFileData extends FileData {
@@ -190,17 +237,15 @@ public record FilesEntitlement(List filesData) implements Entitlement
throw new PolicyValidationException("files entitlement with a 'relative_path' must specify 'relative_to'");
}
- Path relativePath = Path.of(relativePathAsString);
- if (relativePath.isAbsolute()) {
+ if (FileData.isAbsolutePath(relativePathAsString)) {
throw new PolicyValidationException("'relative_path' [" + relativePathAsString + "] must be relative");
}
- filesData.add(FileData.ofRelativePath(relativePath, baseDir, mode));
+ filesData.add(FileData.ofRelativePath(Path.of(relativePathAsString), baseDir, mode));
} else if (pathAsString != null) {
- Path path = Path.of(pathAsString);
- if (path.isAbsolute() == false) {
+ if (FileData.isAbsolutePath(pathAsString) == false) {
throw new PolicyValidationException("'path' [" + pathAsString + "] must be absolute");
}
- filesData.add(FileData.ofPath(path, mode));
+ filesData.add(FileData.ofPath(Path.of(pathAsString), mode));
} else if (pathSetting != null) {
filesData.add(FileData.ofPathSetting(pathSetting, mode));
} else if (relativePathSetting != null) {
diff --git a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FileDataTests.java b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FileDataTests.java
new file mode 100644
index 000000000000..12ac8e2d6305
--- /dev/null
+++ b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FileDataTests.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the "Elastic License
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
+ * Public License v 1"; you may not use this file except in compliance with, at
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
+ * License v3.0 only", or the "Server Side Public License, v 1".
+ */
+
+package org.elasticsearch.entitlement.runtime.policy.entitlements;
+
+import org.elasticsearch.test.ESTestCase;
+
+import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.FileData.isAbsolutePath;
+import static org.hamcrest.Matchers.is;
+
+public class FileDataTests extends ESTestCase {
+
+ public void testPathIsAbsolute() {
+ var windowsNamedPipe = "\\\\.\\pipe";
+ var windowsDosAbsolutePath = "C:\\temp";
+ var unixAbsolutePath = "/tmp/foo";
+ var unixStyleUncPath = "//C/temp";
+ var uncPath = "\\\\C\\temp";
+ var longPath = "\\\\?\\C:\\temp";
+
+ var relativePath = "foo";
+ var headingSlashRelativePath = "\\foo";
+
+ assertThat(isAbsolutePath(windowsNamedPipe), is(true));
+ assertThat(isAbsolutePath(windowsDosAbsolutePath), is(true));
+ assertThat(isAbsolutePath(unixAbsolutePath), is(true));
+ assertThat(isAbsolutePath(unixStyleUncPath), is(true));
+ assertThat(isAbsolutePath(uncPath), is(true));
+ assertThat(isAbsolutePath(longPath), is(true));
+
+ assertThat(isAbsolutePath(relativePath), is(false));
+ assertThat(isAbsolutePath(headingSlashRelativePath), is(false));
+ assertThat(isAbsolutePath(""), is(false));
+ }
+}
diff --git a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java
index b871e8ccf3e6..ceabf686d28f 100644
--- a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java
+++ b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java
@@ -60,12 +60,36 @@ public class FilesEntitlementTests extends ESTestCase {
assertThat(ex.getMessage(), is("invalid relative directory: bar, valid values: [config, data, home]"));
}
- public void testFileDataRelativeWithEmptyDirectory() {
+ public void testFileDataRelativeWithAbsoluteDirectoryFails() {
var fileData = FileData.ofRelativePath(Path.of(""), FilesEntitlement.BaseDir.DATA, READ_WRITE);
var dataDirs = fileData.resolvePaths(TEST_PATH_LOOKUP);
assertThat(dataDirs.toList(), contains(Path.of("/data1/"), Path.of("/data2")));
}
+ public void testFileDataAbsoluteWithRelativeDirectoryFails() {
+ var ex = expectThrows(
+ PolicyValidationException.class,
+ () -> FilesEntitlement.build(List.of((Map.of("path", "foo", "mode", "read"))))
+ );
+
+ assertThat(ex.getMessage(), is("'path' [foo] must be absolute"));
+ }
+
+ public void testFileDataRelativeWithEmptyDirectory() {
+ var ex = expectThrows(
+ PolicyValidationException.class,
+ () -> FilesEntitlement.build(List.of((Map.of("relative_path", "/foo", "mode", "read", "relative_to", "config"))))
+ );
+
+ var ex2 = expectThrows(
+ PolicyValidationException.class,
+ () -> FilesEntitlement.build(List.of((Map.of("relative_path", "C:\\foo", "mode", "read", "relative_to", "config"))))
+ );
+
+ assertThat(ex.getMessage(), is("'relative_path' [/foo] must be relative"));
+ assertThat(ex2.getMessage(), is("'relative_path' [C:\\foo] must be relative"));
+ }
+
public void testPathSettingResolve() {
var entitlement = FilesEntitlement.build(List.of(Map.of("path_setting", "foo.bar", "mode", "read")));
var filesData = entitlement.filesData();
From 4c3ceae98636b16c28e9ead746515b1830667416 Mon Sep 17 00:00:00 2001
From: Pat Whelan
Date: Mon, 24 Feb 2025 13:03:15 -0500
Subject: [PATCH 04/10] [ML] Set Connect Timeout to 5s (#123272)
Reduced connection timeout from infinite to a system configurable
setting that defaults to 5s.
Increased EIS auth token timeout from 30s to 1m.
---
docs/changelog/123272.yaml | 5 +++++
.../inference/external/http/HttpClient.java | 13 +++++++++----
.../inference/external/http/HttpSettings.java | 16 +++++++++++++++-
...sticInferenceServiceAuthorizationHandler.java | 4 ++--
4 files changed, 31 insertions(+), 7 deletions(-)
create mode 100644 docs/changelog/123272.yaml
diff --git a/docs/changelog/123272.yaml b/docs/changelog/123272.yaml
new file mode 100644
index 000000000000..18db2437f85c
--- /dev/null
+++ b/docs/changelog/123272.yaml
@@ -0,0 +1,5 @@
+pr: 123272
+summary: Set Connect Timeout to 5s
+area: Machine Learning
+type: bug
+issues: []
diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/HttpClient.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/HttpClient.java
index f0102d01b37a..f890b6fce13d 100644
--- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/HttpClient.java
+++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/HttpClient.java
@@ -8,6 +8,7 @@
package org.elasticsearch.xpack.inference.external.http;
import org.apache.http.HttpResponse;
+import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.concurrent.FutureCallback;
import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
@@ -56,14 +57,18 @@ public class HttpClient implements Closeable {
PoolingNHttpClientConnectionManager connectionManager,
ThrottlerManager throttlerManager
) {
- CloseableHttpAsyncClient client = createAsyncClient(Objects.requireNonNull(connectionManager));
+ var client = createAsyncClient(Objects.requireNonNull(connectionManager), Objects.requireNonNull(settings));
return new HttpClient(settings, client, threadPool, throttlerManager);
}
- private static CloseableHttpAsyncClient createAsyncClient(PoolingNHttpClientConnectionManager connectionManager) {
- HttpAsyncClientBuilder clientBuilder = HttpAsyncClientBuilder.create();
- clientBuilder.setConnectionManager(connectionManager);
+ private static CloseableHttpAsyncClient createAsyncClient(
+ PoolingNHttpClientConnectionManager connectionManager,
+ HttpSettings settings
+ ) {
+ var requestConfig = RequestConfig.custom().setConnectTimeout(settings.connectionTimeout()).build();
+
+ var clientBuilder = HttpAsyncClientBuilder.create().setConnectionManager(connectionManager).setDefaultRequestConfig(requestConfig);
// The apache client will be shared across all connections because it can be expensive to create it
// so we don't want to support cookies to avoid accidental authentication for unauthorized users
clientBuilder.disableCookieManagement();
diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/HttpSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/HttpSettings.java
index 270e62765ba7..72dfd7bcd1b1 100644
--- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/HttpSettings.java
+++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/HttpSettings.java
@@ -12,6 +12,7 @@ import org.elasticsearch.common.settings.Setting;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.unit.ByteSizeUnit;
import org.elasticsearch.common.unit.ByteSizeValue;
+import org.elasticsearch.core.TimeValue;
import java.util.List;
import java.util.Objects;
@@ -27,12 +28,21 @@ public class HttpSettings {
Setting.Property.Dynamic
);
+ // The time we wait for a connection to establish
+ public static final Setting CONNECTION_TIMEOUT = Setting.timeSetting(
+ "xpack.inference.http.connect_timeout",
+ TimeValue.timeValueSeconds(5),
+ Setting.Property.NodeScope
+ );
+
private volatile ByteSizeValue maxResponseSize;
+ private final int connectionTimeout;
public HttpSettings(Settings settings, ClusterService clusterService) {
Objects.requireNonNull(clusterService);
Objects.requireNonNull(settings);
maxResponseSize = MAX_HTTP_RESPONSE_SIZE.get(settings);
+ connectionTimeout = Math.toIntExact(CONNECTION_TIMEOUT.get(settings).getMillis());
clusterService.getClusterSettings().addSettingsUpdateConsumer(MAX_HTTP_RESPONSE_SIZE, this::setMaxResponseSize);
}
@@ -41,11 +51,15 @@ public class HttpSettings {
return maxResponseSize;
}
+ public int connectionTimeout() {
+ return connectionTimeout;
+ }
+
private void setMaxResponseSize(ByteSizeValue maxResponseSize) {
this.maxResponseSize = maxResponseSize;
}
public static List> getSettingsDefinitions() {
- return List.of(MAX_HTTP_RESPONSE_SIZE);
+ return List.of(MAX_HTTP_RESPONSE_SIZE, CONNECTION_TIMEOUT);
}
}
diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/authorization/ElasticInferenceServiceAuthorizationHandler.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/authorization/ElasticInferenceServiceAuthorizationHandler.java
index 4061e78c31dc..b55ae9f76cad 100644
--- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/authorization/ElasticInferenceServiceAuthorizationHandler.java
+++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/authorization/ElasticInferenceServiceAuthorizationHandler.java
@@ -29,7 +29,6 @@ import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-import static org.elasticsearch.xpack.core.inference.action.InferenceAction.Request.DEFAULT_TIMEOUT;
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceService.ELASTIC_INFERENCE_SERVICE_IDENTIFIER;
/**
@@ -39,6 +38,7 @@ public class ElasticInferenceServiceAuthorizationHandler {
private static final String FAILED_TO_RETRIEVE_MESSAGE =
"Failed to retrieve the authorization information from the Elastic Inference Service.";
+ private static final TimeValue DEFAULT_AUTH_TIMEOUT = TimeValue.timeValueMinutes(1);
private static final ResponseHandler AUTH_RESPONSE_HANDLER = createAuthResponseHandler();
private static ResponseHandler createAuthResponseHandler() {
@@ -110,7 +110,7 @@ public class ElasticInferenceServiceAuthorizationHandler {
var request = new ElasticInferenceServiceAuthorizationRequest(baseUrl, getCurrentTraceInfo());
- sender.sendWithoutQueuing(logger, request, AUTH_RESPONSE_HANDLER, DEFAULT_TIMEOUT, newListener);
+ sender.sendWithoutQueuing(logger, request, AUTH_RESPONSE_HANDLER, DEFAULT_AUTH_TIMEOUT, newListener);
} catch (Exception e) {
logger.warn(Strings.format("Retrieving the authorization information encountered an exception: %s", e));
requestCompleteLatch.countDown();
From 5664f4f2bad216ec9ba0e716d36d7b86b527dec1 Mon Sep 17 00:00:00 2001
From: Samiul Monir <150824886+Samiul-TheSoccerFan@users.noreply.github.com>
Date: Mon, 24 Feb 2025 13:16:22 -0500
Subject: [PATCH 05/10] Improved error message when index field type is unknown
(#122860)
* Updating error message when index field type is unknown
* Fix style issue
* Add yaml test for invalid field type error message
* Update docs/changelog/122860.yaml
* Updating error message for runtime and multi field type parser
* add and fix yaml tests
* Fix code styles by running spotlessApply
* Update changelog
* Updatig the test in yml
* Updating error message for runtime
* Fix failing yaml tests
* Update error message to Fix unit tests
* fix serverless qa test
---------
Co-authored-by: Elastic Machine
---
docs/changelog/122860.yaml | 5 ++
.../test/indices.create/10_basic.yml | 59 +++++++++++++++++++
.../index/mapper/MapperFeatures.java | 4 ++
.../index/mapper/ObjectMapper.java | 10 +++-
.../index/mapper/RuntimeField.java | 10 +++-
.../index/mapper/TypeParsers.java | 10 +++-
.../index/mapper/RootObjectMapperTests.java | 12 +++-
.../test/transform/transforms_crud.yml | 2 +-
8 files changed, 106 insertions(+), 6 deletions(-)
create mode 100644 docs/changelog/122860.yaml
diff --git a/docs/changelog/122860.yaml b/docs/changelog/122860.yaml
new file mode 100644
index 000000000000..16f234dc17d9
--- /dev/null
+++ b/docs/changelog/122860.yaml
@@ -0,0 +1,5 @@
+pr: 122860
+summary: Improved error message when index field type is invalid
+area: Mapping
+type: enhancement
+issues: []
diff --git a/rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/indices.create/10_basic.yml b/rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/indices.create/10_basic.yml
index 8645c91a51ad..7fe95aa4f4ff 100644
--- a/rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/indices.create/10_basic.yml
+++ b/rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/indices.create/10_basic.yml
@@ -214,3 +214,62 @@
index.mode: lookup
index.number_of_shards: 2
+---
+"Create index with invalid field type":
+ - requires:
+ cluster_features: [ "mapper.unknown_field_mapping_update_error_message" ]
+ reason: "Update error message for unknown field type"
+
+ - do:
+ catch: bad_request
+ indices.create:
+ index: test_index
+ body:
+ mappings:
+ properties:
+ content:
+ type: invalid
+
+ - match: { error.type: "mapper_parsing_exception" }
+ - match: { error.reason: "Failed to parse mapping: The mapper type [invalid] declared on field [content] does not exist. It might have been created within a future version or requires a plugin to be installed. Check the documentation." }
+
+---
+"Create index with invalid runtime field type":
+ - requires:
+ cluster_features: [ "mapper.unknown_field_mapping_update_error_message" ]
+ reason: "Update error message for unknown field type"
+
+ - do:
+ catch: bad_request
+ indices.create:
+ index: test_index
+ body:
+ mappings:
+ runtime:
+ content:
+ type: invalid
+
+ - match: { error.type: "mapper_parsing_exception" }
+ - match: { error.reason: "Failed to parse mapping: The mapper type [invalid] declared on runtime field [content] does not exist. It might have been created within a future version or requires a plugin to be installed. Check the documentation." }
+
+---
+"Create index with invalid multi-field type":
+ - requires:
+ cluster_features: [ "mapper.unknown_field_mapping_update_error_message" ]
+ reason: "Update error message for unknown field type"
+
+ - do:
+ catch: bad_request
+ indices.create:
+ index: test_index
+ body:
+ mappings:
+ properties:
+ city:
+ type: text
+ fields:
+ raw:
+ type: invalid
+
+ - match: { error.type: "mapper_parsing_exception" }
+ - match: { error.reason: "Failed to parse mapping: The mapper type [invalid] declared on field [raw] does not exist. It might have been created within a future version or requires a plugin to be installed. Check the documentation." }
diff --git a/server/src/main/java/org/elasticsearch/index/mapper/MapperFeatures.java b/server/src/main/java/org/elasticsearch/index/mapper/MapperFeatures.java
index 209b3bca7856..b21018f7dfb5 100644
--- a/server/src/main/java/org/elasticsearch/index/mapper/MapperFeatures.java
+++ b/server/src/main/java/org/elasticsearch/index/mapper/MapperFeatures.java
@@ -33,6 +33,9 @@ public class MapperFeatures implements FeatureSpecification {
public static final NodeFeature SORT_FIELDS_CHECK_FOR_NESTED_OBJECT_FIX = new NodeFeature("mapper.nested.sorting_fields_check_fix");
public static final NodeFeature DYNAMIC_HANDLING_IN_COPY_TO = new NodeFeature("mapper.copy_to.dynamic_handling");
public static final NodeFeature DOC_VALUES_SKIPPER = new NodeFeature("mapper.doc_values_skipper");
+ static final NodeFeature UKNOWN_FIELD_MAPPING_UPDATE_ERROR_MESSAGE = new NodeFeature(
+ "mapper.unknown_field_mapping_update_error_message"
+ );
@Override
public Set getTestFeatures() {
@@ -54,6 +57,7 @@ public class MapperFeatures implements FeatureSpecification {
TSDB_NESTED_FIELD_SUPPORT,
SourceFieldMapper.SYNTHETIC_RECOVERY_SOURCE,
ObjectMapper.SUBOBJECTS_FALSE_MAPPING_UPDATE_FIX,
+ UKNOWN_FIELD_MAPPING_UPDATE_ERROR_MESSAGE,
DOC_VALUES_SKIPPER
);
}
diff --git a/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java
index 4c9214015fba..ccc24e46937c 100644
--- a/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java
+++ b/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java
@@ -396,7 +396,15 @@ public class ObjectMapper extends Mapper {
}
Mapper.TypeParser typeParser = parserContext.typeParser(type);
if (typeParser == null) {
- throw new MapperParsingException("No handler for type [" + type + "] declared on field [" + fieldName + "]");
+ throw new MapperParsingException(
+ "The mapper type ["
+ + type
+ + "] declared on field ["
+ + fieldName
+ + "] does not exist."
+ + " It might have been created within a future version or requires a plugin to be installed."
+ + " Check the documentation."
+ );
}
Mapper.Builder fieldBuilder;
if (objBuilder.subobjects.isPresent() && objBuilder.subobjects.get() != Subobjects.ENABLED) {
diff --git a/server/src/main/java/org/elasticsearch/index/mapper/RuntimeField.java b/server/src/main/java/org/elasticsearch/index/mapper/RuntimeField.java
index ea8fc7b1cf84..d7fbb8739d1f 100644
--- a/server/src/main/java/org/elasticsearch/index/mapper/RuntimeField.java
+++ b/server/src/main/java/org/elasticsearch/index/mapper/RuntimeField.java
@@ -179,7 +179,15 @@ public interface RuntimeField extends ToXContentFragment {
}
Parser typeParser = parserContext.runtimeFieldParser(type);
if (typeParser == null) {
- throw new MapperParsingException("No handler for type [" + type + "] declared on runtime field [" + fieldName + "]");
+ throw new MapperParsingException(
+ "The mapper type ["
+ + type
+ + "] declared on runtime field ["
+ + fieldName
+ + "] does not exist."
+ + " It might have been created within a future version or requires a plugin to be installed."
+ + " Check the documentation."
+ );
}
runtimeFields.put(fieldName, builder.apply(typeParser.parse(fieldName, propNode, parserContext)));
propNode.remove("type");
diff --git a/server/src/main/java/org/elasticsearch/index/mapper/TypeParsers.java b/server/src/main/java/org/elasticsearch/index/mapper/TypeParsers.java
index b60feb4d5746..7be9d658297c 100644
--- a/server/src/main/java/org/elasticsearch/index/mapper/TypeParsers.java
+++ b/server/src/main/java/org/elasticsearch/index/mapper/TypeParsers.java
@@ -161,7 +161,15 @@ public class TypeParsers {
Mapper.TypeParser typeParser = parserContext.typeParser(type);
if (typeParser == null) {
- throw new MapperParsingException("no handler for type [" + type + "] declared on field [" + multiFieldName + "]");
+ throw new MapperParsingException(
+ "The mapper type ["
+ + type
+ + "] declared on field ["
+ + multiFieldName
+ + "] does not exist."
+ + " It might have been created within a future version or requires a plugin to be installed."
+ + " Check the documentation."
+ );
}
if (typeParser instanceof FieldMapper.TypeParser == false) {
throw new MapperParsingException("Type [" + type + "] cannot be used in multi field");
diff --git a/server/src/test/java/org/elasticsearch/index/mapper/RootObjectMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/RootObjectMapperTests.java
index 562ed50637e3..f20eaeb5037b 100644
--- a/server/src/test/java/org/elasticsearch/index/mapper/RootObjectMapperTests.java
+++ b/server/src/test/java/org/elasticsearch/index/mapper/RootObjectMapperTests.java
@@ -313,13 +313,21 @@ public class RootObjectMapperTests extends MapperServiceTestCase {
public void testRuntimeSectionNonRuntimeType() throws IOException {
XContentBuilder mapping = runtimeFieldMapping(builder -> builder.field("type", "unknown"));
MapperParsingException e = expectThrows(MapperParsingException.class, () -> createMapperService(mapping));
- assertEquals("Failed to parse mapping: No handler for type [unknown] declared on runtime field [field]", e.getMessage());
+ assertEquals(
+ "Failed to parse mapping: The mapper type [unknown] declared on runtime field [field] does not exist."
+ + " It might have been created within a future version or requires a plugin to be installed. Check the documentation.",
+ e.getMessage()
+ );
}
public void testRuntimeSectionHandlerNotFound() throws IOException {
XContentBuilder mapping = runtimeFieldMapping(builder -> builder.field("type", "unknown"));
MapperParsingException e = expectThrows(MapperParsingException.class, () -> createMapperService(mapping));
- assertEquals("Failed to parse mapping: No handler for type [unknown] declared on runtime field [field]", e.getMessage());
+ assertEquals(
+ "Failed to parse mapping: The mapper type [unknown] declared on runtime field [field] does not exist."
+ + " It might have been created within a future version or requires a plugin to be installed. Check the documentation.",
+ e.getMessage()
+ );
}
public void testRuntimeSectionMissingType() throws IOException {
diff --git a/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/transform/transforms_crud.yml b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/transform/transforms_crud.yml
index 729094ba7e9d..6bb619851701 100644
--- a/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/transform/transforms_crud.yml
+++ b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/transform/transforms_crud.yml
@@ -407,7 +407,7 @@ setup:
---
"Test transform where source query is invalid":
- do:
- catch: /No handler for type \[bad-type\] declared on runtime field \[rt-field\]/
+ catch: /The mapper type \[bad-type\] declared on runtime field \[rt-field\]/
transform.put_transform:
transform_id: "airline-transform"
body: >
From 763e7cd44a8b74ecc51489b577e0da7c302f458e Mon Sep 17 00:00:00 2001
From: Patrick Doyle <810052+prdoyle@users.noreply.github.com>
Date: Mon, 24 Feb 2025 13:50:33 -0500
Subject: [PATCH 06/10] FileAccessTree fixes for ordering and pruning (#123291)
* Custom comparator for paths in FileAccessTree
* Strip trailing separators in normalizePath
---
.../runtime/policy/FileAccessTree.java | 48 ++++++++++++++++---
.../runtime/policy/FileAccessTreeTests.java | 22 +++++++++
2 files changed, 63 insertions(+), 7 deletions(-)
diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTree.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTree.java
index 660459f06d58..b1773e9a076f 100644
--- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTree.java
+++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTree.java
@@ -14,6 +14,7 @@ import org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlemen
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Comparator;
import java.util.List;
import java.util.Objects;
@@ -46,8 +47,8 @@ public final class FileAccessTree {
readPaths.add(tempDir);
writePaths.add(tempDir);
- readPaths.sort(String::compareTo);
- writePaths.sort(String::compareTo);
+ readPaths.sort(PATH_ORDER);
+ writePaths.sort(PATH_ORDER);
this.readPaths = pruneSortedPaths(readPaths).toArray(new String[0]);
this.writePaths = pruneSortedPaths(writePaths).toArray(new String[0]);
@@ -60,7 +61,7 @@ public final class FileAccessTree {
prunedReadPaths.add(currentPath);
for (int i = 1; i < paths.size(); ++i) {
String nextPath = paths.get(i);
- if (nextPath.startsWith(currentPath) == false) {
+ if (isParent(currentPath, nextPath) == false) {
prunedReadPaths.add(nextPath);
currentPath = nextPath;
}
@@ -88,21 +89,28 @@ public final class FileAccessTree {
// Note that toAbsolutePath produces paths separated by the default file separator,
// so on Windows, if the given path uses forward slashes, this consistently
// converts it to backslashes.
- return path.toAbsolutePath().normalize().toString();
+ String result = path.toAbsolutePath().normalize().toString();
+ while (result.endsWith(FILE_SEPARATOR)) {
+ result = result.substring(0, result.length() - FILE_SEPARATOR.length());
+ }
+ return result;
}
private static boolean checkPath(String path, String[] paths) {
if (paths.length == 0) {
return false;
}
- int ndx = Arrays.binarySearch(paths, path);
+ int ndx = Arrays.binarySearch(paths, path, PATH_ORDER);
if (ndx < -1) {
- String maybeParent = paths[-ndx - 2];
- return path.startsWith(maybeParent) && path.startsWith(FILE_SEPARATOR, maybeParent.length());
+ return isParent(paths[-ndx - 2], path);
}
return ndx >= 0;
}
+ private static boolean isParent(String maybeParent, String path) {
+ return path.startsWith(maybeParent) && path.startsWith(FILE_SEPARATOR, maybeParent.length());
+ }
+
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
@@ -114,4 +122,30 @@ public final class FileAccessTree {
public int hashCode() {
return Objects.hash(Arrays.hashCode(readPaths), Arrays.hashCode(writePaths));
}
+
+ /**
+ * For our lexicographic sort trick to work correctly, we must have path separators sort before
+ * any other character so that files in a directory appear immediately after that directory.
+ * For example, we require [/a, /a/b, /a.xml] rather than the natural order [/a, /a.xml, /a/b].
+ */
+ private static final Comparator PATH_ORDER = (s1, s2) -> {
+ Path p1 = Path.of(s1);
+ Path p2 = Path.of(s2);
+ var i1 = p1.iterator();
+ var i2 = p2.iterator();
+ while (i1.hasNext() && i2.hasNext()) {
+ int cmp = i1.next().compareTo(i2.next());
+ if (cmp != 0) {
+ return cmp;
+ }
+ }
+ if (i1.hasNext()) {
+ return 1;
+ } else if (i2.hasNext()) {
+ return -1;
+ } else {
+ assert p1.equals(p2);
+ return 0;
+ }
+ };
}
diff --git a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java
index 4eb3620c276f..5100dde6b2fe 100644
--- a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java
+++ b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java
@@ -117,6 +117,15 @@ public class FileAccessTreeTests extends ESTestCase {
assertThat(tree.canWrite(path("foo/baz")), is(false));
}
+ public void testPathAndFileWithSamePrefix() {
+ var tree = accessTree(entitlement("foo/bar/", "read", "foo/bar.xml", "read"));
+ assertThat(tree.canRead(path("foo")), is(false));
+ assertThat(tree.canRead(path("foo/bar")), is(true));
+ assertThat(tree.canRead(path("foo/bar/baz")), is(true));
+ assertThat(tree.canRead(path("foo/bar.xml")), is(true));
+ assertThat(tree.canRead(path("foo/bar.txt")), is(false));
+ }
+
public void testReadWithRelativePath() {
for (var dir : List.of("config", "home")) {
var tree = accessTree(entitlement(Map.of("relative_path", "foo", "mode", "read", "relative_to", dir)));
@@ -171,10 +180,23 @@ public class FileAccessTreeTests extends ESTestCase {
public void testNormalizePath() {
var tree = accessTree(entitlement("foo/../bar", "read"));
assertThat(tree.canRead(path("foo/../bar")), is(true));
+ assertThat(tree.canRead(path("foo/../bar/")), is(true));
assertThat(tree.canRead(path("foo")), is(false));
assertThat(tree.canRead(path("")), is(false));
}
+ public void testNormalizeTrailingSlashes() {
+ var tree = accessTree(entitlement("/trailing/slash/", "read", "/no/trailing/slash", "read"));
+ assertThat(tree.canRead(path("/trailing/slash")), is(true));
+ assertThat(tree.canRead(path("/trailing/slash/")), is(true));
+ assertThat(tree.canRead(path("/trailing/slash.xml")), is(false));
+ assertThat(tree.canRead(path("/trailing/slash/file.xml")), is(true));
+ assertThat(tree.canRead(path("/no/trailing/slash")), is(true));
+ assertThat(tree.canRead(path("/no/trailing/slash/")), is(true));
+ assertThat(tree.canRead(path("/no/trailing/slash.xml")), is(false));
+ assertThat(tree.canRead(path("/no/trailing/slash/file.xml")), is(true));
+ }
+
public void testForwardSlashes() {
String sep = getDefaultFileSystem().getSeparator();
var tree = accessTree(entitlement("a/b", "read", "m" + sep + "n", "read"));
From a792334756ca266ca8de17314834f2268500a664 Mon Sep 17 00:00:00 2001
From: Nik Everett
Date: Mon, 24 Feb 2025 13:59:43 -0500
Subject: [PATCH 07/10] pick up main (#122075)
Co-authored-by: Fang Xing
---
x-pack/plugin/esql/build.gradle | 4 +-
.../xpack/esql/qa/rest/RestEsqlTestCase.java | 3 +-
.../esql/src/main/antlr/EsqlBaseLexer.g4 | 652 +-
.../esql/src/main/antlr/EsqlBaseLexer.tokens | 407 +-
.../esql/src/main/antlr/EsqlBaseParser.g4 | 113 +-
.../esql/src/main/antlr/EsqlBaseParser.tokens | 407 +-
.../esql/src/main/antlr/lexer/ChangePoint.g4 | 24 +
.../esql/src/main/antlr/lexer/Enrich.g4 | 100 +
.../esql/src/main/antlr/lexer/Explain.g4 | 20 +
.../esql/src/main/antlr/lexer/Expression.g4 | 169 +
.../plugin/esql/src/main/antlr/lexer/Fork.g4 | 21 +
.../plugin/esql/src/main/antlr/lexer/From.g4 | 48 +
.../plugin/esql/src/main/antlr/lexer/Join.g4 | 41 +
.../esql/src/main/antlr/lexer/Lookup.g4 | 55 +
.../esql/src/main/antlr/lexer/Metrics.g4 | 70 +
.../esql/src/main/antlr/lexer/MvExpand.g4 | 39 +
.../esql/src/main/antlr/lexer/Project.g4 | 46 +
.../esql/src/main/antlr/lexer/Rename.g4 | 39 +
.../plugin/esql/src/main/antlr/lexer/Show.g4 | 31 +
.../src/main/antlr/lexer/UnknownCommand.g4 | 12 +
.../esql/src/main/antlr/parser/Expression.g4 | 101 +
.../plugin/esql/src/main/antlr/parser/Join.g4 | 25 +
.../xpack/esql/parser/EsqlBaseLexer.interp | 510 +-
.../xpack/esql/parser/EsqlBaseLexer.java | 2572 +++---
.../xpack/esql/parser/EsqlBaseParser.interp | 266 +-
.../xpack/esql/parser/EsqlBaseParser.java | 7717 ++++++++---------
.../parser/EsqlBaseParserBaseListener.java | 1176 +--
.../parser/EsqlBaseParserBaseVisitor.java | 686 +-
.../esql/parser/EsqlBaseParserListener.java | 1004 +--
.../esql/parser/EsqlBaseParserVisitor.java | 600 +-
30 files changed, 8526 insertions(+), 8432 deletions(-)
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/ChangePoint.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Enrich.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Explain.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Expression.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Fork.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/From.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Join.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Lookup.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Metrics.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/MvExpand.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Project.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Rename.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/Show.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/lexer/UnknownCommand.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/parser/Expression.g4
create mode 100644 x-pack/plugin/esql/src/main/antlr/parser/Join.g4
diff --git a/x-pack/plugin/esql/build.gradle b/x-pack/plugin/esql/build.gradle
index 2498b621b73e..99e19a98dd03 100644
--- a/x-pack/plugin/esql/build.gradle
+++ b/x-pack/plugin/esql/build.gradle
@@ -205,6 +205,7 @@ tasks.register("regenLexer", JavaExec) {
'-package', 'org.elasticsearch.xpack.esql.parser',
'-listener',
'-visitor',
+ '-lib', "${file(grammarPath)}/lexer",
'-o', outputPath,
"${file(grammarPath)}/EsqlBaseLexer.g4"
}
@@ -222,8 +223,9 @@ tasks.register("regenParser", JavaExec) {
'-package', 'org.elasticsearch.xpack.esql.parser',
'-listener',
'-visitor',
- '-o', outputPath,
'-lib', outputPath,
+ '-lib', "${file(grammarPath)}/parser",
+ '-o', outputPath,
"${file(grammarPath)}/EsqlBaseParser.g4"
}
diff --git a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java
index dc979806370f..accfd2f69ee6 100644
--- a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java
+++ b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java
@@ -764,7 +764,8 @@ public abstract class RestEsqlTestCase extends ESRestTestCase {
);
error = re.getMessage();
assertThat(error, containsString("ParsingException"));
- assertThat(error, containsString("line 1:23: mismatched input '?cmd' expecting {'dissect', 'drop'"));
+ assertThat(error, containsString("line 1:23: mismatched input '?cmd' expecting {"));
+ assertThat(error, containsString("'dissect', 'eval', 'grok', 'limit', 'sort'"));
}
}
diff --git a/x-pack/plugin/esql/src/main/antlr/EsqlBaseLexer.g4 b/x-pack/plugin/esql/src/main/antlr/EsqlBaseLexer.g4
index ed49ffdef8ae..20aab5ff0455 100644
--- a/x-pack/plugin/esql/src/main/antlr/EsqlBaseLexer.g4
+++ b/x-pack/plugin/esql/src/main/antlr/EsqlBaseLexer.g4
@@ -21,28 +21,20 @@ options {
}
/*
- * Before modifying this file, please read the section above as changes here
- * have significant impact in the ANTLR generated code and its consumption upstream
- * (including Kibana).
+ * Before modifying this file or the files in the `lexer` subdirectory, please read
+ * the section below as changes here have significant impact in the ANTLR generated
+ * code and its consumption in Kibana.
*
- * A. To add a development token (only available behind in snapshot/dev builds)
+ * A. To add a development command (only available behind in snapshot/dev builds)
*
- * Since the tokens/modes are in development, simply define them under the
- * "// in development section" and follow the section comments in that section.
- * That is use the DEV_ prefix and use the {this.isDevVersion()}? conditional.
- * They are defined at the end of the file, to minimize the impact on the existing
- * token types.
+ * Since the tokens/modes are in development, add a predicate like this:
+ * DEV_MYCOMMAND : {this.isDevVersion()}? 'mycommand' -> ...
*
* B. To add a new (production-ready) token
*
* Be sure to go through step A (add a development token).
* Make sure to remove the prefix and conditional before promoting the tokens in
* production.
- * Since tokens types (numbers) are generated by ANTLR in a continuous fashion,
- * it is desirable to avoid changing these values hence where possible, add
- * add them at the end of their respective section.
- * Note that the use of lexing modes prevents this since any addition to a mode
- * (regardless where it occurs) shifts all the declarations that follow in other modes.
*
* C. Renaming a token
*
@@ -57,51 +49,25 @@ options {
* they have on the UI (auto-completion, etc...)
*/
-DISSECT : 'dissect' -> pushMode(EXPRESSION_MODE);
-DROP : 'drop' -> pushMode(PROJECT_MODE);
-ENRICH : 'enrich' -> pushMode(ENRICH_MODE);
-EVAL : 'eval' -> pushMode(EXPRESSION_MODE);
-EXPLAIN : 'explain' -> pushMode(EXPLAIN_MODE);
-FROM : 'from' -> pushMode(FROM_MODE);
-GROK : 'grok' -> pushMode(EXPRESSION_MODE);
-KEEP : 'keep' -> pushMode(PROJECT_MODE);
-LIMIT : 'limit' -> pushMode(EXPRESSION_MODE);
-MV_EXPAND : 'mv_expand' -> pushMode(MVEXPAND_MODE);
-RENAME : 'rename' -> pushMode(RENAME_MODE);
-ROW : 'row' -> pushMode(EXPRESSION_MODE);
-SHOW : 'show' -> pushMode(SHOW_MODE);
-SORT : 'sort' -> pushMode(EXPRESSION_MODE);
-STATS : 'stats' -> pushMode(EXPRESSION_MODE);
-WHERE : 'where' -> pushMode(EXPRESSION_MODE);
-JOIN_LOOKUP : 'lookup' -> pushMode(JOIN_MODE);
-//
-// in development
-//
-// Before adding a new in-development command, to sandbox the behavior when running in production environments
-//
-// For example: to add myCommand use the following declaration:
-// DEV_MYCOMMAND : {this.isDevVersion()}? 'mycommand' -> ...
-//
-// Once the command has been stabilized, remove the DEV_ prefix and the {}? conditional and move the command to the
-// main section while preserving alphabetical order:
-// MYCOMMAND : 'mycommand' -> ...
-DEV_CHANGE_POINT : {this.isDevVersion()}? 'change_point' -> pushMode(CHANGE_POINT_MODE);
-DEV_INLINESTATS : {this.isDevVersion()}? 'inlinestats' -> pushMode(EXPRESSION_MODE);
-DEV_INSIST : {this.isDevVersion()}? 'insist_🐔' -> pushMode(PROJECT_MODE);
-DEV_LOOKUP : {this.isDevVersion()}? 'lookup_🐔' -> pushMode(LOOKUP_MODE);
-DEV_METRICS : {this.isDevVersion()}? 'metrics' -> pushMode(METRICS_MODE);
-// list of all JOIN commands
-DEV_JOIN_FULL : {this.isDevVersion()}? 'full' -> pushMode(JOIN_MODE);
-DEV_JOIN_LEFT : {this.isDevVersion()}? 'left' -> pushMode(JOIN_MODE);
-DEV_JOIN_RIGHT : {this.isDevVersion()}? 'right' -> pushMode(JOIN_MODE);
-
-// FORK
-DEV_FORK : {this.isDevVersion()}? 'fork' -> pushMode(FORK_MODE);
-
-//
-// Catch-all for unrecognized commands - don't define any beyond this line
-//
-UNKNOWN_CMD : ~[ \r\n\t[\]/]+ -> pushMode(EXPRESSION_MODE) ;
+/*
+ * Import lexer grammars for each command, making sure to import
+ * the UNKNOWN_CMD token *last* because it takes over parsing for
+ * all other commands.
+ */
+import ChangePoint,
+ Enrich,
+ Explain,
+ Expression,
+ From,
+ Fork,
+ Join,
+ Lookup,
+ Metrics,
+ MvExpand,
+ Project,
+ Rename,
+ Show,
+ UnknownCommand;
LINE_COMMENT
: '//' ~[\r\n]* '\r'? '\n'? -> channel(HIDDEN)
@@ -114,571 +80,3 @@ MULTILINE_COMMENT
WS
: [ \r\n\t]+ -> channel(HIDDEN)
;
-
-//
-// Expression - used by most command
-//
-mode EXPRESSION_MODE;
-
-PIPE : '|' -> popMode;
-
-fragment DIGIT
- : [0-9]
- ;
-
-fragment LETTER
- : [a-z]
- ;
-
-fragment ESCAPE_SEQUENCE
- : '\\' [tnr"\\]
- ;
-
-fragment UNESCAPED_CHARS
- : ~[\r\n"\\]
- ;
-
-fragment EXPONENT
- : [e] [+-]? DIGIT+
- ;
-
-fragment ASPERAND
- : '@'
- ;
-
-fragment BACKQUOTE
- : '`'
- ;
-
-fragment BACKQUOTE_BLOCK
- : ~'`'
- | '``'
- ;
-
-fragment UNDERSCORE
- : '_'
- ;
-
-fragment UNQUOTED_ID_BODY
- : (LETTER | DIGIT | UNDERSCORE)
- ;
-
-QUOTED_STRING
- : '"' (ESCAPE_SEQUENCE | UNESCAPED_CHARS)* '"'
- | '"""' (~[\r\n])*? '"""' '"'? '"'?
- ;
-
-INTEGER_LITERAL
- : DIGIT+
- ;
-
-DECIMAL_LITERAL
- : DIGIT+ DOT DIGIT*
- | DOT DIGIT+
- | DIGIT+ (DOT DIGIT*)? EXPONENT
- | DOT DIGIT+ EXPONENT
- ;
-
-BY : 'by';
-
-AND : 'and';
-ASC : 'asc';
-ASSIGN : '=';
-CAST_OP : '::';
-COLON : ':';
-COMMA : ',';
-DESC : 'desc';
-DOT : '.';
-FALSE : 'false';
-FIRST : 'first';
-IN: 'in';
-IS: 'is';
-LAST : 'last';
-LIKE: 'like';
-NOT : 'not';
-NULL : 'null';
-NULLS : 'nulls';
-OR : 'or';
-PARAM: '?';
-RLIKE: 'rlike';
-TRUE : 'true';
-
-EQ : '==';
-CIEQ : '=~';
-NEQ : '!=';
-LT : '<';
-LTE : '<=';
-GT : '>';
-GTE : '>=';
-
-PLUS : '+';
-MINUS : '-';
-ASTERISK : '*';
-SLASH : '/';
-PERCENT : '%';
-
-LEFT_BRACES : '{';
-RIGHT_BRACES : '}';
-
-NESTED_WHERE : WHERE -> type(WHERE);
-
-NAMED_OR_POSITIONAL_PARAM
- : PARAM (LETTER | UNDERSCORE) UNQUOTED_ID_BODY*
- | PARAM DIGIT+
- ;
-
-// Brackets are funny. We can happen upon a CLOSING_BRACKET in two ways - one
-// way is to start in an explain command which then shifts us to expression
-// mode. Thus, the two popModes on CLOSING_BRACKET. The other way could as
-// the start of a multivalued field constant. To line up with the double pop
-// the explain mode needs, we double push when we see that.
-OPENING_BRACKET : '[' -> pushMode(EXPRESSION_MODE), pushMode(EXPRESSION_MODE);
-CLOSING_BRACKET : ']' -> popMode, popMode;
-
-LP : '(' -> pushMode(EXPRESSION_MODE), pushMode(EXPRESSION_MODE);
-RP : ')' -> popMode, popMode;
-
-UNQUOTED_IDENTIFIER
- : LETTER UNQUOTED_ID_BODY*
- // only allow @ at beginning of identifier to keep the option to allow @ as infix operator in the future
- // also, single `_` and `@` characters are not valid identifiers
- | (UNDERSCORE | ASPERAND) UNQUOTED_ID_BODY+
- ;
-
-fragment QUOTED_ID
- : BACKQUOTE BACKQUOTE_BLOCK+ BACKQUOTE
- ;
-
-QUOTED_IDENTIFIER
- : QUOTED_ID
- ;
-
-EXPR_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-EXPR_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-EXPR_WS
- : WS -> channel(HIDDEN)
- ;
-
-//
-// Explain
-//
-mode EXPLAIN_MODE;
-EXPLAIN_OPENING_BRACKET : OPENING_BRACKET -> type(OPENING_BRACKET), pushMode(DEFAULT_MODE);
-EXPLAIN_PIPE : PIPE -> type(PIPE), popMode;
-EXPLAIN_WS : WS -> channel(HIDDEN);
-EXPLAIN_LINE_COMMENT : LINE_COMMENT -> channel(HIDDEN);
-EXPLAIN_MULTILINE_COMMENT : MULTILINE_COMMENT -> channel(HIDDEN);
-
-//
-// FROM command
-//
-mode FROM_MODE;
-FROM_PIPE : PIPE -> type(PIPE), popMode;
-FROM_OPENING_BRACKET : OPENING_BRACKET -> type(OPENING_BRACKET);
-FROM_CLOSING_BRACKET : CLOSING_BRACKET -> type(CLOSING_BRACKET);
-FROM_COLON : COLON -> type(COLON);
-FROM_COMMA : COMMA -> type(COMMA);
-FROM_ASSIGN : ASSIGN -> type(ASSIGN);
-METADATA : 'metadata';
-
-// in 8.14 ` were not allowed
-// this has been relaxed in 8.15 since " is used for quoting
-fragment UNQUOTED_SOURCE_PART
- : ~[:"=|,[\]/ \t\r\n]
- | '/' ~[*/] // allow single / but not followed by another / or * which would start a comment -- used in index pattern date spec
- ;
-
-UNQUOTED_SOURCE
- : UNQUOTED_SOURCE_PART+
- ;
-
-FROM_UNQUOTED_SOURCE : UNQUOTED_SOURCE -> type(UNQUOTED_SOURCE);
-FROM_QUOTED_SOURCE : QUOTED_STRING -> type(QUOTED_STRING);
-
-FROM_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-FROM_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-FROM_WS
- : WS -> channel(HIDDEN)
- ;
-
-//
-// DROP, KEEP, INSIST
-//
-mode PROJECT_MODE;
-PROJECT_PIPE : PIPE -> type(PIPE), popMode;
-PROJECT_DOT: DOT -> type(DOT);
-PROJECT_COMMA : COMMA -> type(COMMA);
-PROJECT_PARAM : PARAM -> type(PARAM);
-PROJECT_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
-
-fragment UNQUOTED_ID_BODY_WITH_PATTERN
- : (LETTER | DIGIT | UNDERSCORE | ASTERISK)
- ;
-
-fragment UNQUOTED_ID_PATTERN
- : (LETTER | ASTERISK) UNQUOTED_ID_BODY_WITH_PATTERN*
- | (UNDERSCORE | ASPERAND) UNQUOTED_ID_BODY_WITH_PATTERN+
- ;
-
-ID_PATTERN
- : (UNQUOTED_ID_PATTERN | QUOTED_ID)+
- ;
-
-PROJECT_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-PROJECT_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-PROJECT_WS
- : WS -> channel(HIDDEN)
- ;
-//
-// | RENAME a.b AS x, c AS y
-//
-mode RENAME_MODE;
-RENAME_PIPE : PIPE -> type(PIPE), popMode;
-RENAME_ASSIGN : ASSIGN -> type(ASSIGN);
-RENAME_COMMA : COMMA -> type(COMMA);
-RENAME_DOT: DOT -> type(DOT);
-RENAME_PARAM : PARAM -> type(PARAM);
-RENAME_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
-
-AS : 'as';
-
-RENAME_ID_PATTERN
- : ID_PATTERN -> type(ID_PATTERN)
- ;
-
-RENAME_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-RENAME_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-RENAME_WS
- : WS -> channel(HIDDEN)
- ;
-
-// | ENRICH ON key WITH fields
-mode ENRICH_MODE;
-ENRICH_PIPE : PIPE -> type(PIPE), popMode;
-ENRICH_OPENING_BRACKET : OPENING_BRACKET -> type(OPENING_BRACKET), pushMode(SETTING_MODE);
-
-ON : 'on' -> pushMode(ENRICH_FIELD_MODE);
-WITH : 'with' -> pushMode(ENRICH_FIELD_MODE);
-
-// similar to that of an index
-// see https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params
-fragment ENRICH_POLICY_NAME_BODY
- : ~[\\/?"<>| ,#\t\r\n:]
- ;
-
-ENRICH_POLICY_NAME
- // allow prefix for the policy to specify its resolution
- : (ENRICH_POLICY_NAME_BODY+ COLON)? ENRICH_POLICY_NAME_BODY+
- ;
-
-ENRICH_MODE_UNQUOTED_VALUE
- : ENRICH_POLICY_NAME -> type(ENRICH_POLICY_NAME)
- ;
-
-ENRICH_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-ENRICH_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-ENRICH_WS
- : WS -> channel(HIDDEN)
- ;
-
-// submode for Enrich to allow different lexing between policy source (loose) and field identifiers
-mode ENRICH_FIELD_MODE;
-ENRICH_FIELD_PIPE : PIPE -> type(PIPE), popMode, popMode;
-ENRICH_FIELD_ASSIGN : ASSIGN -> type(ASSIGN);
-ENRICH_FIELD_COMMA : COMMA -> type(COMMA);
-ENRICH_FIELD_DOT: DOT -> type(DOT);
-
-ENRICH_FIELD_WITH : WITH -> type(WITH) ;
-
-ENRICH_FIELD_ID_PATTERN
- : ID_PATTERN -> type(ID_PATTERN)
- ;
-
-ENRICH_FIELD_QUOTED_IDENTIFIER
- : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER)
- ;
-
-ENRICH_FIELD_PARAM : PARAM -> type(PARAM);
-ENRICH_FIELD_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
-
-ENRICH_FIELD_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-ENRICH_FIELD_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-ENRICH_FIELD_WS
- : WS -> channel(HIDDEN)
- ;
-
-mode MVEXPAND_MODE;
-MVEXPAND_PIPE : PIPE -> type(PIPE), popMode;
-MVEXPAND_DOT: DOT -> type(DOT);
-MVEXPAND_PARAM : PARAM -> type(PARAM);
-MVEXPAND_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
-
-MVEXPAND_QUOTED_IDENTIFIER
- : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER)
- ;
-
-MVEXPAND_UNQUOTED_IDENTIFIER
- : UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER)
- ;
-
-MVEXPAND_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-MVEXPAND_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-MVEXPAND_WS
- : WS -> channel(HIDDEN)
- ;
-
-//
-// SHOW commands
-//
-mode SHOW_MODE;
-SHOW_PIPE : PIPE -> type(PIPE), popMode;
-
-INFO : 'info';
-
-SHOW_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-SHOW_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-SHOW_WS
- : WS -> channel(HIDDEN)
- ;
-
-mode SETTING_MODE;
-SETTING_CLOSING_BRACKET : CLOSING_BRACKET -> type(CLOSING_BRACKET), popMode;
-
-SETTING_COLON : COLON -> type(COLON);
-
-SETTING
- : (ASPERAND | DIGIT| DOT | LETTER | UNDERSCORE)+
- ;
-
-SETTING_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-SETTTING_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-SETTING_WS
- : WS -> channel(HIDDEN)
- ;
-
-//
-// LOOKUP ON key
-//
-mode LOOKUP_MODE;
-LOOKUP_PIPE : PIPE -> type(PIPE), popMode;
-LOOKUP_COLON : COLON -> type(COLON);
-LOOKUP_COMMA : COMMA -> type(COMMA);
-LOOKUP_DOT: DOT -> type(DOT);
-LOOKUP_ON : ON -> type(ON), pushMode(LOOKUP_FIELD_MODE);
-
-LOOKUP_UNQUOTED_SOURCE: UNQUOTED_SOURCE -> type(UNQUOTED_SOURCE);
-LOOKUP_QUOTED_SOURCE : QUOTED_STRING -> type(QUOTED_STRING);
-
-LOOKUP_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-LOOKUP_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-LOOKUP_WS
- : WS -> channel(HIDDEN)
- ;
-
-mode LOOKUP_FIELD_MODE;
-LOOKUP_FIELD_PIPE : PIPE -> type(PIPE), popMode, popMode;
-LOOKUP_FIELD_COMMA : COMMA -> type(COMMA);
-LOOKUP_FIELD_DOT: DOT -> type(DOT);
-
-LOOKUP_FIELD_ID_PATTERN
- : ID_PATTERN -> type(ID_PATTERN)
- ;
-
-LOOKUP_FIELD_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-LOOKUP_FIELD_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-LOOKUP_FIELD_WS
- : WS -> channel(HIDDEN)
- ;
-
-//
-// JOIN-related commands
-//
-mode JOIN_MODE;
-JOIN_PIPE : PIPE -> type(PIPE), popMode;
-JOIN : 'join';
-JOIN_AS : AS -> type(AS);
-JOIN_ON : ON -> type(ON), popMode, pushMode(EXPRESSION_MODE);
-USING : 'USING' -> popMode, pushMode(EXPRESSION_MODE);
-
-JOIN_UNQUOTED_SOURCE: UNQUOTED_SOURCE -> type(UNQUOTED_SOURCE);
-JOIN_QUOTED_SOURCE : QUOTED_STRING -> type(QUOTED_STRING);
-JOIN_COLON : COLON -> type(COLON);
-
-JOIN_UNQUOTED_IDENTIFER: UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER);
-JOIN_QUOTED_IDENTIFIER : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER);
-
-JOIN_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-JOIN_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-JOIN_WS
- : WS -> channel(HIDDEN)
- ;
-
-//
-// METRICS command
-//
-mode METRICS_MODE;
-METRICS_PIPE : PIPE -> type(PIPE), popMode;
-
-METRICS_UNQUOTED_SOURCE: UNQUOTED_SOURCE -> type(UNQUOTED_SOURCE), popMode, pushMode(CLOSING_METRICS_MODE);
-METRICS_QUOTED_SOURCE : QUOTED_STRING -> type(QUOTED_STRING), popMode, pushMode(CLOSING_METRICS_MODE);
-
-METRICS_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-METRICS_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-METRICS_WS
- : WS -> channel(HIDDEN)
- ;
-
-// TODO: remove this workaround mode - see https://github.com/elastic/elasticsearch/issues/108528
-mode CLOSING_METRICS_MODE;
-
-CLOSING_METRICS_COLON
- : COLON -> type(COLON), popMode, pushMode(METRICS_MODE)
- ;
-
-CLOSING_METRICS_COMMA
- : COMMA -> type(COMMA), popMode, pushMode(METRICS_MODE)
- ;
-
-CLOSING_METRICS_LINE_COMMENT
- : LINE_COMMENT -> channel(HIDDEN)
- ;
-
-CLOSING_METRICS_MULTILINE_COMMENT
- : MULTILINE_COMMENT -> channel(HIDDEN)
- ;
-
-CLOSING_METRICS_WS
- : WS -> channel(HIDDEN)
- ;
-
-CLOSING_METRICS_QUOTED_IDENTIFIER
- : QUOTED_IDENTIFIER -> popMode, pushMode(EXPRESSION_MODE), type(QUOTED_IDENTIFIER)
- ;
-
-CLOSING_METRICS_UNQUOTED_IDENTIFIER
- :UNQUOTED_IDENTIFIER -> popMode, pushMode(EXPRESSION_MODE), type(UNQUOTED_IDENTIFIER)
- ;
-
-CLOSING_METRICS_BY
- :BY -> popMode, pushMode(EXPRESSION_MODE), type(BY)
- ;
-
-CLOSING_METRICS_PIPE
- : PIPE -> type(PIPE), popMode
- ;
-
-///
-/// CHANGE_POINT command
-///
-mode CHANGE_POINT_MODE;
-
-CHANGE_POINT_PIPE : PIPE -> type(PIPE), popMode;
-CHANGE_POINT_ON : ON -> type(ON);
-CHANGE_POINT_AS : AS -> type(AS);
-CHANGE_POINT_DOT: DOT -> type(DOT);
-CHANGE_POINT_COMMA: COMMA -> type(COMMA);
-CHANGE_POINT_QUOTED_IDENTIFIER: QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER);
-CHANGE_POINT_UNQUOTED_IDENTIFIER: UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER);
-CHANGE_POINT_LINE_COMMENT: LINE_COMMENT -> channel(HIDDEN);
-CHANGE_POINT_MULTILINE_COMMENT: MULTILINE_COMMENT -> channel(HIDDEN);
-CHANGE_POINT_WS: WS -> channel(HIDDEN);
-
-//
-// INSIST command
-//
-mode INSIST_MODE;
-INSIST_PIPE : PIPE -> type(PIPE), popMode;
-INSIST_IDENTIFIER: UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER);
-
-INSIST_WS : WS -> channel(HIDDEN);
-INSIST_LINE_COMMENT : LINE_COMMENT -> channel(HIDDEN);
-INSIST_MULTILINE_COMMENT : MULTILINE_COMMENT -> channel(HIDDEN);
-
-//
-// Fork
-//
-mode FORK_MODE;
-FORK_LP : LP -> type(LP), pushMode(DEFAULT_MODE);
-FORK_PIPE : PIPE -> type(PIPE), popMode;
-
-FORK_WS : WS -> channel(HIDDEN);
-FORK_LINE_COMMENT : LINE_COMMENT -> channel(HIDDEN);
-FORK_MULTILINE_COMMENT : MULTILINE_COMMENT -> channel(HIDDEN);
diff --git a/x-pack/plugin/esql/src/main/antlr/EsqlBaseLexer.tokens b/x-pack/plugin/esql/src/main/antlr/EsqlBaseLexer.tokens
index 2ea8b6892293..28ebe2fd6985 100644
--- a/x-pack/plugin/esql/src/main/antlr/EsqlBaseLexer.tokens
+++ b/x-pack/plugin/esql/src/main/antlr/EsqlBaseLexer.tokens
@@ -1,205 +1,202 @@
-DISSECT=1
-DROP=2
-ENRICH=3
-EVAL=4
-EXPLAIN=5
-FROM=6
-GROK=7
-KEEP=8
-LIMIT=9
-MV_EXPAND=10
-RENAME=11
-ROW=12
-SHOW=13
-SORT=14
-STATS=15
-WHERE=16
-JOIN_LOOKUP=17
-DEV_CHANGE_POINT=18
-DEV_INLINESTATS=19
-DEV_INSIST=20
-DEV_LOOKUP=21
-DEV_METRICS=22
-DEV_JOIN_FULL=23
-DEV_JOIN_LEFT=24
-DEV_JOIN_RIGHT=25
-DEV_FORK=26
-UNKNOWN_CMD=27
-LINE_COMMENT=28
-MULTILINE_COMMENT=29
-WS=30
-PIPE=31
-QUOTED_STRING=32
-INTEGER_LITERAL=33
-DECIMAL_LITERAL=34
-BY=35
-AND=36
-ASC=37
-ASSIGN=38
-CAST_OP=39
-COLON=40
-COMMA=41
-DESC=42
-DOT=43
-FALSE=44
-FIRST=45
-IN=46
-IS=47
-LAST=48
-LIKE=49
-NOT=50
-NULL=51
-NULLS=52
-OR=53
-PARAM=54
-RLIKE=55
-TRUE=56
-EQ=57
-CIEQ=58
-NEQ=59
-LT=60
-LTE=61
-GT=62
-GTE=63
-PLUS=64
-MINUS=65
-ASTERISK=66
-SLASH=67
-PERCENT=68
-LEFT_BRACES=69
-RIGHT_BRACES=70
-NAMED_OR_POSITIONAL_PARAM=71
-OPENING_BRACKET=72
-CLOSING_BRACKET=73
-LP=74
-RP=75
-UNQUOTED_IDENTIFIER=76
-QUOTED_IDENTIFIER=77
-EXPR_LINE_COMMENT=78
-EXPR_MULTILINE_COMMENT=79
-EXPR_WS=80
-EXPLAIN_WS=81
-EXPLAIN_LINE_COMMENT=82
-EXPLAIN_MULTILINE_COMMENT=83
-METADATA=84
-UNQUOTED_SOURCE=85
-FROM_LINE_COMMENT=86
-FROM_MULTILINE_COMMENT=87
-FROM_WS=88
-ID_PATTERN=89
-PROJECT_LINE_COMMENT=90
-PROJECT_MULTILINE_COMMENT=91
-PROJECT_WS=92
-AS=93
-RENAME_LINE_COMMENT=94
-RENAME_MULTILINE_COMMENT=95
-RENAME_WS=96
-ON=97
-WITH=98
-ENRICH_POLICY_NAME=99
-ENRICH_LINE_COMMENT=100
-ENRICH_MULTILINE_COMMENT=101
-ENRICH_WS=102
-ENRICH_FIELD_LINE_COMMENT=103
-ENRICH_FIELD_MULTILINE_COMMENT=104
-ENRICH_FIELD_WS=105
-MVEXPAND_LINE_COMMENT=106
-MVEXPAND_MULTILINE_COMMENT=107
-MVEXPAND_WS=108
-INFO=109
-SHOW_LINE_COMMENT=110
-SHOW_MULTILINE_COMMENT=111
-SHOW_WS=112
-SETTING=113
-SETTING_LINE_COMMENT=114
-SETTTING_MULTILINE_COMMENT=115
-SETTING_WS=116
-LOOKUP_LINE_COMMENT=117
-LOOKUP_MULTILINE_COMMENT=118
-LOOKUP_WS=119
-LOOKUP_FIELD_LINE_COMMENT=120
-LOOKUP_FIELD_MULTILINE_COMMENT=121
-LOOKUP_FIELD_WS=122
-JOIN=123
-USING=124
-JOIN_LINE_COMMENT=125
-JOIN_MULTILINE_COMMENT=126
-JOIN_WS=127
-METRICS_LINE_COMMENT=128
-METRICS_MULTILINE_COMMENT=129
-METRICS_WS=130
-CLOSING_METRICS_LINE_COMMENT=131
-CLOSING_METRICS_MULTILINE_COMMENT=132
-CLOSING_METRICS_WS=133
-CHANGE_POINT_LINE_COMMENT=134
-CHANGE_POINT_MULTILINE_COMMENT=135
-CHANGE_POINT_WS=136
-INSIST_WS=137
-INSIST_LINE_COMMENT=138
-INSIST_MULTILINE_COMMENT=139
-FORK_WS=140
-FORK_LINE_COMMENT=141
-FORK_MULTILINE_COMMENT=142
-'dissect'=1
-'drop'=2
-'enrich'=3
-'eval'=4
-'explain'=5
-'from'=6
-'grok'=7
-'keep'=8
-'limit'=9
-'mv_expand'=10
-'rename'=11
-'row'=12
-'show'=13
-'sort'=14
-'stats'=15
-'where'=16
-'lookup'=17
-'|'=31
-'by'=35
-'and'=36
-'asc'=37
-'='=38
-'::'=39
-':'=40
-','=41
-'desc'=42
-'.'=43
-'false'=44
-'first'=45
-'in'=46
-'is'=47
-'last'=48
-'like'=49
-'not'=50
-'null'=51
-'nulls'=52
-'or'=53
-'?'=54
-'rlike'=55
-'true'=56
-'=='=57
-'=~'=58
-'!='=59
-'<'=60
-'<='=61
-'>'=62
-'>='=63
-'+'=64
-'-'=65
-'*'=66
-'/'=67
-'%'=68
-'{'=69
-'}'=70
-']'=73
-')'=75
-'metadata'=84
-'as'=93
-'on'=97
-'with'=98
-'info'=109
-'join'=123
-'USING'=124
+LINE_COMMENT=1
+MULTILINE_COMMENT=2
+WS=3
+DEV_CHANGE_POINT=4
+ENRICH=5
+EXPLAIN=6
+DISSECT=7
+EVAL=8
+GROK=9
+LIMIT=10
+ROW=11
+SORT=12
+STATS=13
+WHERE=14
+DEV_INLINESTATS=15
+FROM=16
+DEV_FORK=17
+JOIN_LOOKUP=18
+DEV_JOIN_FULL=19
+DEV_JOIN_LEFT=20
+DEV_JOIN_RIGHT=21
+DEV_LOOKUP=22
+DEV_METRICS=23
+MV_EXPAND=24
+DROP=25
+KEEP=26
+DEV_INSIST=27
+RENAME=28
+SHOW=29
+UNKNOWN_CMD=30
+CHANGE_POINT_LINE_COMMENT=31
+CHANGE_POINT_MULTILINE_COMMENT=32
+CHANGE_POINT_WS=33
+ON=34
+WITH=35
+ENRICH_POLICY_NAME=36
+ENRICH_LINE_COMMENT=37
+ENRICH_MULTILINE_COMMENT=38
+ENRICH_WS=39
+ENRICH_FIELD_LINE_COMMENT=40
+ENRICH_FIELD_MULTILINE_COMMENT=41
+ENRICH_FIELD_WS=42
+SETTING=43
+SETTING_LINE_COMMENT=44
+SETTTING_MULTILINE_COMMENT=45
+SETTING_WS=46
+EXPLAIN_WS=47
+EXPLAIN_LINE_COMMENT=48
+EXPLAIN_MULTILINE_COMMENT=49
+PIPE=50
+QUOTED_STRING=51
+INTEGER_LITERAL=52
+DECIMAL_LITERAL=53
+BY=54
+AND=55
+ASC=56
+ASSIGN=57
+CAST_OP=58
+COLON=59
+COMMA=60
+DESC=61
+DOT=62
+FALSE=63
+FIRST=64
+IN=65
+IS=66
+LAST=67
+LIKE=68
+NOT=69
+NULL=70
+NULLS=71
+OR=72
+PARAM=73
+RLIKE=74
+TRUE=75
+EQ=76
+CIEQ=77
+NEQ=78
+LT=79
+LTE=80
+GT=81
+GTE=82
+PLUS=83
+MINUS=84
+ASTERISK=85
+SLASH=86
+PERCENT=87
+LEFT_BRACES=88
+RIGHT_BRACES=89
+NAMED_OR_POSITIONAL_PARAM=90
+OPENING_BRACKET=91
+CLOSING_BRACKET=92
+LP=93
+RP=94
+UNQUOTED_IDENTIFIER=95
+QUOTED_IDENTIFIER=96
+EXPR_LINE_COMMENT=97
+EXPR_MULTILINE_COMMENT=98
+EXPR_WS=99
+METADATA=100
+UNQUOTED_SOURCE=101
+FROM_LINE_COMMENT=102
+FROM_MULTILINE_COMMENT=103
+FROM_WS=104
+FORK_WS=105
+FORK_LINE_COMMENT=106
+FORK_MULTILINE_COMMENT=107
+JOIN=108
+USING=109
+JOIN_LINE_COMMENT=110
+JOIN_MULTILINE_COMMENT=111
+JOIN_WS=112
+LOOKUP_LINE_COMMENT=113
+LOOKUP_MULTILINE_COMMENT=114
+LOOKUP_WS=115
+LOOKUP_FIELD_LINE_COMMENT=116
+LOOKUP_FIELD_MULTILINE_COMMENT=117
+LOOKUP_FIELD_WS=118
+METRICS_LINE_COMMENT=119
+METRICS_MULTILINE_COMMENT=120
+METRICS_WS=121
+CLOSING_METRICS_LINE_COMMENT=122
+CLOSING_METRICS_MULTILINE_COMMENT=123
+CLOSING_METRICS_WS=124
+MVEXPAND_LINE_COMMENT=125
+MVEXPAND_MULTILINE_COMMENT=126
+MVEXPAND_WS=127
+ID_PATTERN=128
+PROJECT_LINE_COMMENT=129
+PROJECT_MULTILINE_COMMENT=130
+PROJECT_WS=131
+AS=132
+RENAME_LINE_COMMENT=133
+RENAME_MULTILINE_COMMENT=134
+RENAME_WS=135
+INFO=136
+SHOW_LINE_COMMENT=137
+SHOW_MULTILINE_COMMENT=138
+SHOW_WS=139
+'enrich'=5
+'explain'=6
+'dissect'=7
+'eval'=8
+'grok'=9
+'limit'=10
+'row'=11
+'sort'=12
+'stats'=13
+'where'=14
+'from'=16
+'lookup'=18
+'mv_expand'=24
+'drop'=25
+'keep'=26
+'rename'=28
+'show'=29
+'on'=34
+'with'=35
+'|'=50
+'by'=54
+'and'=55
+'asc'=56
+'='=57
+'::'=58
+':'=59
+','=60
+'desc'=61
+'.'=62
+'false'=63
+'first'=64
+'in'=65
+'is'=66
+'last'=67
+'like'=68
+'not'=69
+'null'=70
+'nulls'=71
+'or'=72
+'?'=73
+'rlike'=74
+'true'=75
+'=='=76
+'=~'=77
+'!='=78
+'<'=79
+'<='=80
+'>'=81
+'>='=82
+'+'=83
+'-'=84
+'*'=85
+'/'=86
+'%'=87
+'{'=88
+'}'=89
+']'=92
+')'=94
+'metadata'=100
+'join'=108
+'USING'=109
+'as'=132
+'info'=136
diff --git a/x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.g4 b/x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.g4
index 004c0cd2e747..ba3c56315f96 100644
--- a/x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.g4
+++ b/x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.g4
@@ -20,6 +20,9 @@ options {
tokenVocab=EsqlBaseLexer;
}
+import Expression,
+ Join;
+
singleStatement
: query EOF
;
@@ -64,62 +67,6 @@ whereCommand
: WHERE booleanExpression
;
-booleanExpression
- : NOT booleanExpression #logicalNot
- | valueExpression #booleanDefault
- | regexBooleanExpression #regexExpression
- | left=booleanExpression operator=AND right=booleanExpression #logicalBinary
- | left=booleanExpression operator=OR right=booleanExpression #logicalBinary
- | valueExpression (NOT)? IN LP valueExpression (COMMA valueExpression)* RP #logicalIn
- | valueExpression IS NOT? NULL #isNull
- | matchBooleanExpression #matchExpression
- ;
-
-regexBooleanExpression
- : valueExpression (NOT)? kind=LIKE pattern=string
- | valueExpression (NOT)? kind=RLIKE pattern=string
- ;
-
-matchBooleanExpression
- : fieldExp=qualifiedName (CAST_OP fieldType=dataType)? COLON matchQuery=constant
- ;
-
-valueExpression
- : operatorExpression #valueExpressionDefault
- | left=operatorExpression comparisonOperator right=operatorExpression #comparison
- ;
-
-operatorExpression
- : primaryExpression #operatorExpressionDefault
- | operator=(MINUS | PLUS) operatorExpression #arithmeticUnary
- | left=operatorExpression operator=(ASTERISK | SLASH | PERCENT) right=operatorExpression #arithmeticBinary
- | left=operatorExpression operator=(PLUS | MINUS) right=operatorExpression #arithmeticBinary
- ;
-
-primaryExpression
- : constant #constantDefault
- | qualifiedName #dereference
- | functionExpression #function
- | LP booleanExpression RP #parenthesizedExpression
- | primaryExpression CAST_OP dataType #inlineCast
- ;
-
-functionExpression
- : functionName LP (ASTERISK | (booleanExpression (COMMA booleanExpression)* (COMMA mapExpression)?))? RP
- ;
-
-functionName
- : identifierOrParameter
- ;
-
-mapExpression
- : LEFT_BRACES entryExpression (COMMA entryExpression)* RIGHT_BRACES
- ;
-
-entryExpression
- : key=string COLON value=constant
- ;
-
dataType
: identifier #toDataType
;
@@ -200,19 +147,6 @@ identifierPattern
| parameter
;
-constant
- : NULL #nullLiteral
- | integerValue UNQUOTED_IDENTIFIER #qualifiedIntegerLiteral
- | decimalValue #decimalLiteral
- | integerValue #integerLiteral
- | booleanValue #booleanLiteral
- | parameter #inputParameter
- | string #stringLiteral
- | OPENING_BRACKET numericValue (COMMA numericValue)* CLOSING_BRACKET #numericArrayLiteral
- | OPENING_BRACKET booleanValue (COMMA booleanValue)* CLOSING_BRACKET #booleanArrayLiteral
- | OPENING_BRACKET string (COMMA string)* CLOSING_BRACKET #stringArrayLiteral
- ;
-
parameter
: PARAM #inputParam
| NAMED_OR_POSITIONAL_PARAM #inputNamedOrPositionalParam
@@ -271,31 +205,6 @@ commandOption
: identifier ASSIGN constant
;
-booleanValue
- : TRUE | FALSE
- ;
-
-numericValue
- : decimalValue
- | integerValue
- ;
-
-decimalValue
- : (PLUS | MINUS)? DECIMAL_LITERAL
- ;
-
-integerValue
- : (PLUS | MINUS)? INTEGER_LITERAL
- ;
-
-string
- : QUOTED_STRING
- ;
-
-comparisonOperator
- : EQ | NEQ | LT | LTE | GT | GTE
- ;
-
explainCommand
: EXPLAIN subqueryExpression
;
@@ -327,22 +236,6 @@ inlinestatsCommand
: DEV_INLINESTATS stats=aggFields (BY grouping=fields)?
;
-joinCommand
- : type=(JOIN_LOOKUP | DEV_JOIN_LEFT | DEV_JOIN_RIGHT) JOIN joinTarget joinCondition
- ;
-
-joinTarget
- : index=indexPattern
- ;
-
-joinCondition
- : ON joinPredicate (COMMA joinPredicate)*
- ;
-
-joinPredicate
- : valueExpression
- ;
-
changePointCommand
: DEV_CHANGE_POINT value=qualifiedName (ON key=qualifiedName)? (AS targetType=qualifiedName COMMA targetPvalue=qualifiedName)?
;
diff --git a/x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.tokens b/x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.tokens
index 2ea8b6892293..28ebe2fd6985 100644
--- a/x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.tokens
+++ b/x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.tokens
@@ -1,205 +1,202 @@
-DISSECT=1
-DROP=2
-ENRICH=3
-EVAL=4
-EXPLAIN=5
-FROM=6
-GROK=7
-KEEP=8
-LIMIT=9
-MV_EXPAND=10
-RENAME=11
-ROW=12
-SHOW=13
-SORT=14
-STATS=15
-WHERE=16
-JOIN_LOOKUP=17
-DEV_CHANGE_POINT=18
-DEV_INLINESTATS=19
-DEV_INSIST=20
-DEV_LOOKUP=21
-DEV_METRICS=22
-DEV_JOIN_FULL=23
-DEV_JOIN_LEFT=24
-DEV_JOIN_RIGHT=25
-DEV_FORK=26
-UNKNOWN_CMD=27
-LINE_COMMENT=28
-MULTILINE_COMMENT=29
-WS=30
-PIPE=31
-QUOTED_STRING=32
-INTEGER_LITERAL=33
-DECIMAL_LITERAL=34
-BY=35
-AND=36
-ASC=37
-ASSIGN=38
-CAST_OP=39
-COLON=40
-COMMA=41
-DESC=42
-DOT=43
-FALSE=44
-FIRST=45
-IN=46
-IS=47
-LAST=48
-LIKE=49
-NOT=50
-NULL=51
-NULLS=52
-OR=53
-PARAM=54
-RLIKE=55
-TRUE=56
-EQ=57
-CIEQ=58
-NEQ=59
-LT=60
-LTE=61
-GT=62
-GTE=63
-PLUS=64
-MINUS=65
-ASTERISK=66
-SLASH=67
-PERCENT=68
-LEFT_BRACES=69
-RIGHT_BRACES=70
-NAMED_OR_POSITIONAL_PARAM=71
-OPENING_BRACKET=72
-CLOSING_BRACKET=73
-LP=74
-RP=75
-UNQUOTED_IDENTIFIER=76
-QUOTED_IDENTIFIER=77
-EXPR_LINE_COMMENT=78
-EXPR_MULTILINE_COMMENT=79
-EXPR_WS=80
-EXPLAIN_WS=81
-EXPLAIN_LINE_COMMENT=82
-EXPLAIN_MULTILINE_COMMENT=83
-METADATA=84
-UNQUOTED_SOURCE=85
-FROM_LINE_COMMENT=86
-FROM_MULTILINE_COMMENT=87
-FROM_WS=88
-ID_PATTERN=89
-PROJECT_LINE_COMMENT=90
-PROJECT_MULTILINE_COMMENT=91
-PROJECT_WS=92
-AS=93
-RENAME_LINE_COMMENT=94
-RENAME_MULTILINE_COMMENT=95
-RENAME_WS=96
-ON=97
-WITH=98
-ENRICH_POLICY_NAME=99
-ENRICH_LINE_COMMENT=100
-ENRICH_MULTILINE_COMMENT=101
-ENRICH_WS=102
-ENRICH_FIELD_LINE_COMMENT=103
-ENRICH_FIELD_MULTILINE_COMMENT=104
-ENRICH_FIELD_WS=105
-MVEXPAND_LINE_COMMENT=106
-MVEXPAND_MULTILINE_COMMENT=107
-MVEXPAND_WS=108
-INFO=109
-SHOW_LINE_COMMENT=110
-SHOW_MULTILINE_COMMENT=111
-SHOW_WS=112
-SETTING=113
-SETTING_LINE_COMMENT=114
-SETTTING_MULTILINE_COMMENT=115
-SETTING_WS=116
-LOOKUP_LINE_COMMENT=117
-LOOKUP_MULTILINE_COMMENT=118
-LOOKUP_WS=119
-LOOKUP_FIELD_LINE_COMMENT=120
-LOOKUP_FIELD_MULTILINE_COMMENT=121
-LOOKUP_FIELD_WS=122
-JOIN=123
-USING=124
-JOIN_LINE_COMMENT=125
-JOIN_MULTILINE_COMMENT=126
-JOIN_WS=127
-METRICS_LINE_COMMENT=128
-METRICS_MULTILINE_COMMENT=129
-METRICS_WS=130
-CLOSING_METRICS_LINE_COMMENT=131
-CLOSING_METRICS_MULTILINE_COMMENT=132
-CLOSING_METRICS_WS=133
-CHANGE_POINT_LINE_COMMENT=134
-CHANGE_POINT_MULTILINE_COMMENT=135
-CHANGE_POINT_WS=136
-INSIST_WS=137
-INSIST_LINE_COMMENT=138
-INSIST_MULTILINE_COMMENT=139
-FORK_WS=140
-FORK_LINE_COMMENT=141
-FORK_MULTILINE_COMMENT=142
-'dissect'=1
-'drop'=2
-'enrich'=3
-'eval'=4
-'explain'=5
-'from'=6
-'grok'=7
-'keep'=8
-'limit'=9
-'mv_expand'=10
-'rename'=11
-'row'=12
-'show'=13
-'sort'=14
-'stats'=15
-'where'=16
-'lookup'=17
-'|'=31
-'by'=35
-'and'=36
-'asc'=37
-'='=38
-'::'=39
-':'=40
-','=41
-'desc'=42
-'.'=43
-'false'=44
-'first'=45
-'in'=46
-'is'=47
-'last'=48
-'like'=49
-'not'=50
-'null'=51
-'nulls'=52
-'or'=53
-'?'=54
-'rlike'=55
-'true'=56
-'=='=57
-'=~'=58
-'!='=59
-'<'=60
-'<='=61
-'>'=62
-'>='=63
-'+'=64
-'-'=65
-'*'=66
-'/'=67
-'%'=68
-'{'=69
-'}'=70
-']'=73
-')'=75
-'metadata'=84
-'as'=93
-'on'=97
-'with'=98
-'info'=109
-'join'=123
-'USING'=124
+LINE_COMMENT=1
+MULTILINE_COMMENT=2
+WS=3
+DEV_CHANGE_POINT=4
+ENRICH=5
+EXPLAIN=6
+DISSECT=7
+EVAL=8
+GROK=9
+LIMIT=10
+ROW=11
+SORT=12
+STATS=13
+WHERE=14
+DEV_INLINESTATS=15
+FROM=16
+DEV_FORK=17
+JOIN_LOOKUP=18
+DEV_JOIN_FULL=19
+DEV_JOIN_LEFT=20
+DEV_JOIN_RIGHT=21
+DEV_LOOKUP=22
+DEV_METRICS=23
+MV_EXPAND=24
+DROP=25
+KEEP=26
+DEV_INSIST=27
+RENAME=28
+SHOW=29
+UNKNOWN_CMD=30
+CHANGE_POINT_LINE_COMMENT=31
+CHANGE_POINT_MULTILINE_COMMENT=32
+CHANGE_POINT_WS=33
+ON=34
+WITH=35
+ENRICH_POLICY_NAME=36
+ENRICH_LINE_COMMENT=37
+ENRICH_MULTILINE_COMMENT=38
+ENRICH_WS=39
+ENRICH_FIELD_LINE_COMMENT=40
+ENRICH_FIELD_MULTILINE_COMMENT=41
+ENRICH_FIELD_WS=42
+SETTING=43
+SETTING_LINE_COMMENT=44
+SETTTING_MULTILINE_COMMENT=45
+SETTING_WS=46
+EXPLAIN_WS=47
+EXPLAIN_LINE_COMMENT=48
+EXPLAIN_MULTILINE_COMMENT=49
+PIPE=50
+QUOTED_STRING=51
+INTEGER_LITERAL=52
+DECIMAL_LITERAL=53
+BY=54
+AND=55
+ASC=56
+ASSIGN=57
+CAST_OP=58
+COLON=59
+COMMA=60
+DESC=61
+DOT=62
+FALSE=63
+FIRST=64
+IN=65
+IS=66
+LAST=67
+LIKE=68
+NOT=69
+NULL=70
+NULLS=71
+OR=72
+PARAM=73
+RLIKE=74
+TRUE=75
+EQ=76
+CIEQ=77
+NEQ=78
+LT=79
+LTE=80
+GT=81
+GTE=82
+PLUS=83
+MINUS=84
+ASTERISK=85
+SLASH=86
+PERCENT=87
+LEFT_BRACES=88
+RIGHT_BRACES=89
+NAMED_OR_POSITIONAL_PARAM=90
+OPENING_BRACKET=91
+CLOSING_BRACKET=92
+LP=93
+RP=94
+UNQUOTED_IDENTIFIER=95
+QUOTED_IDENTIFIER=96
+EXPR_LINE_COMMENT=97
+EXPR_MULTILINE_COMMENT=98
+EXPR_WS=99
+METADATA=100
+UNQUOTED_SOURCE=101
+FROM_LINE_COMMENT=102
+FROM_MULTILINE_COMMENT=103
+FROM_WS=104
+FORK_WS=105
+FORK_LINE_COMMENT=106
+FORK_MULTILINE_COMMENT=107
+JOIN=108
+USING=109
+JOIN_LINE_COMMENT=110
+JOIN_MULTILINE_COMMENT=111
+JOIN_WS=112
+LOOKUP_LINE_COMMENT=113
+LOOKUP_MULTILINE_COMMENT=114
+LOOKUP_WS=115
+LOOKUP_FIELD_LINE_COMMENT=116
+LOOKUP_FIELD_MULTILINE_COMMENT=117
+LOOKUP_FIELD_WS=118
+METRICS_LINE_COMMENT=119
+METRICS_MULTILINE_COMMENT=120
+METRICS_WS=121
+CLOSING_METRICS_LINE_COMMENT=122
+CLOSING_METRICS_MULTILINE_COMMENT=123
+CLOSING_METRICS_WS=124
+MVEXPAND_LINE_COMMENT=125
+MVEXPAND_MULTILINE_COMMENT=126
+MVEXPAND_WS=127
+ID_PATTERN=128
+PROJECT_LINE_COMMENT=129
+PROJECT_MULTILINE_COMMENT=130
+PROJECT_WS=131
+AS=132
+RENAME_LINE_COMMENT=133
+RENAME_MULTILINE_COMMENT=134
+RENAME_WS=135
+INFO=136
+SHOW_LINE_COMMENT=137
+SHOW_MULTILINE_COMMENT=138
+SHOW_WS=139
+'enrich'=5
+'explain'=6
+'dissect'=7
+'eval'=8
+'grok'=9
+'limit'=10
+'row'=11
+'sort'=12
+'stats'=13
+'where'=14
+'from'=16
+'lookup'=18
+'mv_expand'=24
+'drop'=25
+'keep'=26
+'rename'=28
+'show'=29
+'on'=34
+'with'=35
+'|'=50
+'by'=54
+'and'=55
+'asc'=56
+'='=57
+'::'=58
+':'=59
+','=60
+'desc'=61
+'.'=62
+'false'=63
+'first'=64
+'in'=65
+'is'=66
+'last'=67
+'like'=68
+'not'=69
+'null'=70
+'nulls'=71
+'or'=72
+'?'=73
+'rlike'=74
+'true'=75
+'=='=76
+'=~'=77
+'!='=78
+'<'=79
+'<='=80
+'>'=81
+'>='=82
+'+'=83
+'-'=84
+'*'=85
+'/'=86
+'%'=87
+'{'=88
+'}'=89
+']'=92
+')'=94
+'metadata'=100
+'join'=108
+'USING'=109
+'as'=132
+'info'=136
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/ChangePoint.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/ChangePoint.g4
new file mode 100644
index 000000000000..78ed84a31b6a
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/ChangePoint.g4
@@ -0,0 +1,24 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar ChangePoint;
+
+//
+// | CHANGE_POINT command
+//
+DEV_CHANGE_POINT : {this.isDevVersion()}? 'change_point' -> pushMode(CHANGE_POINT_MODE);
+
+mode CHANGE_POINT_MODE;
+CHANGE_POINT_PIPE : PIPE -> type(PIPE), popMode;
+CHANGE_POINT_ON : ON -> type(ON);
+CHANGE_POINT_AS : AS -> type(AS);
+CHANGE_POINT_DOT: DOT -> type(DOT);
+CHANGE_POINT_COMMA: COMMA -> type(COMMA);
+CHANGE_POINT_QUOTED_IDENTIFIER: QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER);
+CHANGE_POINT_UNQUOTED_IDENTIFIER: UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER);
+CHANGE_POINT_LINE_COMMENT: LINE_COMMENT -> channel(HIDDEN);
+CHANGE_POINT_MULTILINE_COMMENT: MULTILINE_COMMENT -> channel(HIDDEN);
+CHANGE_POINT_WS: WS -> channel(HIDDEN);
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Enrich.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Enrich.g4
new file mode 100644
index 000000000000..f689f8223a29
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Enrich.g4
@@ -0,0 +1,100 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Enrich;
+
+//
+// | ENRICH ON key WITH fields
+//
+ENRICH : 'enrich' -> pushMode(ENRICH_MODE);
+
+
+mode ENRICH_MODE;
+ENRICH_PIPE : PIPE -> type(PIPE), popMode;
+ENRICH_OPENING_BRACKET : OPENING_BRACKET -> type(OPENING_BRACKET), pushMode(SETTING_MODE);
+
+ON : 'on' -> pushMode(ENRICH_FIELD_MODE);
+WITH : 'with' -> pushMode(ENRICH_FIELD_MODE);
+
+// similar to that of an index
+// see https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params
+fragment ENRICH_POLICY_NAME_BODY
+ : ~[\\/?"<>| ,#\t\r\n:]
+ ;
+
+ENRICH_POLICY_NAME
+ // allow prefix for the policy to specify its resolution
+ : (ENRICH_POLICY_NAME_BODY+ COLON)? ENRICH_POLICY_NAME_BODY+
+ ;
+
+ENRICH_MODE_UNQUOTED_VALUE
+ : ENRICH_POLICY_NAME -> type(ENRICH_POLICY_NAME)
+ ;
+
+ENRICH_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+ENRICH_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+ENRICH_WS
+ : WS -> channel(HIDDEN)
+ ;
+
+// submode for Enrich to allow different lexing between policy source (loose) and field identifiers
+mode ENRICH_FIELD_MODE;
+ENRICH_FIELD_PIPE : PIPE -> type(PIPE), popMode, popMode;
+ENRICH_FIELD_ASSIGN : ASSIGN -> type(ASSIGN);
+ENRICH_FIELD_COMMA : COMMA -> type(COMMA);
+ENRICH_FIELD_DOT: DOT -> type(DOT);
+
+ENRICH_FIELD_WITH : WITH -> type(WITH) ;
+
+ENRICH_FIELD_ID_PATTERN
+ : ID_PATTERN -> type(ID_PATTERN)
+ ;
+
+ENRICH_FIELD_QUOTED_IDENTIFIER
+ : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER)
+ ;
+
+ENRICH_FIELD_PARAM : PARAM -> type(PARAM);
+ENRICH_FIELD_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
+
+ENRICH_FIELD_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+ENRICH_FIELD_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+ENRICH_FIELD_WS
+ : WS -> channel(HIDDEN)
+ ;
+
+mode SETTING_MODE;
+SETTING_CLOSING_BRACKET : CLOSING_BRACKET -> type(CLOSING_BRACKET), popMode;
+
+SETTING_COLON : COLON -> type(COLON);
+
+SETTING
+ : (ASPERAND | DIGIT| DOT | LETTER | UNDERSCORE)+
+ ;
+
+SETTING_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+SETTTING_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+SETTING_WS
+ : WS -> channel(HIDDEN)
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Explain.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Explain.g4
new file mode 100644
index 000000000000..c65e49cc541a
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Explain.g4
@@ -0,0 +1,20 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Explain;
+
+//
+// Explain
+//
+EXPLAIN : 'explain' -> pushMode(EXPLAIN_MODE);
+
+
+mode EXPLAIN_MODE;
+EXPLAIN_OPENING_BRACKET : OPENING_BRACKET -> type(OPENING_BRACKET), pushMode(DEFAULT_MODE);
+EXPLAIN_PIPE : PIPE -> type(PIPE), popMode;
+EXPLAIN_WS : WS -> channel(HIDDEN);
+EXPLAIN_LINE_COMMENT : LINE_COMMENT -> channel(HIDDEN);
+EXPLAIN_MULTILINE_COMMENT : MULTILINE_COMMENT -> channel(HIDDEN);
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Expression.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Expression.g4
new file mode 100644
index 000000000000..365cc5e4194a
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Expression.g4
@@ -0,0 +1,169 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Expression;
+
+//
+// Expression - used by many commands
+//
+DISSECT : 'dissect' -> pushMode(EXPRESSION_MODE);
+EVAL : 'eval' -> pushMode(EXPRESSION_MODE);
+GROK : 'grok' -> pushMode(EXPRESSION_MODE);
+LIMIT : 'limit' -> pushMode(EXPRESSION_MODE);
+ROW : 'row' -> pushMode(EXPRESSION_MODE);
+SORT : 'sort' -> pushMode(EXPRESSION_MODE);
+STATS : 'stats' -> pushMode(EXPRESSION_MODE);
+WHERE : 'where' -> pushMode(EXPRESSION_MODE);
+
+DEV_INLINESTATS : {this.isDevVersion()}? 'inlinestats' -> pushMode(EXPRESSION_MODE);
+
+
+mode EXPRESSION_MODE;
+
+PIPE : '|' -> popMode;
+
+fragment DIGIT
+ : [0-9]
+ ;
+
+fragment LETTER
+ : [a-z]
+ ;
+
+fragment ESCAPE_SEQUENCE
+ : '\\' [tnr"\\]
+ ;
+
+fragment UNESCAPED_CHARS
+ : ~[\r\n"\\]
+ ;
+
+fragment EXPONENT
+ : [e] [+-]? DIGIT+
+ ;
+
+fragment ASPERAND
+ : '@'
+ ;
+
+fragment BACKQUOTE
+ : '`'
+ ;
+
+fragment BACKQUOTE_BLOCK
+ : ~'`'
+ | '``'
+ ;
+
+fragment UNDERSCORE
+ : '_'
+ ;
+
+fragment UNQUOTED_ID_BODY
+ : (LETTER | DIGIT | UNDERSCORE)
+ ;
+
+QUOTED_STRING
+ : '"' (ESCAPE_SEQUENCE | UNESCAPED_CHARS)* '"'
+ | '"""' (~[\r\n])*? '"""' '"'? '"'?
+ ;
+
+INTEGER_LITERAL
+ : DIGIT+
+ ;
+
+DECIMAL_LITERAL
+ : DIGIT+ DOT DIGIT*
+ | DOT DIGIT+
+ | DIGIT+ (DOT DIGIT*)? EXPONENT
+ | DOT DIGIT+ EXPONENT
+ ;
+
+BY : 'by';
+
+AND : 'and';
+ASC : 'asc';
+ASSIGN : '=';
+CAST_OP : '::';
+COLON : ':';
+COMMA : ',';
+DESC : 'desc';
+DOT : '.';
+FALSE : 'false';
+FIRST : 'first';
+IN: 'in';
+IS: 'is';
+LAST : 'last';
+LIKE: 'like';
+NOT : 'not';
+NULL : 'null';
+NULLS : 'nulls';
+OR : 'or';
+PARAM: '?';
+RLIKE: 'rlike';
+TRUE : 'true';
+
+EQ : '==';
+CIEQ : '=~';
+NEQ : '!=';
+LT : '<';
+LTE : '<=';
+GT : '>';
+GTE : '>=';
+
+PLUS : '+';
+MINUS : '-';
+ASTERISK : '*';
+SLASH : '/';
+PERCENT : '%';
+
+LEFT_BRACES : '{';
+RIGHT_BRACES : '}';
+
+NESTED_WHERE : WHERE -> type(WHERE);
+
+NAMED_OR_POSITIONAL_PARAM
+ : PARAM (LETTER | UNDERSCORE) UNQUOTED_ID_BODY*
+ | PARAM DIGIT+
+ ;
+
+// Brackets are funny. We can happen upon a CLOSING_BRACKET in two ways - one
+// way is to start in an explain command which then shifts us to expression
+// mode. Thus, the two popModes on CLOSING_BRACKET. The other way could as
+// the start of a multivalued field constant. To line up with the double pop
+// the explain mode needs, we double push when we see that.
+OPENING_BRACKET : '[' -> pushMode(EXPRESSION_MODE), pushMode(EXPRESSION_MODE);
+CLOSING_BRACKET : ']' -> popMode, popMode;
+
+LP : '(' -> pushMode(EXPRESSION_MODE), pushMode(EXPRESSION_MODE);
+RP : ')' -> popMode, popMode;
+
+UNQUOTED_IDENTIFIER
+ : LETTER UNQUOTED_ID_BODY*
+ // only allow @ at beginning of identifier to keep the option to allow @ as infix operator in the future
+ // also, single `_` and `@` characters are not valid identifiers
+ | (UNDERSCORE | ASPERAND) UNQUOTED_ID_BODY+
+ ;
+
+fragment QUOTED_ID
+ : BACKQUOTE BACKQUOTE_BLOCK+ BACKQUOTE
+ ;
+
+QUOTED_IDENTIFIER
+ : QUOTED_ID
+ ;
+
+EXPR_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+EXPR_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+EXPR_WS
+ : WS -> channel(HIDDEN)
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Fork.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Fork.g4
new file mode 100644
index 000000000000..100ca39c207e
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Fork.g4
@@ -0,0 +1,21 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Fork;
+
+//
+// Fork
+//
+DEV_FORK : {this.isDevVersion()}? 'fork' -> pushMode(FORK_MODE);
+
+mode FORK_MODE;
+FORK_LP : LP -> type(LP), pushMode(DEFAULT_MODE);
+FORK_PIPE : PIPE -> type(PIPE), popMode;
+
+FORK_WS : WS -> channel(HIDDEN);
+FORK_LINE_COMMENT : LINE_COMMENT -> channel(HIDDEN);
+FORK_MULTILINE_COMMENT : MULTILINE_COMMENT -> channel(HIDDEN);
+
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/From.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/From.g4
new file mode 100644
index 000000000000..1745bd9aaf3a
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/From.g4
@@ -0,0 +1,48 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar From;
+
+//
+// FROM command
+//
+FROM : 'from' -> pushMode(FROM_MODE);
+
+
+mode FROM_MODE;
+FROM_PIPE : PIPE -> type(PIPE), popMode;
+FROM_OPENING_BRACKET : OPENING_BRACKET -> type(OPENING_BRACKET);
+FROM_CLOSING_BRACKET : CLOSING_BRACKET -> type(CLOSING_BRACKET);
+FROM_COLON : COLON -> type(COLON);
+FROM_COMMA : COMMA -> type(COMMA);
+FROM_ASSIGN : ASSIGN -> type(ASSIGN);
+METADATA : 'metadata';
+
+// in 8.14 ` were not allowed
+// this has been relaxed in 8.15 since " is used for quoting
+fragment UNQUOTED_SOURCE_PART
+ : ~[:"=|,[\]/ \t\r\n]
+ | '/' ~[*/] // allow single / but not followed by another / or * which would start a comment -- used in index pattern date spec
+ ;
+
+UNQUOTED_SOURCE
+ : UNQUOTED_SOURCE_PART+
+ ;
+
+FROM_UNQUOTED_SOURCE : UNQUOTED_SOURCE -> type(UNQUOTED_SOURCE);
+FROM_QUOTED_SOURCE : QUOTED_STRING -> type(QUOTED_STRING);
+
+FROM_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+FROM_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+FROM_WS
+ : WS -> channel(HIDDEN)
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Join.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Join.g4
new file mode 100644
index 000000000000..918f3dec780b
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Join.g4
@@ -0,0 +1,41 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Join;
+
+//
+// JOIN-related commands
+//
+JOIN_LOOKUP : 'lookup' -> pushMode(JOIN_MODE);
+DEV_JOIN_FULL : {this.isDevVersion()}? 'full' -> pushMode(JOIN_MODE);
+DEV_JOIN_LEFT : {this.isDevVersion()}? 'left' -> pushMode(JOIN_MODE);
+DEV_JOIN_RIGHT : {this.isDevVersion()}? 'right' -> pushMode(JOIN_MODE);
+
+mode JOIN_MODE;
+JOIN_PIPE : PIPE -> type(PIPE), popMode;
+JOIN : 'join';
+JOIN_AS : AS -> type(AS);
+JOIN_ON : ON -> type(ON), popMode, pushMode(EXPRESSION_MODE);
+USING : 'USING' -> popMode, pushMode(EXPRESSION_MODE);
+
+JOIN_UNQUOTED_SOURCE: UNQUOTED_SOURCE -> type(UNQUOTED_SOURCE);
+JOIN_QUOTED_SOURCE : QUOTED_STRING -> type(QUOTED_STRING);
+JOIN_COLON : COLON -> type(COLON);
+
+JOIN_UNQUOTED_IDENTIFER: UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER);
+JOIN_QUOTED_IDENTIFIER : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER);
+
+JOIN_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+JOIN_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+JOIN_WS
+ : WS -> channel(HIDDEN)
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Lookup.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Lookup.g4
new file mode 100644
index 000000000000..6642a73bf18c
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Lookup.g4
@@ -0,0 +1,55 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Lookup;
+
+//
+// LOOKUP ON key
+//
+DEV_LOOKUP : {this.isDevVersion()}? 'lookup_🐔' -> pushMode(LOOKUP_MODE);
+
+mode LOOKUP_MODE;
+LOOKUP_PIPE : PIPE -> type(PIPE), popMode;
+LOOKUP_COLON : COLON -> type(COLON);
+LOOKUP_COMMA : COMMA -> type(COMMA);
+LOOKUP_DOT: DOT -> type(DOT);
+LOOKUP_ON : ON -> type(ON), pushMode(LOOKUP_FIELD_MODE);
+
+LOOKUP_UNQUOTED_SOURCE: UNQUOTED_SOURCE -> type(UNQUOTED_SOURCE);
+LOOKUP_QUOTED_SOURCE : QUOTED_STRING -> type(QUOTED_STRING);
+
+LOOKUP_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+LOOKUP_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+LOOKUP_WS
+ : WS -> channel(HIDDEN)
+ ;
+
+mode LOOKUP_FIELD_MODE;
+LOOKUP_FIELD_PIPE : PIPE -> type(PIPE), popMode, popMode;
+LOOKUP_FIELD_COMMA : COMMA -> type(COMMA);
+LOOKUP_FIELD_DOT: DOT -> type(DOT);
+
+LOOKUP_FIELD_ID_PATTERN
+ : ID_PATTERN -> type(ID_PATTERN)
+ ;
+
+LOOKUP_FIELD_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+LOOKUP_FIELD_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+LOOKUP_FIELD_WS
+ : WS -> channel(HIDDEN)
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Metrics.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Metrics.g4
new file mode 100644
index 000000000000..e136de24e69f
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Metrics.g4
@@ -0,0 +1,70 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Metrics;
+
+//
+// METRICS command
+//
+DEV_METRICS : {this.isDevVersion()}? 'metrics' -> pushMode(METRICS_MODE);
+
+mode METRICS_MODE;
+METRICS_PIPE : PIPE -> type(PIPE), popMode;
+
+METRICS_UNQUOTED_SOURCE: UNQUOTED_SOURCE -> type(UNQUOTED_SOURCE), popMode, pushMode(CLOSING_METRICS_MODE);
+METRICS_QUOTED_SOURCE : QUOTED_STRING -> type(QUOTED_STRING), popMode, pushMode(CLOSING_METRICS_MODE);
+
+METRICS_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+METRICS_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+METRICS_WS
+ : WS -> channel(HIDDEN)
+ ;
+
+
+// TODO: remove this workaround mode - see https://github.com/elastic/elasticsearch/issues/108528
+mode CLOSING_METRICS_MODE;
+
+CLOSING_METRICS_COLON
+ : COLON -> type(COLON), popMode, pushMode(METRICS_MODE)
+ ;
+
+CLOSING_METRICS_COMMA
+ : COMMA -> type(COMMA), popMode, pushMode(METRICS_MODE)
+ ;
+
+CLOSING_METRICS_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+CLOSING_METRICS_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+CLOSING_METRICS_WS
+ : WS -> channel(HIDDEN)
+ ;
+
+CLOSING_METRICS_QUOTED_IDENTIFIER
+ : QUOTED_IDENTIFIER -> popMode, pushMode(EXPRESSION_MODE), type(QUOTED_IDENTIFIER)
+ ;
+
+CLOSING_METRICS_UNQUOTED_IDENTIFIER
+ :UNQUOTED_IDENTIFIER -> popMode, pushMode(EXPRESSION_MODE), type(UNQUOTED_IDENTIFIER)
+ ;
+
+CLOSING_METRICS_BY
+ :BY -> popMode, pushMode(EXPRESSION_MODE), type(BY)
+ ;
+
+CLOSING_METRICS_PIPE
+ : PIPE -> type(PIPE), popMode
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/MvExpand.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/MvExpand.g4
new file mode 100644
index 000000000000..2aedb5f8bd83
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/MvExpand.g4
@@ -0,0 +1,39 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar MvExpand;
+
+//
+// MV_EXPAND
+//
+MV_EXPAND : 'mv_expand' -> pushMode(MVEXPAND_MODE);
+
+
+mode MVEXPAND_MODE;
+MVEXPAND_PIPE : PIPE -> type(PIPE), popMode;
+MVEXPAND_DOT: DOT -> type(DOT);
+MVEXPAND_PARAM : PARAM -> type(PARAM);
+MVEXPAND_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
+
+MVEXPAND_QUOTED_IDENTIFIER
+ : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER)
+ ;
+
+MVEXPAND_UNQUOTED_IDENTIFIER
+ : UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER)
+ ;
+
+MVEXPAND_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+MVEXPAND_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+MVEXPAND_WS
+ : WS -> channel(HIDDEN)
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Project.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Project.g4
new file mode 100644
index 000000000000..8b13ff6cfd63
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Project.g4
@@ -0,0 +1,46 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Project;
+
+//
+// DROP, KEEP
+//
+DROP : 'drop' -> pushMode(PROJECT_MODE);
+KEEP : 'keep' -> pushMode(PROJECT_MODE);
+DEV_INSIST : {this.isDevVersion()}? 'insist_🐔' -> pushMode(PROJECT_MODE);
+
+mode PROJECT_MODE;
+PROJECT_PIPE : PIPE -> type(PIPE), popMode;
+PROJECT_DOT: DOT -> type(DOT);
+PROJECT_COMMA : COMMA -> type(COMMA);
+PROJECT_PARAM : PARAM -> type(PARAM);
+PROJECT_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
+
+fragment UNQUOTED_ID_BODY_WITH_PATTERN
+ : (LETTER | DIGIT | UNDERSCORE | ASTERISK)
+ ;
+
+fragment UNQUOTED_ID_PATTERN
+ : (LETTER | ASTERISK) UNQUOTED_ID_BODY_WITH_PATTERN*
+ | (UNDERSCORE | ASPERAND) UNQUOTED_ID_BODY_WITH_PATTERN+
+ ;
+
+ID_PATTERN
+ : (UNQUOTED_ID_PATTERN | QUOTED_ID)+
+ ;
+
+PROJECT_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+PROJECT_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+PROJECT_WS
+ : WS -> channel(HIDDEN)
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Rename.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Rename.g4
new file mode 100644
index 000000000000..e701d7e569ed
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Rename.g4
@@ -0,0 +1,39 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Rename;
+
+//
+// | RENAME a.b AS x, c AS y
+//
+RENAME : 'rename' -> pushMode(RENAME_MODE);
+
+
+mode RENAME_MODE;
+RENAME_PIPE : PIPE -> type(PIPE), popMode;
+RENAME_ASSIGN : ASSIGN -> type(ASSIGN);
+RENAME_COMMA : COMMA -> type(COMMA);
+RENAME_DOT: DOT -> type(DOT);
+RENAME_PARAM : PARAM -> type(PARAM);
+RENAME_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
+
+AS : 'as';
+
+RENAME_ID_PATTERN
+ : ID_PATTERN -> type(ID_PATTERN)
+ ;
+
+RENAME_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+RENAME_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+RENAME_WS
+ : WS -> channel(HIDDEN)
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/Show.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/Show.g4
new file mode 100644
index 000000000000..dfed96353f08
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/Show.g4
@@ -0,0 +1,31 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar Show;
+
+//
+// SHOW commands
+//
+SHOW : 'show' -> pushMode(SHOW_MODE);
+
+
+mode SHOW_MODE;
+SHOW_PIPE : PIPE -> type(PIPE), popMode;
+
+INFO : 'info';
+
+SHOW_LINE_COMMENT
+ : LINE_COMMENT -> channel(HIDDEN)
+ ;
+
+SHOW_MULTILINE_COMMENT
+ : MULTILINE_COMMENT -> channel(HIDDEN)
+ ;
+
+SHOW_WS
+ : WS -> channel(HIDDEN)
+ ;
+
diff --git a/x-pack/plugin/esql/src/main/antlr/lexer/UnknownCommand.g4 b/x-pack/plugin/esql/src/main/antlr/lexer/UnknownCommand.g4
new file mode 100644
index 000000000000..af1b894b2222
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/lexer/UnknownCommand.g4
@@ -0,0 +1,12 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+lexer grammar UnknownCommand;
+
+//
+// Catch-all for unrecognized commands
+//
+UNKNOWN_CMD : ~[ \r\n\t[\]/]+ -> pushMode(EXPRESSION_MODE) ;
diff --git a/x-pack/plugin/esql/src/main/antlr/parser/Expression.g4 b/x-pack/plugin/esql/src/main/antlr/parser/Expression.g4
new file mode 100644
index 000000000000..0ab967ec4abf
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/parser/Expression.g4
@@ -0,0 +1,101 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+parser grammar Expression;
+
+booleanExpression
+ : NOT booleanExpression #logicalNot
+ | valueExpression #booleanDefault
+ | regexBooleanExpression #regexExpression
+ | left=booleanExpression operator=AND right=booleanExpression #logicalBinary
+ | left=booleanExpression operator=OR right=booleanExpression #logicalBinary
+ | valueExpression (NOT)? IN LP valueExpression (COMMA valueExpression)* RP #logicalIn
+ | valueExpression IS NOT? NULL #isNull
+ | matchBooleanExpression #matchExpression
+ ;
+
+regexBooleanExpression
+ : valueExpression (NOT)? kind=LIKE pattern=string
+ | valueExpression (NOT)? kind=RLIKE pattern=string
+ ;
+
+matchBooleanExpression
+ : fieldExp=qualifiedName (CAST_OP fieldType=dataType)? COLON matchQuery=constant
+ ;
+
+valueExpression
+ : operatorExpression #valueExpressionDefault
+ | left=operatorExpression comparisonOperator right=operatorExpression #comparison
+ ;
+
+operatorExpression
+ : primaryExpression #operatorExpressionDefault
+ | operator=(MINUS | PLUS) operatorExpression #arithmeticUnary
+ | left=operatorExpression operator=(ASTERISK | SLASH | PERCENT) right=operatorExpression #arithmeticBinary
+ | left=operatorExpression operator=(PLUS | MINUS) right=operatorExpression #arithmeticBinary
+ ;
+
+primaryExpression
+ : constant #constantDefault
+ | qualifiedName #dereference
+ | functionExpression #function
+ | LP booleanExpression RP #parenthesizedExpression
+ | primaryExpression CAST_OP dataType #inlineCast
+ ;
+
+functionExpression
+ : functionName LP (ASTERISK | (booleanExpression (COMMA booleanExpression)* (COMMA mapExpression)?))? RP
+ ;
+
+functionName
+ : identifierOrParameter
+ ;
+
+mapExpression
+ : LEFT_BRACES entryExpression (COMMA entryExpression)* RIGHT_BRACES
+ ;
+
+entryExpression
+ : key=string COLON value=constant
+ ;
+
+constant
+ : NULL #nullLiteral
+ | integerValue UNQUOTED_IDENTIFIER #qualifiedIntegerLiteral
+ | decimalValue #decimalLiteral
+ | integerValue #integerLiteral
+ | booleanValue #booleanLiteral
+ | parameter #inputParameter
+ | string #stringLiteral
+ | OPENING_BRACKET numericValue (COMMA numericValue)* CLOSING_BRACKET #numericArrayLiteral
+ | OPENING_BRACKET booleanValue (COMMA booleanValue)* CLOSING_BRACKET #booleanArrayLiteral
+ | OPENING_BRACKET string (COMMA string)* CLOSING_BRACKET #stringArrayLiteral
+ ;
+
+booleanValue
+ : TRUE | FALSE
+ ;
+
+numericValue
+ : decimalValue
+ | integerValue
+ ;
+
+decimalValue
+ : (PLUS | MINUS)? DECIMAL_LITERAL
+ ;
+
+integerValue
+ : (PLUS | MINUS)? INTEGER_LITERAL
+ ;
+
+string
+ : QUOTED_STRING
+ ;
+
+comparisonOperator
+ : EQ | NEQ | LT | LTE | GT | GTE
+ ;
diff --git a/x-pack/plugin/esql/src/main/antlr/parser/Join.g4 b/x-pack/plugin/esql/src/main/antlr/parser/Join.g4
new file mode 100644
index 000000000000..834534f1a7d6
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/antlr/parser/Join.g4
@@ -0,0 +1,25 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+parser grammar Join;
+
+joinCommand
+ : type=(JOIN_LOOKUP | DEV_JOIN_LEFT | DEV_JOIN_RIGHT) JOIN joinTarget joinCondition
+ ;
+
+joinTarget
+ : index=indexPattern
+ ;
+
+joinCondition
+ : ON joinPredicate (COMMA joinPredicate)*
+ ;
+
+joinPredicate
+ : valueExpression
+ ;
+
+
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseLexer.interp b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseLexer.interp
index f2afedee8ac0..f150197b22b6 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseLexer.interp
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseLexer.interp
@@ -1,27 +1,46 @@
token literal names:
null
-'dissect'
-'drop'
+null
+null
+null
+null
'enrich'
-'eval'
'explain'
-'from'
+'dissect'
+'eval'
'grok'
-'keep'
'limit'
-'mv_expand'
-'rename'
'row'
-'show'
'sort'
'stats'
'where'
+null
+'from'
+null
'lookup'
null
null
null
null
null
+'mv_expand'
+'drop'
+'keep'
+null
+'rename'
+'show'
+null
+null
+null
+null
+'on'
+'with'
+null
+null
+null
+null
+null
+null
null
null
null
@@ -80,9 +99,6 @@ null
null
null
null
-null
-null
-null
'metadata'
null
null
@@ -91,37 +107,6 @@ null
null
null
null
-null
-'as'
-null
-null
-null
-'on'
-'with'
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-'info'
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
'join'
'USING'
null
@@ -142,39 +127,70 @@ null
null
null
null
+null
+null
+null
+null
+'as'
+null
+null
+null
+'info'
+null
+null
+null
token symbolic names:
null
-DISSECT
-DROP
-ENRICH
-EVAL
-EXPLAIN
-FROM
-GROK
-KEEP
-LIMIT
-MV_EXPAND
-RENAME
-ROW
-SHOW
-SORT
-STATS
-WHERE
-JOIN_LOOKUP
-DEV_CHANGE_POINT
-DEV_INLINESTATS
-DEV_INSIST
-DEV_LOOKUP
-DEV_METRICS
-DEV_JOIN_FULL
-DEV_JOIN_LEFT
-DEV_JOIN_RIGHT
-DEV_FORK
-UNKNOWN_CMD
LINE_COMMENT
MULTILINE_COMMENT
WS
+DEV_CHANGE_POINT
+ENRICH
+EXPLAIN
+DISSECT
+EVAL
+GROK
+LIMIT
+ROW
+SORT
+STATS
+WHERE
+DEV_INLINESTATS
+FROM
+DEV_FORK
+JOIN_LOOKUP
+DEV_JOIN_FULL
+DEV_JOIN_LEFT
+DEV_JOIN_RIGHT
+DEV_LOOKUP
+DEV_METRICS
+MV_EXPAND
+DROP
+KEEP
+DEV_INSIST
+RENAME
+SHOW
+UNKNOWN_CMD
+CHANGE_POINT_LINE_COMMENT
+CHANGE_POINT_MULTILINE_COMMENT
+CHANGE_POINT_WS
+ON
+WITH
+ENRICH_POLICY_NAME
+ENRICH_LINE_COMMENT
+ENRICH_MULTILINE_COMMENT
+ENRICH_WS
+ENRICH_FIELD_LINE_COMMENT
+ENRICH_FIELD_MULTILINE_COMMENT
+ENRICH_FIELD_WS
+SETTING
+SETTING_LINE_COMMENT
+SETTTING_MULTILINE_COMMENT
+SETTING_WS
+EXPLAIN_WS
+EXPLAIN_LINE_COMMENT
+EXPLAIN_MULTILINE_COMMENT
PIPE
QUOTED_STRING
INTEGER_LITERAL
@@ -225,14 +241,34 @@ QUOTED_IDENTIFIER
EXPR_LINE_COMMENT
EXPR_MULTILINE_COMMENT
EXPR_WS
-EXPLAIN_WS
-EXPLAIN_LINE_COMMENT
-EXPLAIN_MULTILINE_COMMENT
METADATA
UNQUOTED_SOURCE
FROM_LINE_COMMENT
FROM_MULTILINE_COMMENT
FROM_WS
+FORK_WS
+FORK_LINE_COMMENT
+FORK_MULTILINE_COMMENT
+JOIN
+USING
+JOIN_LINE_COMMENT
+JOIN_MULTILINE_COMMENT
+JOIN_WS
+LOOKUP_LINE_COMMENT
+LOOKUP_MULTILINE_COMMENT
+LOOKUP_WS
+LOOKUP_FIELD_LINE_COMMENT
+LOOKUP_FIELD_MULTILINE_COMMENT
+LOOKUP_FIELD_WS
+METRICS_LINE_COMMENT
+METRICS_MULTILINE_COMMENT
+METRICS_WS
+CLOSING_METRICS_LINE_COMMENT
+CLOSING_METRICS_MULTILINE_COMMENT
+CLOSING_METRICS_WS
+MVEXPAND_LINE_COMMENT
+MVEXPAND_MULTILINE_COMMENT
+MVEXPAND_WS
ID_PATTERN
PROJECT_LINE_COMMENT
PROJECT_MULTILINE_COMMENT
@@ -241,84 +277,85 @@ AS
RENAME_LINE_COMMENT
RENAME_MULTILINE_COMMENT
RENAME_WS
-ON
-WITH
-ENRICH_POLICY_NAME
-ENRICH_LINE_COMMENT
-ENRICH_MULTILINE_COMMENT
-ENRICH_WS
-ENRICH_FIELD_LINE_COMMENT
-ENRICH_FIELD_MULTILINE_COMMENT
-ENRICH_FIELD_WS
-MVEXPAND_LINE_COMMENT
-MVEXPAND_MULTILINE_COMMENT
-MVEXPAND_WS
INFO
SHOW_LINE_COMMENT
SHOW_MULTILINE_COMMENT
SHOW_WS
+
+rule names:
+LINE_COMMENT
+MULTILINE_COMMENT
+WS
+DEV_CHANGE_POINT
+ENRICH
+EXPLAIN
+DISSECT
+EVAL
+GROK
+LIMIT
+ROW
+SORT
+STATS
+WHERE
+DEV_INLINESTATS
+FROM
+DEV_FORK
+JOIN_LOOKUP
+DEV_JOIN_FULL
+DEV_JOIN_LEFT
+DEV_JOIN_RIGHT
+DEV_LOOKUP
+DEV_METRICS
+MV_EXPAND
+DROP
+KEEP
+DEV_INSIST
+RENAME
+SHOW
+UNKNOWN_CMD
+CHANGE_POINT_PIPE
+CHANGE_POINT_ON
+CHANGE_POINT_AS
+CHANGE_POINT_DOT
+CHANGE_POINT_COMMA
+CHANGE_POINT_QUOTED_IDENTIFIER
+CHANGE_POINT_UNQUOTED_IDENTIFIER
+CHANGE_POINT_LINE_COMMENT
+CHANGE_POINT_MULTILINE_COMMENT
+CHANGE_POINT_WS
+ENRICH_PIPE
+ENRICH_OPENING_BRACKET
+ON
+WITH
+ENRICH_POLICY_NAME_BODY
+ENRICH_POLICY_NAME
+ENRICH_MODE_UNQUOTED_VALUE
+ENRICH_LINE_COMMENT
+ENRICH_MULTILINE_COMMENT
+ENRICH_WS
+ENRICH_FIELD_PIPE
+ENRICH_FIELD_ASSIGN
+ENRICH_FIELD_COMMA
+ENRICH_FIELD_DOT
+ENRICH_FIELD_WITH
+ENRICH_FIELD_ID_PATTERN
+ENRICH_FIELD_QUOTED_IDENTIFIER
+ENRICH_FIELD_PARAM
+ENRICH_FIELD_NAMED_OR_POSITIONAL_PARAM
+ENRICH_FIELD_LINE_COMMENT
+ENRICH_FIELD_MULTILINE_COMMENT
+ENRICH_FIELD_WS
+SETTING_CLOSING_BRACKET
+SETTING_COLON
SETTING
SETTING_LINE_COMMENT
SETTTING_MULTILINE_COMMENT
SETTING_WS
-LOOKUP_LINE_COMMENT
-LOOKUP_MULTILINE_COMMENT
-LOOKUP_WS
-LOOKUP_FIELD_LINE_COMMENT
-LOOKUP_FIELD_MULTILINE_COMMENT
-LOOKUP_FIELD_WS
-JOIN
-USING
-JOIN_LINE_COMMENT
-JOIN_MULTILINE_COMMENT
-JOIN_WS
-METRICS_LINE_COMMENT
-METRICS_MULTILINE_COMMENT
-METRICS_WS
-CLOSING_METRICS_LINE_COMMENT
-CLOSING_METRICS_MULTILINE_COMMENT
-CLOSING_METRICS_WS
-CHANGE_POINT_LINE_COMMENT
-CHANGE_POINT_MULTILINE_COMMENT
-CHANGE_POINT_WS
-INSIST_WS
-INSIST_LINE_COMMENT
-INSIST_MULTILINE_COMMENT
-FORK_WS
-FORK_LINE_COMMENT
-FORK_MULTILINE_COMMENT
-
-rule names:
-DISSECT
-DROP
-ENRICH
-EVAL
-EXPLAIN
-FROM
-GROK
-KEEP
-LIMIT
-MV_EXPAND
-RENAME
-ROW
-SHOW
-SORT
-STATS
-WHERE
-JOIN_LOOKUP
-DEV_CHANGE_POINT
-DEV_INLINESTATS
-DEV_INSIST
-DEV_LOOKUP
-DEV_METRICS
-DEV_JOIN_FULL
-DEV_JOIN_LEFT
-DEV_JOIN_RIGHT
-DEV_FORK
-UNKNOWN_CMD
-LINE_COMMENT
-MULTILINE_COMMENT
-WS
+EXPLAIN_OPENING_BRACKET
+EXPLAIN_PIPE
+EXPLAIN_WS
+EXPLAIN_LINE_COMMENT
+EXPLAIN_MULTILINE_COMMENT
PIPE
DIGIT
LETTER
@@ -381,11 +418,6 @@ QUOTED_IDENTIFIER
EXPR_LINE_COMMENT
EXPR_MULTILINE_COMMENT
EXPR_WS
-EXPLAIN_OPENING_BRACKET
-EXPLAIN_PIPE
-EXPLAIN_WS
-EXPLAIN_LINE_COMMENT
-EXPLAIN_MULTILINE_COMMENT
FROM_PIPE
FROM_OPENING_BRACKET
FROM_CLOSING_BRACKET
@@ -400,6 +432,65 @@ FROM_QUOTED_SOURCE
FROM_LINE_COMMENT
FROM_MULTILINE_COMMENT
FROM_WS
+FORK_LP
+FORK_PIPE
+FORK_WS
+FORK_LINE_COMMENT
+FORK_MULTILINE_COMMENT
+JOIN_PIPE
+JOIN
+JOIN_AS
+JOIN_ON
+USING
+JOIN_UNQUOTED_SOURCE
+JOIN_QUOTED_SOURCE
+JOIN_COLON
+JOIN_UNQUOTED_IDENTIFER
+JOIN_QUOTED_IDENTIFIER
+JOIN_LINE_COMMENT
+JOIN_MULTILINE_COMMENT
+JOIN_WS
+LOOKUP_PIPE
+LOOKUP_COLON
+LOOKUP_COMMA
+LOOKUP_DOT
+LOOKUP_ON
+LOOKUP_UNQUOTED_SOURCE
+LOOKUP_QUOTED_SOURCE
+LOOKUP_LINE_COMMENT
+LOOKUP_MULTILINE_COMMENT
+LOOKUP_WS
+LOOKUP_FIELD_PIPE
+LOOKUP_FIELD_COMMA
+LOOKUP_FIELD_DOT
+LOOKUP_FIELD_ID_PATTERN
+LOOKUP_FIELD_LINE_COMMENT
+LOOKUP_FIELD_MULTILINE_COMMENT
+LOOKUP_FIELD_WS
+METRICS_PIPE
+METRICS_UNQUOTED_SOURCE
+METRICS_QUOTED_SOURCE
+METRICS_LINE_COMMENT
+METRICS_MULTILINE_COMMENT
+METRICS_WS
+CLOSING_METRICS_COLON
+CLOSING_METRICS_COMMA
+CLOSING_METRICS_LINE_COMMENT
+CLOSING_METRICS_MULTILINE_COMMENT
+CLOSING_METRICS_WS
+CLOSING_METRICS_QUOTED_IDENTIFIER
+CLOSING_METRICS_UNQUOTED_IDENTIFIER
+CLOSING_METRICS_BY
+CLOSING_METRICS_PIPE
+MVEXPAND_PIPE
+MVEXPAND_DOT
+MVEXPAND_PARAM
+MVEXPAND_NAMED_OR_POSITIONAL_PARAM
+MVEXPAND_QUOTED_IDENTIFIER
+MVEXPAND_UNQUOTED_IDENTIFIER
+MVEXPAND_LINE_COMMENT
+MVEXPAND_MULTILINE_COMMENT
+MVEXPAND_WS
PROJECT_PIPE
PROJECT_DOT
PROJECT_COMMA
@@ -422,113 +513,11 @@ RENAME_ID_PATTERN
RENAME_LINE_COMMENT
RENAME_MULTILINE_COMMENT
RENAME_WS
-ENRICH_PIPE
-ENRICH_OPENING_BRACKET
-ON
-WITH
-ENRICH_POLICY_NAME_BODY
-ENRICH_POLICY_NAME
-ENRICH_MODE_UNQUOTED_VALUE
-ENRICH_LINE_COMMENT
-ENRICH_MULTILINE_COMMENT
-ENRICH_WS
-ENRICH_FIELD_PIPE
-ENRICH_FIELD_ASSIGN
-ENRICH_FIELD_COMMA
-ENRICH_FIELD_DOT
-ENRICH_FIELD_WITH
-ENRICH_FIELD_ID_PATTERN
-ENRICH_FIELD_QUOTED_IDENTIFIER
-ENRICH_FIELD_PARAM
-ENRICH_FIELD_NAMED_OR_POSITIONAL_PARAM
-ENRICH_FIELD_LINE_COMMENT
-ENRICH_FIELD_MULTILINE_COMMENT
-ENRICH_FIELD_WS
-MVEXPAND_PIPE
-MVEXPAND_DOT
-MVEXPAND_PARAM
-MVEXPAND_NAMED_OR_POSITIONAL_PARAM
-MVEXPAND_QUOTED_IDENTIFIER
-MVEXPAND_UNQUOTED_IDENTIFIER
-MVEXPAND_LINE_COMMENT
-MVEXPAND_MULTILINE_COMMENT
-MVEXPAND_WS
SHOW_PIPE
INFO
SHOW_LINE_COMMENT
SHOW_MULTILINE_COMMENT
SHOW_WS
-SETTING_CLOSING_BRACKET
-SETTING_COLON
-SETTING
-SETTING_LINE_COMMENT
-SETTTING_MULTILINE_COMMENT
-SETTING_WS
-LOOKUP_PIPE
-LOOKUP_COLON
-LOOKUP_COMMA
-LOOKUP_DOT
-LOOKUP_ON
-LOOKUP_UNQUOTED_SOURCE
-LOOKUP_QUOTED_SOURCE
-LOOKUP_LINE_COMMENT
-LOOKUP_MULTILINE_COMMENT
-LOOKUP_WS
-LOOKUP_FIELD_PIPE
-LOOKUP_FIELD_COMMA
-LOOKUP_FIELD_DOT
-LOOKUP_FIELD_ID_PATTERN
-LOOKUP_FIELD_LINE_COMMENT
-LOOKUP_FIELD_MULTILINE_COMMENT
-LOOKUP_FIELD_WS
-JOIN_PIPE
-JOIN
-JOIN_AS
-JOIN_ON
-USING
-JOIN_UNQUOTED_SOURCE
-JOIN_QUOTED_SOURCE
-JOIN_COLON
-JOIN_UNQUOTED_IDENTIFER
-JOIN_QUOTED_IDENTIFIER
-JOIN_LINE_COMMENT
-JOIN_MULTILINE_COMMENT
-JOIN_WS
-METRICS_PIPE
-METRICS_UNQUOTED_SOURCE
-METRICS_QUOTED_SOURCE
-METRICS_LINE_COMMENT
-METRICS_MULTILINE_COMMENT
-METRICS_WS
-CLOSING_METRICS_COLON
-CLOSING_METRICS_COMMA
-CLOSING_METRICS_LINE_COMMENT
-CLOSING_METRICS_MULTILINE_COMMENT
-CLOSING_METRICS_WS
-CLOSING_METRICS_QUOTED_IDENTIFIER
-CLOSING_METRICS_UNQUOTED_IDENTIFIER
-CLOSING_METRICS_BY
-CLOSING_METRICS_PIPE
-CHANGE_POINT_PIPE
-CHANGE_POINT_ON
-CHANGE_POINT_AS
-CHANGE_POINT_DOT
-CHANGE_POINT_COMMA
-CHANGE_POINT_QUOTED_IDENTIFIER
-CHANGE_POINT_UNQUOTED_IDENTIFIER
-CHANGE_POINT_LINE_COMMENT
-CHANGE_POINT_MULTILINE_COMMENT
-CHANGE_POINT_WS
-INSIST_PIPE
-INSIST_IDENTIFIER
-INSIST_WS
-INSIST_LINE_COMMENT
-INSIST_MULTILINE_COMMENT
-FORK_LP
-FORK_PIPE
-FORK_WS
-FORK_LINE_COMMENT
-FORK_MULTILINE_COMMENT
channel names:
DEFAULT_TOKEN_CHANNEL
@@ -536,24 +525,23 @@ HIDDEN
mode names:
DEFAULT_MODE
-EXPRESSION_MODE
-EXPLAIN_MODE
-FROM_MODE
-PROJECT_MODE
-RENAME_MODE
+CHANGE_POINT_MODE
ENRICH_MODE
ENRICH_FIELD_MODE
-MVEXPAND_MODE
-SHOW_MODE
SETTING_MODE
+EXPLAIN_MODE
+EXPRESSION_MODE
+FROM_MODE
+FORK_MODE
+JOIN_MODE
LOOKUP_MODE
LOOKUP_FIELD_MODE
-JOIN_MODE
METRICS_MODE
CLOSING_METRICS_MODE
-CHANGE_POINT_MODE
-INSIST_MODE
-FORK_MODE
+MVEXPAND_MODE
+PROJECT_MODE
+RENAME_MODE
+SHOW_MODE
atn:
-[4, 0, 142, 1784, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 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, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 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, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 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, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 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, 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, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 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, 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, 23, 1, 23, 1, 24, 1, 24, 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, 4, 26, 738, 8, 26, 11, 26, 12, 26, 739, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 748, 8, 27, 10, 27, 12, 27, 751, 9, 27, 1, 27, 3, 27, 754, 8, 27, 1, 27, 3, 27, 757, 8, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 766, 8, 28, 10, 28, 12, 28, 769, 9, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 4, 29, 777, 8, 29, 11, 29, 12, 29, 778, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 3, 35, 798, 8, 35, 1, 35, 4, 35, 801, 8, 35, 11, 35, 12, 35, 802, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 3, 38, 812, 8, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 819, 8, 40, 1, 41, 1, 41, 1, 41, 5, 41, 824, 8, 41, 10, 41, 12, 41, 827, 9, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 835, 8, 41, 10, 41, 12, 41, 838, 9, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 845, 8, 41, 1, 41, 3, 41, 848, 8, 41, 3, 41, 850, 8, 41, 1, 42, 4, 42, 853, 8, 42, 11, 42, 12, 42, 854, 1, 43, 4, 43, 858, 8, 43, 11, 43, 12, 43, 859, 1, 43, 1, 43, 5, 43, 864, 8, 43, 10, 43, 12, 43, 867, 9, 43, 1, 43, 1, 43, 4, 43, 871, 8, 43, 11, 43, 12, 43, 872, 1, 43, 4, 43, 876, 8, 43, 11, 43, 12, 43, 877, 1, 43, 1, 43, 5, 43, 882, 8, 43, 10, 43, 12, 43, 885, 9, 43, 3, 43, 887, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 4, 43, 893, 8, 43, 11, 43, 12, 43, 894, 1, 43, 1, 43, 3, 43, 899, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 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, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 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, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 3, 81, 1027, 8, 81, 1, 81, 5, 81, 1030, 8, 81, 10, 81, 12, 81, 1033, 9, 81, 1, 81, 1, 81, 4, 81, 1037, 8, 81, 11, 81, 12, 81, 1038, 3, 81, 1041, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 5, 86, 1065, 8, 86, 10, 86, 12, 86, 1068, 9, 86, 1, 86, 1, 86, 3, 86, 1072, 8, 86, 1, 86, 4, 86, 1075, 8, 86, 11, 86, 12, 86, 1076, 3, 86, 1079, 8, 86, 1, 87, 1, 87, 4, 87, 1083, 8, 87, 11, 87, 12, 87, 1084, 1, 87, 1, 87, 1, 88, 1, 88, 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, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 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, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 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, 104, 1, 104, 1, 104, 3, 104, 1162, 8, 104, 1, 105, 4, 105, 1165, 8, 105, 11, 105, 12, 105, 1166, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 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, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 1214, 8, 116, 1, 117, 1, 117, 3, 117, 1218, 8, 117, 1, 117, 5, 117, 1221, 8, 117, 10, 117, 12, 117, 1224, 9, 117, 1, 117, 1, 117, 3, 117, 1228, 8, 117, 1, 117, 4, 117, 1231, 8, 117, 11, 117, 12, 117, 1232, 3, 117, 1235, 8, 117, 1, 118, 1, 118, 4, 118, 1239, 8, 118, 11, 118, 12, 118, 1240, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 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, 137, 1, 137, 1, 138, 4, 138, 1324, 8, 138, 11, 138, 12, 138, 1325, 1, 138, 1, 138, 3, 138, 1330, 8, 138, 1, 138, 4, 138, 1333, 8, 138, 11, 138, 12, 138, 1334, 1, 139, 1, 139, 1, 139, 1, 139, 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, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 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, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 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, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 4, 171, 1476, 8, 171, 11, 171, 12, 171, 1477, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 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, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 2, 767, 836, 0, 240, 19, 1, 21, 2, 23, 3, 25, 4, 27, 5, 29, 6, 31, 7, 33, 8, 35, 9, 37, 10, 39, 11, 41, 12, 43, 13, 45, 14, 47, 15, 49, 16, 51, 17, 53, 18, 55, 19, 57, 20, 59, 21, 61, 22, 63, 23, 65, 24, 67, 25, 69, 26, 71, 27, 73, 28, 75, 29, 77, 30, 79, 31, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 32, 103, 33, 105, 34, 107, 35, 109, 36, 111, 37, 113, 38, 115, 39, 117, 40, 119, 41, 121, 42, 123, 43, 125, 44, 127, 45, 129, 46, 131, 47, 133, 48, 135, 49, 137, 50, 139, 51, 141, 52, 143, 53, 145, 54, 147, 55, 149, 56, 151, 57, 153, 58, 155, 59, 157, 60, 159, 61, 161, 62, 163, 63, 165, 64, 167, 65, 169, 66, 171, 67, 173, 68, 175, 69, 177, 70, 179, 0, 181, 71, 183, 72, 185, 73, 187, 74, 189, 75, 191, 76, 193, 0, 195, 77, 197, 78, 199, 79, 201, 80, 203, 0, 205, 0, 207, 81, 209, 82, 211, 83, 213, 0, 215, 0, 217, 0, 219, 0, 221, 0, 223, 0, 225, 84, 227, 0, 229, 85, 231, 0, 233, 0, 235, 86, 237, 87, 239, 88, 241, 0, 243, 0, 245, 0, 247, 0, 249, 0, 251, 0, 253, 0, 255, 89, 257, 90, 259, 91, 261, 92, 263, 0, 265, 0, 267, 0, 269, 0, 271, 0, 273, 0, 275, 93, 277, 0, 279, 94, 281, 95, 283, 96, 285, 0, 287, 0, 289, 97, 291, 98, 293, 0, 295, 99, 297, 0, 299, 100, 301, 101, 303, 102, 305, 0, 307, 0, 309, 0, 311, 0, 313, 0, 315, 0, 317, 0, 319, 0, 321, 0, 323, 103, 325, 104, 327, 105, 329, 0, 331, 0, 333, 0, 335, 0, 337, 0, 339, 0, 341, 106, 343, 107, 345, 108, 347, 0, 349, 109, 351, 110, 353, 111, 355, 112, 357, 0, 359, 0, 361, 113, 363, 114, 365, 115, 367, 116, 369, 0, 371, 0, 373, 0, 375, 0, 377, 0, 379, 0, 381, 0, 383, 117, 385, 118, 387, 119, 389, 0, 391, 0, 393, 0, 395, 0, 397, 120, 399, 121, 401, 122, 403, 0, 405, 123, 407, 0, 409, 0, 411, 124, 413, 0, 415, 0, 417, 0, 419, 0, 421, 0, 423, 125, 425, 126, 427, 127, 429, 0, 431, 0, 433, 0, 435, 128, 437, 129, 439, 130, 441, 0, 443, 0, 445, 131, 447, 132, 449, 133, 451, 0, 453, 0, 455, 0, 457, 0, 459, 0, 461, 0, 463, 0, 465, 0, 467, 0, 469, 0, 471, 0, 473, 134, 475, 135, 477, 136, 479, 0, 481, 0, 483, 137, 485, 138, 487, 139, 489, 0, 491, 0, 493, 140, 495, 141, 497, 142, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 36, 2, 0, 68, 68, 100, 100, 2, 0, 73, 73, 105, 105, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 67, 67, 99, 99, 2, 0, 84, 84, 116, 116, 2, 0, 82, 82, 114, 114, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 78, 78, 110, 110, 2, 0, 72, 72, 104, 104, 2, 0, 86, 86, 118, 118, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 88, 88, 120, 120, 2, 0, 70, 70, 102, 102, 2, 0, 77, 77, 109, 109, 2, 0, 71, 71, 103, 103, 2, 0, 75, 75, 107, 107, 2, 0, 87, 87, 119, 119, 2, 0, 85, 85, 117, 117, 6, 0, 9, 10, 13, 13, 32, 32, 47, 47, 91, 91, 93, 93, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 8, 0, 34, 34, 78, 78, 82, 82, 84, 84, 92, 92, 110, 110, 114, 114, 116, 116, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 43, 43, 45, 45, 1, 0, 96, 96, 2, 0, 66, 66, 98, 98, 2, 0, 89, 89, 121, 121, 11, 0, 9, 10, 13, 13, 32, 32, 34, 34, 44, 44, 47, 47, 58, 58, 61, 61, 91, 91, 93, 93, 124, 124, 2, 0, 42, 42, 47, 47, 11, 0, 9, 10, 13, 13, 32, 32, 34, 35, 44, 44, 47, 47, 58, 58, 60, 60, 62, 63, 92, 92, 124, 124, 2, 0, 74, 74, 106, 106, 1808, 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, 1, 79, 1, 0, 0, 0, 1, 101, 1, 0, 0, 0, 1, 103, 1, 0, 0, 0, 1, 105, 1, 0, 0, 0, 1, 107, 1, 0, 0, 0, 1, 109, 1, 0, 0, 0, 1, 111, 1, 0, 0, 0, 1, 113, 1, 0, 0, 0, 1, 115, 1, 0, 0, 0, 1, 117, 1, 0, 0, 0, 1, 119, 1, 0, 0, 0, 1, 121, 1, 0, 0, 0, 1, 123, 1, 0, 0, 0, 1, 125, 1, 0, 0, 0, 1, 127, 1, 0, 0, 0, 1, 129, 1, 0, 0, 0, 1, 131, 1, 0, 0, 0, 1, 133, 1, 0, 0, 0, 1, 135, 1, 0, 0, 0, 1, 137, 1, 0, 0, 0, 1, 139, 1, 0, 0, 0, 1, 141, 1, 0, 0, 0, 1, 143, 1, 0, 0, 0, 1, 145, 1, 0, 0, 0, 1, 147, 1, 0, 0, 0, 1, 149, 1, 0, 0, 0, 1, 151, 1, 0, 0, 0, 1, 153, 1, 0, 0, 0, 1, 155, 1, 0, 0, 0, 1, 157, 1, 0, 0, 0, 1, 159, 1, 0, 0, 0, 1, 161, 1, 0, 0, 0, 1, 163, 1, 0, 0, 0, 1, 165, 1, 0, 0, 0, 1, 167, 1, 0, 0, 0, 1, 169, 1, 0, 0, 0, 1, 171, 1, 0, 0, 0, 1, 173, 1, 0, 0, 0, 1, 175, 1, 0, 0, 0, 1, 177, 1, 0, 0, 0, 1, 179, 1, 0, 0, 0, 1, 181, 1, 0, 0, 0, 1, 183, 1, 0, 0, 0, 1, 185, 1, 0, 0, 0, 1, 187, 1, 0, 0, 0, 1, 189, 1, 0, 0, 0, 1, 191, 1, 0, 0, 0, 1, 195, 1, 0, 0, 0, 1, 197, 1, 0, 0, 0, 1, 199, 1, 0, 0, 0, 1, 201, 1, 0, 0, 0, 2, 203, 1, 0, 0, 0, 2, 205, 1, 0, 0, 0, 2, 207, 1, 0, 0, 0, 2, 209, 1, 0, 0, 0, 2, 211, 1, 0, 0, 0, 3, 213, 1, 0, 0, 0, 3, 215, 1, 0, 0, 0, 3, 217, 1, 0, 0, 0, 3, 219, 1, 0, 0, 0, 3, 221, 1, 0, 0, 0, 3, 223, 1, 0, 0, 0, 3, 225, 1, 0, 0, 0, 3, 229, 1, 0, 0, 0, 3, 231, 1, 0, 0, 0, 3, 233, 1, 0, 0, 0, 3, 235, 1, 0, 0, 0, 3, 237, 1, 0, 0, 0, 3, 239, 1, 0, 0, 0, 4, 241, 1, 0, 0, 0, 4, 243, 1, 0, 0, 0, 4, 245, 1, 0, 0, 0, 4, 247, 1, 0, 0, 0, 4, 249, 1, 0, 0, 0, 4, 255, 1, 0, 0, 0, 4, 257, 1, 0, 0, 0, 4, 259, 1, 0, 0, 0, 4, 261, 1, 0, 0, 0, 5, 263, 1, 0, 0, 0, 5, 265, 1, 0, 0, 0, 5, 267, 1, 0, 0, 0, 5, 269, 1, 0, 0, 0, 5, 271, 1, 0, 0, 0, 5, 273, 1, 0, 0, 0, 5, 275, 1, 0, 0, 0, 5, 277, 1, 0, 0, 0, 5, 279, 1, 0, 0, 0, 5, 281, 1, 0, 0, 0, 5, 283, 1, 0, 0, 0, 6, 285, 1, 0, 0, 0, 6, 287, 1, 0, 0, 0, 6, 289, 1, 0, 0, 0, 6, 291, 1, 0, 0, 0, 6, 295, 1, 0, 0, 0, 6, 297, 1, 0, 0, 0, 6, 299, 1, 0, 0, 0, 6, 301, 1, 0, 0, 0, 6, 303, 1, 0, 0, 0, 7, 305, 1, 0, 0, 0, 7, 307, 1, 0, 0, 0, 7, 309, 1, 0, 0, 0, 7, 311, 1, 0, 0, 0, 7, 313, 1, 0, 0, 0, 7, 315, 1, 0, 0, 0, 7, 317, 1, 0, 0, 0, 7, 319, 1, 0, 0, 0, 7, 321, 1, 0, 0, 0, 7, 323, 1, 0, 0, 0, 7, 325, 1, 0, 0, 0, 7, 327, 1, 0, 0, 0, 8, 329, 1, 0, 0, 0, 8, 331, 1, 0, 0, 0, 8, 333, 1, 0, 0, 0, 8, 335, 1, 0, 0, 0, 8, 337, 1, 0, 0, 0, 8, 339, 1, 0, 0, 0, 8, 341, 1, 0, 0, 0, 8, 343, 1, 0, 0, 0, 8, 345, 1, 0, 0, 0, 9, 347, 1, 0, 0, 0, 9, 349, 1, 0, 0, 0, 9, 351, 1, 0, 0, 0, 9, 353, 1, 0, 0, 0, 9, 355, 1, 0, 0, 0, 10, 357, 1, 0, 0, 0, 10, 359, 1, 0, 0, 0, 10, 361, 1, 0, 0, 0, 10, 363, 1, 0, 0, 0, 10, 365, 1, 0, 0, 0, 10, 367, 1, 0, 0, 0, 11, 369, 1, 0, 0, 0, 11, 371, 1, 0, 0, 0, 11, 373, 1, 0, 0, 0, 11, 375, 1, 0, 0, 0, 11, 377, 1, 0, 0, 0, 11, 379, 1, 0, 0, 0, 11, 381, 1, 0, 0, 0, 11, 383, 1, 0, 0, 0, 11, 385, 1, 0, 0, 0, 11, 387, 1, 0, 0, 0, 12, 389, 1, 0, 0, 0, 12, 391, 1, 0, 0, 0, 12, 393, 1, 0, 0, 0, 12, 395, 1, 0, 0, 0, 12, 397, 1, 0, 0, 0, 12, 399, 1, 0, 0, 0, 12, 401, 1, 0, 0, 0, 13, 403, 1, 0, 0, 0, 13, 405, 1, 0, 0, 0, 13, 407, 1, 0, 0, 0, 13, 409, 1, 0, 0, 0, 13, 411, 1, 0, 0, 0, 13, 413, 1, 0, 0, 0, 13, 415, 1, 0, 0, 0, 13, 417, 1, 0, 0, 0, 13, 419, 1, 0, 0, 0, 13, 421, 1, 0, 0, 0, 13, 423, 1, 0, 0, 0, 13, 425, 1, 0, 0, 0, 13, 427, 1, 0, 0, 0, 14, 429, 1, 0, 0, 0, 14, 431, 1, 0, 0, 0, 14, 433, 1, 0, 0, 0, 14, 435, 1, 0, 0, 0, 14, 437, 1, 0, 0, 0, 14, 439, 1, 0, 0, 0, 15, 441, 1, 0, 0, 0, 15, 443, 1, 0, 0, 0, 15, 445, 1, 0, 0, 0, 15, 447, 1, 0, 0, 0, 15, 449, 1, 0, 0, 0, 15, 451, 1, 0, 0, 0, 15, 453, 1, 0, 0, 0, 15, 455, 1, 0, 0, 0, 15, 457, 1, 0, 0, 0, 16, 459, 1, 0, 0, 0, 16, 461, 1, 0, 0, 0, 16, 463, 1, 0, 0, 0, 16, 465, 1, 0, 0, 0, 16, 467, 1, 0, 0, 0, 16, 469, 1, 0, 0, 0, 16, 471, 1, 0, 0, 0, 16, 473, 1, 0, 0, 0, 16, 475, 1, 0, 0, 0, 16, 477, 1, 0, 0, 0, 17, 479, 1, 0, 0, 0, 17, 481, 1, 0, 0, 0, 17, 483, 1, 0, 0, 0, 17, 485, 1, 0, 0, 0, 17, 487, 1, 0, 0, 0, 18, 489, 1, 0, 0, 0, 18, 491, 1, 0, 0, 0, 18, 493, 1, 0, 0, 0, 18, 495, 1, 0, 0, 0, 18, 497, 1, 0, 0, 0, 19, 499, 1, 0, 0, 0, 21, 509, 1, 0, 0, 0, 23, 516, 1, 0, 0, 0, 25, 525, 1, 0, 0, 0, 27, 532, 1, 0, 0, 0, 29, 542, 1, 0, 0, 0, 31, 549, 1, 0, 0, 0, 33, 556, 1, 0, 0, 0, 35, 563, 1, 0, 0, 0, 37, 571, 1, 0, 0, 0, 39, 583, 1, 0, 0, 0, 41, 592, 1, 0, 0, 0, 43, 598, 1, 0, 0, 0, 45, 605, 1, 0, 0, 0, 47, 612, 1, 0, 0, 0, 49, 620, 1, 0, 0, 0, 51, 628, 1, 0, 0, 0, 53, 637, 1, 0, 0, 0, 55, 653, 1, 0, 0, 0, 57, 668, 1, 0, 0, 0, 59, 680, 1, 0, 0, 0, 61, 692, 1, 0, 0, 0, 63, 703, 1, 0, 0, 0, 65, 711, 1, 0, 0, 0, 67, 719, 1, 0, 0, 0, 69, 728, 1, 0, 0, 0, 71, 737, 1, 0, 0, 0, 73, 743, 1, 0, 0, 0, 75, 760, 1, 0, 0, 0, 77, 776, 1, 0, 0, 0, 79, 782, 1, 0, 0, 0, 81, 786, 1, 0, 0, 0, 83, 788, 1, 0, 0, 0, 85, 790, 1, 0, 0, 0, 87, 793, 1, 0, 0, 0, 89, 795, 1, 0, 0, 0, 91, 804, 1, 0, 0, 0, 93, 806, 1, 0, 0, 0, 95, 811, 1, 0, 0, 0, 97, 813, 1, 0, 0, 0, 99, 818, 1, 0, 0, 0, 101, 849, 1, 0, 0, 0, 103, 852, 1, 0, 0, 0, 105, 898, 1, 0, 0, 0, 107, 900, 1, 0, 0, 0, 109, 903, 1, 0, 0, 0, 111, 907, 1, 0, 0, 0, 113, 911, 1, 0, 0, 0, 115, 913, 1, 0, 0, 0, 117, 916, 1, 0, 0, 0, 119, 918, 1, 0, 0, 0, 121, 920, 1, 0, 0, 0, 123, 925, 1, 0, 0, 0, 125, 927, 1, 0, 0, 0, 127, 933, 1, 0, 0, 0, 129, 939, 1, 0, 0, 0, 131, 942, 1, 0, 0, 0, 133, 945, 1, 0, 0, 0, 135, 950, 1, 0, 0, 0, 137, 955, 1, 0, 0, 0, 139, 959, 1, 0, 0, 0, 141, 964, 1, 0, 0, 0, 143, 970, 1, 0, 0, 0, 145, 973, 1, 0, 0, 0, 147, 975, 1, 0, 0, 0, 149, 981, 1, 0, 0, 0, 151, 986, 1, 0, 0, 0, 153, 989, 1, 0, 0, 0, 155, 992, 1, 0, 0, 0, 157, 995, 1, 0, 0, 0, 159, 997, 1, 0, 0, 0, 161, 1000, 1, 0, 0, 0, 163, 1002, 1, 0, 0, 0, 165, 1005, 1, 0, 0, 0, 167, 1007, 1, 0, 0, 0, 169, 1009, 1, 0, 0, 0, 171, 1011, 1, 0, 0, 0, 173, 1013, 1, 0, 0, 0, 175, 1015, 1, 0, 0, 0, 177, 1017, 1, 0, 0, 0, 179, 1019, 1, 0, 0, 0, 181, 1040, 1, 0, 0, 0, 183, 1042, 1, 0, 0, 0, 185, 1047, 1, 0, 0, 0, 187, 1052, 1, 0, 0, 0, 189, 1057, 1, 0, 0, 0, 191, 1078, 1, 0, 0, 0, 193, 1080, 1, 0, 0, 0, 195, 1088, 1, 0, 0, 0, 197, 1090, 1, 0, 0, 0, 199, 1094, 1, 0, 0, 0, 201, 1098, 1, 0, 0, 0, 203, 1102, 1, 0, 0, 0, 205, 1107, 1, 0, 0, 0, 207, 1112, 1, 0, 0, 0, 209, 1116, 1, 0, 0, 0, 211, 1120, 1, 0, 0, 0, 213, 1124, 1, 0, 0, 0, 215, 1129, 1, 0, 0, 0, 217, 1133, 1, 0, 0, 0, 219, 1137, 1, 0, 0, 0, 221, 1141, 1, 0, 0, 0, 223, 1145, 1, 0, 0, 0, 225, 1149, 1, 0, 0, 0, 227, 1161, 1, 0, 0, 0, 229, 1164, 1, 0, 0, 0, 231, 1168, 1, 0, 0, 0, 233, 1172, 1, 0, 0, 0, 235, 1176, 1, 0, 0, 0, 237, 1180, 1, 0, 0, 0, 239, 1184, 1, 0, 0, 0, 241, 1188, 1, 0, 0, 0, 243, 1193, 1, 0, 0, 0, 245, 1197, 1, 0, 0, 0, 247, 1201, 1, 0, 0, 0, 249, 1205, 1, 0, 0, 0, 251, 1213, 1, 0, 0, 0, 253, 1234, 1, 0, 0, 0, 255, 1238, 1, 0, 0, 0, 257, 1242, 1, 0, 0, 0, 259, 1246, 1, 0, 0, 0, 261, 1250, 1, 0, 0, 0, 263, 1254, 1, 0, 0, 0, 265, 1259, 1, 0, 0, 0, 267, 1263, 1, 0, 0, 0, 269, 1267, 1, 0, 0, 0, 271, 1271, 1, 0, 0, 0, 273, 1275, 1, 0, 0, 0, 275, 1279, 1, 0, 0, 0, 277, 1282, 1, 0, 0, 0, 279, 1286, 1, 0, 0, 0, 281, 1290, 1, 0, 0, 0, 283, 1294, 1, 0, 0, 0, 285, 1298, 1, 0, 0, 0, 287, 1303, 1, 0, 0, 0, 289, 1308, 1, 0, 0, 0, 291, 1313, 1, 0, 0, 0, 293, 1320, 1, 0, 0, 0, 295, 1329, 1, 0, 0, 0, 297, 1336, 1, 0, 0, 0, 299, 1340, 1, 0, 0, 0, 301, 1344, 1, 0, 0, 0, 303, 1348, 1, 0, 0, 0, 305, 1352, 1, 0, 0, 0, 307, 1358, 1, 0, 0, 0, 309, 1362, 1, 0, 0, 0, 311, 1366, 1, 0, 0, 0, 313, 1370, 1, 0, 0, 0, 315, 1374, 1, 0, 0, 0, 317, 1378, 1, 0, 0, 0, 319, 1382, 1, 0, 0, 0, 321, 1386, 1, 0, 0, 0, 323, 1390, 1, 0, 0, 0, 325, 1394, 1, 0, 0, 0, 327, 1398, 1, 0, 0, 0, 329, 1402, 1, 0, 0, 0, 331, 1407, 1, 0, 0, 0, 333, 1411, 1, 0, 0, 0, 335, 1415, 1, 0, 0, 0, 337, 1419, 1, 0, 0, 0, 339, 1423, 1, 0, 0, 0, 341, 1427, 1, 0, 0, 0, 343, 1431, 1, 0, 0, 0, 345, 1435, 1, 0, 0, 0, 347, 1439, 1, 0, 0, 0, 349, 1444, 1, 0, 0, 0, 351, 1449, 1, 0, 0, 0, 353, 1453, 1, 0, 0, 0, 355, 1457, 1, 0, 0, 0, 357, 1461, 1, 0, 0, 0, 359, 1466, 1, 0, 0, 0, 361, 1475, 1, 0, 0, 0, 363, 1479, 1, 0, 0, 0, 365, 1483, 1, 0, 0, 0, 367, 1487, 1, 0, 0, 0, 369, 1491, 1, 0, 0, 0, 371, 1496, 1, 0, 0, 0, 373, 1500, 1, 0, 0, 0, 375, 1504, 1, 0, 0, 0, 377, 1508, 1, 0, 0, 0, 379, 1513, 1, 0, 0, 0, 381, 1517, 1, 0, 0, 0, 383, 1521, 1, 0, 0, 0, 385, 1525, 1, 0, 0, 0, 387, 1529, 1, 0, 0, 0, 389, 1533, 1, 0, 0, 0, 391, 1539, 1, 0, 0, 0, 393, 1543, 1, 0, 0, 0, 395, 1547, 1, 0, 0, 0, 397, 1551, 1, 0, 0, 0, 399, 1555, 1, 0, 0, 0, 401, 1559, 1, 0, 0, 0, 403, 1563, 1, 0, 0, 0, 405, 1568, 1, 0, 0, 0, 407, 1573, 1, 0, 0, 0, 409, 1577, 1, 0, 0, 0, 411, 1583, 1, 0, 0, 0, 413, 1592, 1, 0, 0, 0, 415, 1596, 1, 0, 0, 0, 417, 1600, 1, 0, 0, 0, 419, 1604, 1, 0, 0, 0, 421, 1608, 1, 0, 0, 0, 423, 1612, 1, 0, 0, 0, 425, 1616, 1, 0, 0, 0, 427, 1620, 1, 0, 0, 0, 429, 1624, 1, 0, 0, 0, 431, 1629, 1, 0, 0, 0, 433, 1635, 1, 0, 0, 0, 435, 1641, 1, 0, 0, 0, 437, 1645, 1, 0, 0, 0, 439, 1649, 1, 0, 0, 0, 441, 1653, 1, 0, 0, 0, 443, 1659, 1, 0, 0, 0, 445, 1665, 1, 0, 0, 0, 447, 1669, 1, 0, 0, 0, 449, 1673, 1, 0, 0, 0, 451, 1677, 1, 0, 0, 0, 453, 1683, 1, 0, 0, 0, 455, 1689, 1, 0, 0, 0, 457, 1695, 1, 0, 0, 0, 459, 1700, 1, 0, 0, 0, 461, 1705, 1, 0, 0, 0, 463, 1709, 1, 0, 0, 0, 465, 1713, 1, 0, 0, 0, 467, 1717, 1, 0, 0, 0, 469, 1721, 1, 0, 0, 0, 471, 1725, 1, 0, 0, 0, 473, 1729, 1, 0, 0, 0, 475, 1733, 1, 0, 0, 0, 477, 1737, 1, 0, 0, 0, 479, 1741, 1, 0, 0, 0, 481, 1746, 1, 0, 0, 0, 483, 1750, 1, 0, 0, 0, 485, 1754, 1, 0, 0, 0, 487, 1758, 1, 0, 0, 0, 489, 1762, 1, 0, 0, 0, 491, 1767, 1, 0, 0, 0, 493, 1772, 1, 0, 0, 0, 495, 1776, 1, 0, 0, 0, 497, 1780, 1, 0, 0, 0, 499, 500, 7, 0, 0, 0, 500, 501, 7, 1, 0, 0, 501, 502, 7, 2, 0, 0, 502, 503, 7, 2, 0, 0, 503, 504, 7, 3, 0, 0, 504, 505, 7, 4, 0, 0, 505, 506, 7, 5, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 6, 0, 0, 0, 508, 20, 1, 0, 0, 0, 509, 510, 7, 0, 0, 0, 510, 511, 7, 6, 0, 0, 511, 512, 7, 7, 0, 0, 512, 513, 7, 8, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, 6, 1, 1, 0, 515, 22, 1, 0, 0, 0, 516, 517, 7, 3, 0, 0, 517, 518, 7, 9, 0, 0, 518, 519, 7, 6, 0, 0, 519, 520, 7, 1, 0, 0, 520, 521, 7, 4, 0, 0, 521, 522, 7, 10, 0, 0, 522, 523, 1, 0, 0, 0, 523, 524, 6, 2, 2, 0, 524, 24, 1, 0, 0, 0, 525, 526, 7, 3, 0, 0, 526, 527, 7, 11, 0, 0, 527, 528, 7, 12, 0, 0, 528, 529, 7, 13, 0, 0, 529, 530, 1, 0, 0, 0, 530, 531, 6, 3, 0, 0, 531, 26, 1, 0, 0, 0, 532, 533, 7, 3, 0, 0, 533, 534, 7, 14, 0, 0, 534, 535, 7, 8, 0, 0, 535, 536, 7, 13, 0, 0, 536, 537, 7, 12, 0, 0, 537, 538, 7, 1, 0, 0, 538, 539, 7, 9, 0, 0, 539, 540, 1, 0, 0, 0, 540, 541, 6, 4, 3, 0, 541, 28, 1, 0, 0, 0, 542, 543, 7, 15, 0, 0, 543, 544, 7, 6, 0, 0, 544, 545, 7, 7, 0, 0, 545, 546, 7, 16, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 6, 5, 4, 0, 548, 30, 1, 0, 0, 0, 549, 550, 7, 17, 0, 0, 550, 551, 7, 6, 0, 0, 551, 552, 7, 7, 0, 0, 552, 553, 7, 18, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 6, 6, 0, 0, 555, 32, 1, 0, 0, 0, 556, 557, 7, 18, 0, 0, 557, 558, 7, 3, 0, 0, 558, 559, 7, 3, 0, 0, 559, 560, 7, 8, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 6, 7, 1, 0, 562, 34, 1, 0, 0, 0, 563, 564, 7, 13, 0, 0, 564, 565, 7, 1, 0, 0, 565, 566, 7, 16, 0, 0, 566, 567, 7, 1, 0, 0, 567, 568, 7, 5, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 6, 8, 0, 0, 570, 36, 1, 0, 0, 0, 571, 572, 7, 16, 0, 0, 572, 573, 7, 11, 0, 0, 573, 574, 5, 95, 0, 0, 574, 575, 7, 3, 0, 0, 575, 576, 7, 14, 0, 0, 576, 577, 7, 8, 0, 0, 577, 578, 7, 12, 0, 0, 578, 579, 7, 9, 0, 0, 579, 580, 7, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 6, 9, 5, 0, 582, 38, 1, 0, 0, 0, 583, 584, 7, 6, 0, 0, 584, 585, 7, 3, 0, 0, 585, 586, 7, 9, 0, 0, 586, 587, 7, 12, 0, 0, 587, 588, 7, 16, 0, 0, 588, 589, 7, 3, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 6, 10, 6, 0, 591, 40, 1, 0, 0, 0, 592, 593, 7, 6, 0, 0, 593, 594, 7, 7, 0, 0, 594, 595, 7, 19, 0, 0, 595, 596, 1, 0, 0, 0, 596, 597, 6, 11, 0, 0, 597, 42, 1, 0, 0, 0, 598, 599, 7, 2, 0, 0, 599, 600, 7, 10, 0, 0, 600, 601, 7, 7, 0, 0, 601, 602, 7, 19, 0, 0, 602, 603, 1, 0, 0, 0, 603, 604, 6, 12, 7, 0, 604, 44, 1, 0, 0, 0, 605, 606, 7, 2, 0, 0, 606, 607, 7, 7, 0, 0, 607, 608, 7, 6, 0, 0, 608, 609, 7, 5, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 6, 13, 0, 0, 611, 46, 1, 0, 0, 0, 612, 613, 7, 2, 0, 0, 613, 614, 7, 5, 0, 0, 614, 615, 7, 12, 0, 0, 615, 616, 7, 5, 0, 0, 616, 617, 7, 2, 0, 0, 617, 618, 1, 0, 0, 0, 618, 619, 6, 14, 0, 0, 619, 48, 1, 0, 0, 0, 620, 621, 7, 19, 0, 0, 621, 622, 7, 10, 0, 0, 622, 623, 7, 3, 0, 0, 623, 624, 7, 6, 0, 0, 624, 625, 7, 3, 0, 0, 625, 626, 1, 0, 0, 0, 626, 627, 6, 15, 0, 0, 627, 50, 1, 0, 0, 0, 628, 629, 7, 13, 0, 0, 629, 630, 7, 7, 0, 0, 630, 631, 7, 7, 0, 0, 631, 632, 7, 18, 0, 0, 632, 633, 7, 20, 0, 0, 633, 634, 7, 8, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 6, 16, 8, 0, 636, 52, 1, 0, 0, 0, 637, 638, 4, 17, 0, 0, 638, 639, 7, 4, 0, 0, 639, 640, 7, 10, 0, 0, 640, 641, 7, 12, 0, 0, 641, 642, 7, 9, 0, 0, 642, 643, 7, 17, 0, 0, 643, 644, 7, 3, 0, 0, 644, 645, 5, 95, 0, 0, 645, 646, 7, 8, 0, 0, 646, 647, 7, 7, 0, 0, 647, 648, 7, 1, 0, 0, 648, 649, 7, 9, 0, 0, 649, 650, 7, 5, 0, 0, 650, 651, 1, 0, 0, 0, 651, 652, 6, 17, 9, 0, 652, 54, 1, 0, 0, 0, 653, 654, 4, 18, 1, 0, 654, 655, 7, 1, 0, 0, 655, 656, 7, 9, 0, 0, 656, 657, 7, 13, 0, 0, 657, 658, 7, 1, 0, 0, 658, 659, 7, 9, 0, 0, 659, 660, 7, 3, 0, 0, 660, 661, 7, 2, 0, 0, 661, 662, 7, 5, 0, 0, 662, 663, 7, 12, 0, 0, 663, 664, 7, 5, 0, 0, 664, 665, 7, 2, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667, 6, 18, 0, 0, 667, 56, 1, 0, 0, 0, 668, 669, 4, 19, 2, 0, 669, 670, 7, 1, 0, 0, 670, 671, 7, 9, 0, 0, 671, 672, 7, 2, 0, 0, 672, 673, 7, 1, 0, 0, 673, 674, 7, 2, 0, 0, 674, 675, 7, 5, 0, 0, 675, 676, 5, 95, 0, 0, 676, 677, 5, 128020, 0, 0, 677, 678, 1, 0, 0, 0, 678, 679, 6, 19, 1, 0, 679, 58, 1, 0, 0, 0, 680, 681, 4, 20, 3, 0, 681, 682, 7, 13, 0, 0, 682, 683, 7, 7, 0, 0, 683, 684, 7, 7, 0, 0, 684, 685, 7, 18, 0, 0, 685, 686, 7, 20, 0, 0, 686, 687, 7, 8, 0, 0, 687, 688, 5, 95, 0, 0, 688, 689, 5, 128020, 0, 0, 689, 690, 1, 0, 0, 0, 690, 691, 6, 20, 10, 0, 691, 60, 1, 0, 0, 0, 692, 693, 4, 21, 4, 0, 693, 694, 7, 16, 0, 0, 694, 695, 7, 3, 0, 0, 695, 696, 7, 5, 0, 0, 696, 697, 7, 6, 0, 0, 697, 698, 7, 1, 0, 0, 698, 699, 7, 4, 0, 0, 699, 700, 7, 2, 0, 0, 700, 701, 1, 0, 0, 0, 701, 702, 6, 21, 11, 0, 702, 62, 1, 0, 0, 0, 703, 704, 4, 22, 5, 0, 704, 705, 7, 15, 0, 0, 705, 706, 7, 20, 0, 0, 706, 707, 7, 13, 0, 0, 707, 708, 7, 13, 0, 0, 708, 709, 1, 0, 0, 0, 709, 710, 6, 22, 8, 0, 710, 64, 1, 0, 0, 0, 711, 712, 4, 23, 6, 0, 712, 713, 7, 13, 0, 0, 713, 714, 7, 3, 0, 0, 714, 715, 7, 15, 0, 0, 715, 716, 7, 5, 0, 0, 716, 717, 1, 0, 0, 0, 717, 718, 6, 23, 8, 0, 718, 66, 1, 0, 0, 0, 719, 720, 4, 24, 7, 0, 720, 721, 7, 6, 0, 0, 721, 722, 7, 1, 0, 0, 722, 723, 7, 17, 0, 0, 723, 724, 7, 10, 0, 0, 724, 725, 7, 5, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 6, 24, 8, 0, 727, 68, 1, 0, 0, 0, 728, 729, 4, 25, 8, 0, 729, 730, 7, 15, 0, 0, 730, 731, 7, 7, 0, 0, 731, 732, 7, 6, 0, 0, 732, 733, 7, 18, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 6, 25, 12, 0, 735, 70, 1, 0, 0, 0, 736, 738, 8, 21, 0, 0, 737, 736, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 6, 26, 0, 0, 742, 72, 1, 0, 0, 0, 743, 744, 5, 47, 0, 0, 744, 745, 5, 47, 0, 0, 745, 749, 1, 0, 0, 0, 746, 748, 8, 22, 0, 0, 747, 746, 1, 0, 0, 0, 748, 751, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 753, 1, 0, 0, 0, 751, 749, 1, 0, 0, 0, 752, 754, 5, 13, 0, 0, 753, 752, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 756, 1, 0, 0, 0, 755, 757, 5, 10, 0, 0, 756, 755, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 759, 6, 27, 13, 0, 759, 74, 1, 0, 0, 0, 760, 761, 5, 47, 0, 0, 761, 762, 5, 42, 0, 0, 762, 767, 1, 0, 0, 0, 763, 766, 3, 75, 28, 0, 764, 766, 9, 0, 0, 0, 765, 763, 1, 0, 0, 0, 765, 764, 1, 0, 0, 0, 766, 769, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 767, 765, 1, 0, 0, 0, 768, 770, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 770, 771, 5, 42, 0, 0, 771, 772, 5, 47, 0, 0, 772, 773, 1, 0, 0, 0, 773, 774, 6, 28, 13, 0, 774, 76, 1, 0, 0, 0, 775, 777, 7, 23, 0, 0, 776, 775, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 6, 29, 13, 0, 781, 78, 1, 0, 0, 0, 782, 783, 5, 124, 0, 0, 783, 784, 1, 0, 0, 0, 784, 785, 6, 30, 14, 0, 785, 80, 1, 0, 0, 0, 786, 787, 7, 24, 0, 0, 787, 82, 1, 0, 0, 0, 788, 789, 7, 25, 0, 0, 789, 84, 1, 0, 0, 0, 790, 791, 5, 92, 0, 0, 791, 792, 7, 26, 0, 0, 792, 86, 1, 0, 0, 0, 793, 794, 8, 27, 0, 0, 794, 88, 1, 0, 0, 0, 795, 797, 7, 3, 0, 0, 796, 798, 7, 28, 0, 0, 797, 796, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 800, 1, 0, 0, 0, 799, 801, 3, 81, 31, 0, 800, 799, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 800, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 90, 1, 0, 0, 0, 804, 805, 5, 64, 0, 0, 805, 92, 1, 0, 0, 0, 806, 807, 5, 96, 0, 0, 807, 94, 1, 0, 0, 0, 808, 812, 8, 29, 0, 0, 809, 810, 5, 96, 0, 0, 810, 812, 5, 96, 0, 0, 811, 808, 1, 0, 0, 0, 811, 809, 1, 0, 0, 0, 812, 96, 1, 0, 0, 0, 813, 814, 5, 95, 0, 0, 814, 98, 1, 0, 0, 0, 815, 819, 3, 83, 32, 0, 816, 819, 3, 81, 31, 0, 817, 819, 3, 97, 39, 0, 818, 815, 1, 0, 0, 0, 818, 816, 1, 0, 0, 0, 818, 817, 1, 0, 0, 0, 819, 100, 1, 0, 0, 0, 820, 825, 5, 34, 0, 0, 821, 824, 3, 85, 33, 0, 822, 824, 3, 87, 34, 0, 823, 821, 1, 0, 0, 0, 823, 822, 1, 0, 0, 0, 824, 827, 1, 0, 0, 0, 825, 823, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 828, 1, 0, 0, 0, 827, 825, 1, 0, 0, 0, 828, 850, 5, 34, 0, 0, 829, 830, 5, 34, 0, 0, 830, 831, 5, 34, 0, 0, 831, 832, 5, 34, 0, 0, 832, 836, 1, 0, 0, 0, 833, 835, 8, 22, 0, 0, 834, 833, 1, 0, 0, 0, 835, 838, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 836, 834, 1, 0, 0, 0, 837, 839, 1, 0, 0, 0, 838, 836, 1, 0, 0, 0, 839, 840, 5, 34, 0, 0, 840, 841, 5, 34, 0, 0, 841, 842, 5, 34, 0, 0, 842, 844, 1, 0, 0, 0, 843, 845, 5, 34, 0, 0, 844, 843, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 847, 1, 0, 0, 0, 846, 848, 5, 34, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 850, 1, 0, 0, 0, 849, 820, 1, 0, 0, 0, 849, 829, 1, 0, 0, 0, 850, 102, 1, 0, 0, 0, 851, 853, 3, 81, 31, 0, 852, 851, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 104, 1, 0, 0, 0, 856, 858, 3, 81, 31, 0, 857, 856, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 857, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 865, 3, 123, 52, 0, 862, 864, 3, 81, 31, 0, 863, 862, 1, 0, 0, 0, 864, 867, 1, 0, 0, 0, 865, 863, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 899, 1, 0, 0, 0, 867, 865, 1, 0, 0, 0, 868, 870, 3, 123, 52, 0, 869, 871, 3, 81, 31, 0, 870, 869, 1, 0, 0, 0, 871, 872, 1, 0, 0, 0, 872, 870, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 899, 1, 0, 0, 0, 874, 876, 3, 81, 31, 0, 875, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 875, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 886, 1, 0, 0, 0, 879, 883, 3, 123, 52, 0, 880, 882, 3, 81, 31, 0, 881, 880, 1, 0, 0, 0, 882, 885, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 887, 1, 0, 0, 0, 885, 883, 1, 0, 0, 0, 886, 879, 1, 0, 0, 0, 886, 887, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 3, 89, 35, 0, 889, 899, 1, 0, 0, 0, 890, 892, 3, 123, 52, 0, 891, 893, 3, 81, 31, 0, 892, 891, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 892, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 896, 1, 0, 0, 0, 896, 897, 3, 89, 35, 0, 897, 899, 1, 0, 0, 0, 898, 857, 1, 0, 0, 0, 898, 868, 1, 0, 0, 0, 898, 875, 1, 0, 0, 0, 898, 890, 1, 0, 0, 0, 899, 106, 1, 0, 0, 0, 900, 901, 7, 30, 0, 0, 901, 902, 7, 31, 0, 0, 902, 108, 1, 0, 0, 0, 903, 904, 7, 12, 0, 0, 904, 905, 7, 9, 0, 0, 905, 906, 7, 0, 0, 0, 906, 110, 1, 0, 0, 0, 907, 908, 7, 12, 0, 0, 908, 909, 7, 2, 0, 0, 909, 910, 7, 4, 0, 0, 910, 112, 1, 0, 0, 0, 911, 912, 5, 61, 0, 0, 912, 114, 1, 0, 0, 0, 913, 914, 5, 58, 0, 0, 914, 915, 5, 58, 0, 0, 915, 116, 1, 0, 0, 0, 916, 917, 5, 58, 0, 0, 917, 118, 1, 0, 0, 0, 918, 919, 5, 44, 0, 0, 919, 120, 1, 0, 0, 0, 920, 921, 7, 0, 0, 0, 921, 922, 7, 3, 0, 0, 922, 923, 7, 2, 0, 0, 923, 924, 7, 4, 0, 0, 924, 122, 1, 0, 0, 0, 925, 926, 5, 46, 0, 0, 926, 124, 1, 0, 0, 0, 927, 928, 7, 15, 0, 0, 928, 929, 7, 12, 0, 0, 929, 930, 7, 13, 0, 0, 930, 931, 7, 2, 0, 0, 931, 932, 7, 3, 0, 0, 932, 126, 1, 0, 0, 0, 933, 934, 7, 15, 0, 0, 934, 935, 7, 1, 0, 0, 935, 936, 7, 6, 0, 0, 936, 937, 7, 2, 0, 0, 937, 938, 7, 5, 0, 0, 938, 128, 1, 0, 0, 0, 939, 940, 7, 1, 0, 0, 940, 941, 7, 9, 0, 0, 941, 130, 1, 0, 0, 0, 942, 943, 7, 1, 0, 0, 943, 944, 7, 2, 0, 0, 944, 132, 1, 0, 0, 0, 945, 946, 7, 13, 0, 0, 946, 947, 7, 12, 0, 0, 947, 948, 7, 2, 0, 0, 948, 949, 7, 5, 0, 0, 949, 134, 1, 0, 0, 0, 950, 951, 7, 13, 0, 0, 951, 952, 7, 1, 0, 0, 952, 953, 7, 18, 0, 0, 953, 954, 7, 3, 0, 0, 954, 136, 1, 0, 0, 0, 955, 956, 7, 9, 0, 0, 956, 957, 7, 7, 0, 0, 957, 958, 7, 5, 0, 0, 958, 138, 1, 0, 0, 0, 959, 960, 7, 9, 0, 0, 960, 961, 7, 20, 0, 0, 961, 962, 7, 13, 0, 0, 962, 963, 7, 13, 0, 0, 963, 140, 1, 0, 0, 0, 964, 965, 7, 9, 0, 0, 965, 966, 7, 20, 0, 0, 966, 967, 7, 13, 0, 0, 967, 968, 7, 13, 0, 0, 968, 969, 7, 2, 0, 0, 969, 142, 1, 0, 0, 0, 970, 971, 7, 7, 0, 0, 971, 972, 7, 6, 0, 0, 972, 144, 1, 0, 0, 0, 973, 974, 5, 63, 0, 0, 974, 146, 1, 0, 0, 0, 975, 976, 7, 6, 0, 0, 976, 977, 7, 13, 0, 0, 977, 978, 7, 1, 0, 0, 978, 979, 7, 18, 0, 0, 979, 980, 7, 3, 0, 0, 980, 148, 1, 0, 0, 0, 981, 982, 7, 5, 0, 0, 982, 983, 7, 6, 0, 0, 983, 984, 7, 20, 0, 0, 984, 985, 7, 3, 0, 0, 985, 150, 1, 0, 0, 0, 986, 987, 5, 61, 0, 0, 987, 988, 5, 61, 0, 0, 988, 152, 1, 0, 0, 0, 989, 990, 5, 61, 0, 0, 990, 991, 5, 126, 0, 0, 991, 154, 1, 0, 0, 0, 992, 993, 5, 33, 0, 0, 993, 994, 5, 61, 0, 0, 994, 156, 1, 0, 0, 0, 995, 996, 5, 60, 0, 0, 996, 158, 1, 0, 0, 0, 997, 998, 5, 60, 0, 0, 998, 999, 5, 61, 0, 0, 999, 160, 1, 0, 0, 0, 1000, 1001, 5, 62, 0, 0, 1001, 162, 1, 0, 0, 0, 1002, 1003, 5, 62, 0, 0, 1003, 1004, 5, 61, 0, 0, 1004, 164, 1, 0, 0, 0, 1005, 1006, 5, 43, 0, 0, 1006, 166, 1, 0, 0, 0, 1007, 1008, 5, 45, 0, 0, 1008, 168, 1, 0, 0, 0, 1009, 1010, 5, 42, 0, 0, 1010, 170, 1, 0, 0, 0, 1011, 1012, 5, 47, 0, 0, 1012, 172, 1, 0, 0, 0, 1013, 1014, 5, 37, 0, 0, 1014, 174, 1, 0, 0, 0, 1015, 1016, 5, 123, 0, 0, 1016, 176, 1, 0, 0, 0, 1017, 1018, 5, 125, 0, 0, 1018, 178, 1, 0, 0, 0, 1019, 1020, 3, 49, 15, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1022, 6, 80, 15, 0, 1022, 180, 1, 0, 0, 0, 1023, 1026, 3, 145, 63, 0, 1024, 1027, 3, 83, 32, 0, 1025, 1027, 3, 97, 39, 0, 1026, 1024, 1, 0, 0, 0, 1026, 1025, 1, 0, 0, 0, 1027, 1031, 1, 0, 0, 0, 1028, 1030, 3, 99, 40, 0, 1029, 1028, 1, 0, 0, 0, 1030, 1033, 1, 0, 0, 0, 1031, 1029, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1041, 1, 0, 0, 0, 1033, 1031, 1, 0, 0, 0, 1034, 1036, 3, 145, 63, 0, 1035, 1037, 3, 81, 31, 0, 1036, 1035, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1036, 1, 0, 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1041, 1, 0, 0, 0, 1040, 1023, 1, 0, 0, 0, 1040, 1034, 1, 0, 0, 0, 1041, 182, 1, 0, 0, 0, 1042, 1043, 5, 91, 0, 0, 1043, 1044, 1, 0, 0, 0, 1044, 1045, 6, 82, 0, 0, 1045, 1046, 6, 82, 0, 0, 1046, 184, 1, 0, 0, 0, 1047, 1048, 5, 93, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 6, 83, 14, 0, 1050, 1051, 6, 83, 14, 0, 1051, 186, 1, 0, 0, 0, 1052, 1053, 5, 40, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1055, 6, 84, 0, 0, 1055, 1056, 6, 84, 0, 0, 1056, 188, 1, 0, 0, 0, 1057, 1058, 5, 41, 0, 0, 1058, 1059, 1, 0, 0, 0, 1059, 1060, 6, 85, 14, 0, 1060, 1061, 6, 85, 14, 0, 1061, 190, 1, 0, 0, 0, 1062, 1066, 3, 83, 32, 0, 1063, 1065, 3, 99, 40, 0, 1064, 1063, 1, 0, 0, 0, 1065, 1068, 1, 0, 0, 0, 1066, 1064, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1079, 1, 0, 0, 0, 1068, 1066, 1, 0, 0, 0, 1069, 1072, 3, 97, 39, 0, 1070, 1072, 3, 91, 36, 0, 1071, 1069, 1, 0, 0, 0, 1071, 1070, 1, 0, 0, 0, 1072, 1074, 1, 0, 0, 0, 1073, 1075, 3, 99, 40, 0, 1074, 1073, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1079, 1, 0, 0, 0, 1078, 1062, 1, 0, 0, 0, 1078, 1071, 1, 0, 0, 0, 1079, 192, 1, 0, 0, 0, 1080, 1082, 3, 93, 37, 0, 1081, 1083, 3, 95, 38, 0, 1082, 1081, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1087, 3, 93, 37, 0, 1087, 194, 1, 0, 0, 0, 1088, 1089, 3, 193, 87, 0, 1089, 196, 1, 0, 0, 0, 1090, 1091, 3, 73, 27, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1093, 6, 89, 13, 0, 1093, 198, 1, 0, 0, 0, 1094, 1095, 3, 75, 28, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1097, 6, 90, 13, 0, 1097, 200, 1, 0, 0, 0, 1098, 1099, 3, 77, 29, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1101, 6, 91, 13, 0, 1101, 202, 1, 0, 0, 0, 1102, 1103, 3, 183, 82, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 6, 92, 16, 0, 1105, 1106, 6, 92, 17, 0, 1106, 204, 1, 0, 0, 0, 1107, 1108, 3, 79, 30, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1110, 6, 93, 18, 0, 1110, 1111, 6, 93, 14, 0, 1111, 206, 1, 0, 0, 0, 1112, 1113, 3, 77, 29, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1115, 6, 94, 13, 0, 1115, 208, 1, 0, 0, 0, 1116, 1117, 3, 73, 27, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1119, 6, 95, 13, 0, 1119, 210, 1, 0, 0, 0, 1120, 1121, 3, 75, 28, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1123, 6, 96, 13, 0, 1123, 212, 1, 0, 0, 0, 1124, 1125, 3, 79, 30, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1127, 6, 97, 18, 0, 1127, 1128, 6, 97, 14, 0, 1128, 214, 1, 0, 0, 0, 1129, 1130, 3, 183, 82, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1132, 6, 98, 16, 0, 1132, 216, 1, 0, 0, 0, 1133, 1134, 3, 185, 83, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 6, 99, 19, 0, 1136, 218, 1, 0, 0, 0, 1137, 1138, 3, 117, 49, 0, 1138, 1139, 1, 0, 0, 0, 1139, 1140, 6, 100, 20, 0, 1140, 220, 1, 0, 0, 0, 1141, 1142, 3, 119, 50, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1144, 6, 101, 21, 0, 1144, 222, 1, 0, 0, 0, 1145, 1146, 3, 113, 47, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1148, 6, 102, 22, 0, 1148, 224, 1, 0, 0, 0, 1149, 1150, 7, 16, 0, 0, 1150, 1151, 7, 3, 0, 0, 1151, 1152, 7, 5, 0, 0, 1152, 1153, 7, 12, 0, 0, 1153, 1154, 7, 0, 0, 0, 1154, 1155, 7, 12, 0, 0, 1155, 1156, 7, 5, 0, 0, 1156, 1157, 7, 12, 0, 0, 1157, 226, 1, 0, 0, 0, 1158, 1162, 8, 32, 0, 0, 1159, 1160, 5, 47, 0, 0, 1160, 1162, 8, 33, 0, 0, 1161, 1158, 1, 0, 0, 0, 1161, 1159, 1, 0, 0, 0, 1162, 228, 1, 0, 0, 0, 1163, 1165, 3, 227, 104, 0, 1164, 1163, 1, 0, 0, 0, 1165, 1166, 1, 0, 0, 0, 1166, 1164, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 230, 1, 0, 0, 0, 1168, 1169, 3, 229, 105, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1171, 6, 106, 23, 0, 1171, 232, 1, 0, 0, 0, 1172, 1173, 3, 101, 41, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1175, 6, 107, 24, 0, 1175, 234, 1, 0, 0, 0, 1176, 1177, 3, 73, 27, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1179, 6, 108, 13, 0, 1179, 236, 1, 0, 0, 0, 1180, 1181, 3, 75, 28, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1183, 6, 109, 13, 0, 1183, 238, 1, 0, 0, 0, 1184, 1185, 3, 77, 29, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1187, 6, 110, 13, 0, 1187, 240, 1, 0, 0, 0, 1188, 1189, 3, 79, 30, 0, 1189, 1190, 1, 0, 0, 0, 1190, 1191, 6, 111, 18, 0, 1191, 1192, 6, 111, 14, 0, 1192, 242, 1, 0, 0, 0, 1193, 1194, 3, 123, 52, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1196, 6, 112, 25, 0, 1196, 244, 1, 0, 0, 0, 1197, 1198, 3, 119, 50, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1200, 6, 113, 21, 0, 1200, 246, 1, 0, 0, 0, 1201, 1202, 3, 145, 63, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1204, 6, 114, 26, 0, 1204, 248, 1, 0, 0, 0, 1205, 1206, 3, 181, 81, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1208, 6, 115, 27, 0, 1208, 250, 1, 0, 0, 0, 1209, 1214, 3, 83, 32, 0, 1210, 1214, 3, 81, 31, 0, 1211, 1214, 3, 97, 39, 0, 1212, 1214, 3, 169, 75, 0, 1213, 1209, 1, 0, 0, 0, 1213, 1210, 1, 0, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1212, 1, 0, 0, 0, 1214, 252, 1, 0, 0, 0, 1215, 1218, 3, 83, 32, 0, 1216, 1218, 3, 169, 75, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1216, 1, 0, 0, 0, 1218, 1222, 1, 0, 0, 0, 1219, 1221, 3, 251, 116, 0, 1220, 1219, 1, 0, 0, 0, 1221, 1224, 1, 0, 0, 0, 1222, 1220, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1235, 1, 0, 0, 0, 1224, 1222, 1, 0, 0, 0, 1225, 1228, 3, 97, 39, 0, 1226, 1228, 3, 91, 36, 0, 1227, 1225, 1, 0, 0, 0, 1227, 1226, 1, 0, 0, 0, 1228, 1230, 1, 0, 0, 0, 1229, 1231, 3, 251, 116, 0, 1230, 1229, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1230, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1235, 1, 0, 0, 0, 1234, 1217, 1, 0, 0, 0, 1234, 1227, 1, 0, 0, 0, 1235, 254, 1, 0, 0, 0, 1236, 1239, 3, 253, 117, 0, 1237, 1239, 3, 193, 87, 0, 1238, 1236, 1, 0, 0, 0, 1238, 1237, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1238, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 256, 1, 0, 0, 0, 1242, 1243, 3, 73, 27, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1245, 6, 119, 13, 0, 1245, 258, 1, 0, 0, 0, 1246, 1247, 3, 75, 28, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1249, 6, 120, 13, 0, 1249, 260, 1, 0, 0, 0, 1250, 1251, 3, 77, 29, 0, 1251, 1252, 1, 0, 0, 0, 1252, 1253, 6, 121, 13, 0, 1253, 262, 1, 0, 0, 0, 1254, 1255, 3, 79, 30, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1257, 6, 122, 18, 0, 1257, 1258, 6, 122, 14, 0, 1258, 264, 1, 0, 0, 0, 1259, 1260, 3, 113, 47, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1262, 6, 123, 22, 0, 1262, 266, 1, 0, 0, 0, 1263, 1264, 3, 119, 50, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1266, 6, 124, 21, 0, 1266, 268, 1, 0, 0, 0, 1267, 1268, 3, 123, 52, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1270, 6, 125, 25, 0, 1270, 270, 1, 0, 0, 0, 1271, 1272, 3, 145, 63, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1274, 6, 126, 26, 0, 1274, 272, 1, 0, 0, 0, 1275, 1276, 3, 181, 81, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1278, 6, 127, 27, 0, 1278, 274, 1, 0, 0, 0, 1279, 1280, 7, 12, 0, 0, 1280, 1281, 7, 2, 0, 0, 1281, 276, 1, 0, 0, 0, 1282, 1283, 3, 255, 118, 0, 1283, 1284, 1, 0, 0, 0, 1284, 1285, 6, 129, 28, 0, 1285, 278, 1, 0, 0, 0, 1286, 1287, 3, 73, 27, 0, 1287, 1288, 1, 0, 0, 0, 1288, 1289, 6, 130, 13, 0, 1289, 280, 1, 0, 0, 0, 1290, 1291, 3, 75, 28, 0, 1291, 1292, 1, 0, 0, 0, 1292, 1293, 6, 131, 13, 0, 1293, 282, 1, 0, 0, 0, 1294, 1295, 3, 77, 29, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1297, 6, 132, 13, 0, 1297, 284, 1, 0, 0, 0, 1298, 1299, 3, 79, 30, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1301, 6, 133, 18, 0, 1301, 1302, 6, 133, 14, 0, 1302, 286, 1, 0, 0, 0, 1303, 1304, 3, 183, 82, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 6, 134, 16, 0, 1306, 1307, 6, 134, 29, 0, 1307, 288, 1, 0, 0, 0, 1308, 1309, 7, 7, 0, 0, 1309, 1310, 7, 9, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 1312, 6, 135, 30, 0, 1312, 290, 1, 0, 0, 0, 1313, 1314, 7, 19, 0, 0, 1314, 1315, 7, 1, 0, 0, 1315, 1316, 7, 5, 0, 0, 1316, 1317, 7, 10, 0, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1319, 6, 136, 30, 0, 1319, 292, 1, 0, 0, 0, 1320, 1321, 8, 34, 0, 0, 1321, 294, 1, 0, 0, 0, 1322, 1324, 3, 293, 137, 0, 1323, 1322, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1328, 3, 117, 49, 0, 1328, 1330, 1, 0, 0, 0, 1329, 1323, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1332, 1, 0, 0, 0, 1331, 1333, 3, 293, 137, 0, 1332, 1331, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 296, 1, 0, 0, 0, 1336, 1337, 3, 295, 138, 0, 1337, 1338, 1, 0, 0, 0, 1338, 1339, 6, 139, 31, 0, 1339, 298, 1, 0, 0, 0, 1340, 1341, 3, 73, 27, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1343, 6, 140, 13, 0, 1343, 300, 1, 0, 0, 0, 1344, 1345, 3, 75, 28, 0, 1345, 1346, 1, 0, 0, 0, 1346, 1347, 6, 141, 13, 0, 1347, 302, 1, 0, 0, 0, 1348, 1349, 3, 77, 29, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1351, 6, 142, 13, 0, 1351, 304, 1, 0, 0, 0, 1352, 1353, 3, 79, 30, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1355, 6, 143, 18, 0, 1355, 1356, 6, 143, 14, 0, 1356, 1357, 6, 143, 14, 0, 1357, 306, 1, 0, 0, 0, 1358, 1359, 3, 113, 47, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1361, 6, 144, 22, 0, 1361, 308, 1, 0, 0, 0, 1362, 1363, 3, 119, 50, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1365, 6, 145, 21, 0, 1365, 310, 1, 0, 0, 0, 1366, 1367, 3, 123, 52, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1369, 6, 146, 25, 0, 1369, 312, 1, 0, 0, 0, 1370, 1371, 3, 291, 136, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 6, 147, 32, 0, 1373, 314, 1, 0, 0, 0, 1374, 1375, 3, 255, 118, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, 6, 148, 28, 0, 1377, 316, 1, 0, 0, 0, 1378, 1379, 3, 195, 88, 0, 1379, 1380, 1, 0, 0, 0, 1380, 1381, 6, 149, 33, 0, 1381, 318, 1, 0, 0, 0, 1382, 1383, 3, 145, 63, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1385, 6, 150, 26, 0, 1385, 320, 1, 0, 0, 0, 1386, 1387, 3, 181, 81, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1389, 6, 151, 27, 0, 1389, 322, 1, 0, 0, 0, 1390, 1391, 3, 73, 27, 0, 1391, 1392, 1, 0, 0, 0, 1392, 1393, 6, 152, 13, 0, 1393, 324, 1, 0, 0, 0, 1394, 1395, 3, 75, 28, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1397, 6, 153, 13, 0, 1397, 326, 1, 0, 0, 0, 1398, 1399, 3, 77, 29, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1401, 6, 154, 13, 0, 1401, 328, 1, 0, 0, 0, 1402, 1403, 3, 79, 30, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1405, 6, 155, 18, 0, 1405, 1406, 6, 155, 14, 0, 1406, 330, 1, 0, 0, 0, 1407, 1408, 3, 123, 52, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1410, 6, 156, 25, 0, 1410, 332, 1, 0, 0, 0, 1411, 1412, 3, 145, 63, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1414, 6, 157, 26, 0, 1414, 334, 1, 0, 0, 0, 1415, 1416, 3, 181, 81, 0, 1416, 1417, 1, 0, 0, 0, 1417, 1418, 6, 158, 27, 0, 1418, 336, 1, 0, 0, 0, 1419, 1420, 3, 195, 88, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 6, 159, 33, 0, 1422, 338, 1, 0, 0, 0, 1423, 1424, 3, 191, 86, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 160, 34, 0, 1426, 340, 1, 0, 0, 0, 1427, 1428, 3, 73, 27, 0, 1428, 1429, 1, 0, 0, 0, 1429, 1430, 6, 161, 13, 0, 1430, 342, 1, 0, 0, 0, 1431, 1432, 3, 75, 28, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1434, 6, 162, 13, 0, 1434, 344, 1, 0, 0, 0, 1435, 1436, 3, 77, 29, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1438, 6, 163, 13, 0, 1438, 346, 1, 0, 0, 0, 1439, 1440, 3, 79, 30, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1442, 6, 164, 18, 0, 1442, 1443, 6, 164, 14, 0, 1443, 348, 1, 0, 0, 0, 1444, 1445, 7, 1, 0, 0, 1445, 1446, 7, 9, 0, 0, 1446, 1447, 7, 15, 0, 0, 1447, 1448, 7, 7, 0, 0, 1448, 350, 1, 0, 0, 0, 1449, 1450, 3, 73, 27, 0, 1450, 1451, 1, 0, 0, 0, 1451, 1452, 6, 166, 13, 0, 1452, 352, 1, 0, 0, 0, 1453, 1454, 3, 75, 28, 0, 1454, 1455, 1, 0, 0, 0, 1455, 1456, 6, 167, 13, 0, 1456, 354, 1, 0, 0, 0, 1457, 1458, 3, 77, 29, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 6, 168, 13, 0, 1460, 356, 1, 0, 0, 0, 1461, 1462, 3, 185, 83, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1464, 6, 169, 19, 0, 1464, 1465, 6, 169, 14, 0, 1465, 358, 1, 0, 0, 0, 1466, 1467, 3, 117, 49, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1469, 6, 170, 20, 0, 1469, 360, 1, 0, 0, 0, 1470, 1476, 3, 91, 36, 0, 1471, 1476, 3, 81, 31, 0, 1472, 1476, 3, 123, 52, 0, 1473, 1476, 3, 83, 32, 0, 1474, 1476, 3, 97, 39, 0, 1475, 1470, 1, 0, 0, 0, 1475, 1471, 1, 0, 0, 0, 1475, 1472, 1, 0, 0, 0, 1475, 1473, 1, 0, 0, 0, 1475, 1474, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1475, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 362, 1, 0, 0, 0, 1479, 1480, 3, 73, 27, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 6, 172, 13, 0, 1482, 364, 1, 0, 0, 0, 1483, 1484, 3, 75, 28, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1486, 6, 173, 13, 0, 1486, 366, 1, 0, 0, 0, 1487, 1488, 3, 77, 29, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1490, 6, 174, 13, 0, 1490, 368, 1, 0, 0, 0, 1491, 1492, 3, 79, 30, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1494, 6, 175, 18, 0, 1494, 1495, 6, 175, 14, 0, 1495, 370, 1, 0, 0, 0, 1496, 1497, 3, 117, 49, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1499, 6, 176, 20, 0, 1499, 372, 1, 0, 0, 0, 1500, 1501, 3, 119, 50, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1503, 6, 177, 21, 0, 1503, 374, 1, 0, 0, 0, 1504, 1505, 3, 123, 52, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1507, 6, 178, 25, 0, 1507, 376, 1, 0, 0, 0, 1508, 1509, 3, 289, 135, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1511, 6, 179, 35, 0, 1511, 1512, 6, 179, 36, 0, 1512, 378, 1, 0, 0, 0, 1513, 1514, 3, 229, 105, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1516, 6, 180, 23, 0, 1516, 380, 1, 0, 0, 0, 1517, 1518, 3, 101, 41, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 6, 181, 24, 0, 1520, 382, 1, 0, 0, 0, 1521, 1522, 3, 73, 27, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1524, 6, 182, 13, 0, 1524, 384, 1, 0, 0, 0, 1525, 1526, 3, 75, 28, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1528, 6, 183, 13, 0, 1528, 386, 1, 0, 0, 0, 1529, 1530, 3, 77, 29, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 6, 184, 13, 0, 1532, 388, 1, 0, 0, 0, 1533, 1534, 3, 79, 30, 0, 1534, 1535, 1, 0, 0, 0, 1535, 1536, 6, 185, 18, 0, 1536, 1537, 6, 185, 14, 0, 1537, 1538, 6, 185, 14, 0, 1538, 390, 1, 0, 0, 0, 1539, 1540, 3, 119, 50, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1542, 6, 186, 21, 0, 1542, 392, 1, 0, 0, 0, 1543, 1544, 3, 123, 52, 0, 1544, 1545, 1, 0, 0, 0, 1545, 1546, 6, 187, 25, 0, 1546, 394, 1, 0, 0, 0, 1547, 1548, 3, 255, 118, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1550, 6, 188, 28, 0, 1550, 396, 1, 0, 0, 0, 1551, 1552, 3, 73, 27, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 6, 189, 13, 0, 1554, 398, 1, 0, 0, 0, 1555, 1556, 3, 75, 28, 0, 1556, 1557, 1, 0, 0, 0, 1557, 1558, 6, 190, 13, 0, 1558, 400, 1, 0, 0, 0, 1559, 1560, 3, 77, 29, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1562, 6, 191, 13, 0, 1562, 402, 1, 0, 0, 0, 1563, 1564, 3, 79, 30, 0, 1564, 1565, 1, 0, 0, 0, 1565, 1566, 6, 192, 18, 0, 1566, 1567, 6, 192, 14, 0, 1567, 404, 1, 0, 0, 0, 1568, 1569, 7, 35, 0, 0, 1569, 1570, 7, 7, 0, 0, 1570, 1571, 7, 1, 0, 0, 1571, 1572, 7, 9, 0, 0, 1572, 406, 1, 0, 0, 0, 1573, 1574, 3, 275, 128, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1576, 6, 194, 37, 0, 1576, 408, 1, 0, 0, 0, 1577, 1578, 3, 289, 135, 0, 1578, 1579, 1, 0, 0, 0, 1579, 1580, 6, 195, 35, 0, 1580, 1581, 6, 195, 14, 0, 1581, 1582, 6, 195, 0, 0, 1582, 410, 1, 0, 0, 0, 1583, 1584, 7, 20, 0, 0, 1584, 1585, 7, 2, 0, 0, 1585, 1586, 7, 1, 0, 0, 1586, 1587, 7, 9, 0, 0, 1587, 1588, 7, 17, 0, 0, 1588, 1589, 1, 0, 0, 0, 1589, 1590, 6, 196, 14, 0, 1590, 1591, 6, 196, 0, 0, 1591, 412, 1, 0, 0, 0, 1592, 1593, 3, 229, 105, 0, 1593, 1594, 1, 0, 0, 0, 1594, 1595, 6, 197, 23, 0, 1595, 414, 1, 0, 0, 0, 1596, 1597, 3, 101, 41, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1599, 6, 198, 24, 0, 1599, 416, 1, 0, 0, 0, 1600, 1601, 3, 117, 49, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1603, 6, 199, 20, 0, 1603, 418, 1, 0, 0, 0, 1604, 1605, 3, 191, 86, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1607, 6, 200, 34, 0, 1607, 420, 1, 0, 0, 0, 1608, 1609, 3, 195, 88, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1611, 6, 201, 33, 0, 1611, 422, 1, 0, 0, 0, 1612, 1613, 3, 73, 27, 0, 1613, 1614, 1, 0, 0, 0, 1614, 1615, 6, 202, 13, 0, 1615, 424, 1, 0, 0, 0, 1616, 1617, 3, 75, 28, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1619, 6, 203, 13, 0, 1619, 426, 1, 0, 0, 0, 1620, 1621, 3, 77, 29, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1623, 6, 204, 13, 0, 1623, 428, 1, 0, 0, 0, 1624, 1625, 3, 79, 30, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1627, 6, 205, 18, 0, 1627, 1628, 6, 205, 14, 0, 1628, 430, 1, 0, 0, 0, 1629, 1630, 3, 229, 105, 0, 1630, 1631, 1, 0, 0, 0, 1631, 1632, 6, 206, 23, 0, 1632, 1633, 6, 206, 14, 0, 1633, 1634, 6, 206, 38, 0, 1634, 432, 1, 0, 0, 0, 1635, 1636, 3, 101, 41, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1638, 6, 207, 24, 0, 1638, 1639, 6, 207, 14, 0, 1639, 1640, 6, 207, 38, 0, 1640, 434, 1, 0, 0, 0, 1641, 1642, 3, 73, 27, 0, 1642, 1643, 1, 0, 0, 0, 1643, 1644, 6, 208, 13, 0, 1644, 436, 1, 0, 0, 0, 1645, 1646, 3, 75, 28, 0, 1646, 1647, 1, 0, 0, 0, 1647, 1648, 6, 209, 13, 0, 1648, 438, 1, 0, 0, 0, 1649, 1650, 3, 77, 29, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1652, 6, 210, 13, 0, 1652, 440, 1, 0, 0, 0, 1653, 1654, 3, 117, 49, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1656, 6, 211, 20, 0, 1656, 1657, 6, 211, 14, 0, 1657, 1658, 6, 211, 11, 0, 1658, 442, 1, 0, 0, 0, 1659, 1660, 3, 119, 50, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1662, 6, 212, 21, 0, 1662, 1663, 6, 212, 14, 0, 1663, 1664, 6, 212, 11, 0, 1664, 444, 1, 0, 0, 0, 1665, 1666, 3, 73, 27, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1668, 6, 213, 13, 0, 1668, 446, 1, 0, 0, 0, 1669, 1670, 3, 75, 28, 0, 1670, 1671, 1, 0, 0, 0, 1671, 1672, 6, 214, 13, 0, 1672, 448, 1, 0, 0, 0, 1673, 1674, 3, 77, 29, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1676, 6, 215, 13, 0, 1676, 450, 1, 0, 0, 0, 1677, 1678, 3, 195, 88, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1680, 6, 216, 14, 0, 1680, 1681, 6, 216, 0, 0, 1681, 1682, 6, 216, 33, 0, 1682, 452, 1, 0, 0, 0, 1683, 1684, 3, 191, 86, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1686, 6, 217, 14, 0, 1686, 1687, 6, 217, 0, 0, 1687, 1688, 6, 217, 34, 0, 1688, 454, 1, 0, 0, 0, 1689, 1690, 3, 107, 44, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1692, 6, 218, 14, 0, 1692, 1693, 6, 218, 0, 0, 1693, 1694, 6, 218, 39, 0, 1694, 456, 1, 0, 0, 0, 1695, 1696, 3, 79, 30, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 6, 219, 18, 0, 1698, 1699, 6, 219, 14, 0, 1699, 458, 1, 0, 0, 0, 1700, 1701, 3, 79, 30, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1703, 6, 220, 18, 0, 1703, 1704, 6, 220, 14, 0, 1704, 460, 1, 0, 0, 0, 1705, 1706, 3, 289, 135, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1708, 6, 221, 35, 0, 1708, 462, 1, 0, 0, 0, 1709, 1710, 3, 275, 128, 0, 1710, 1711, 1, 0, 0, 0, 1711, 1712, 6, 222, 37, 0, 1712, 464, 1, 0, 0, 0, 1713, 1714, 3, 123, 52, 0, 1714, 1715, 1, 0, 0, 0, 1715, 1716, 6, 223, 25, 0, 1716, 466, 1, 0, 0, 0, 1717, 1718, 3, 119, 50, 0, 1718, 1719, 1, 0, 0, 0, 1719, 1720, 6, 224, 21, 0, 1720, 468, 1, 0, 0, 0, 1721, 1722, 3, 195, 88, 0, 1722, 1723, 1, 0, 0, 0, 1723, 1724, 6, 225, 33, 0, 1724, 470, 1, 0, 0, 0, 1725, 1726, 3, 191, 86, 0, 1726, 1727, 1, 0, 0, 0, 1727, 1728, 6, 226, 34, 0, 1728, 472, 1, 0, 0, 0, 1729, 1730, 3, 73, 27, 0, 1730, 1731, 1, 0, 0, 0, 1731, 1732, 6, 227, 13, 0, 1732, 474, 1, 0, 0, 0, 1733, 1734, 3, 75, 28, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1736, 6, 228, 13, 0, 1736, 476, 1, 0, 0, 0, 1737, 1738, 3, 77, 29, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1740, 6, 229, 13, 0, 1740, 478, 1, 0, 0, 0, 1741, 1742, 3, 79, 30, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1744, 6, 230, 18, 0, 1744, 1745, 6, 230, 14, 0, 1745, 480, 1, 0, 0, 0, 1746, 1747, 3, 191, 86, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 6, 231, 34, 0, 1749, 482, 1, 0, 0, 0, 1750, 1751, 3, 77, 29, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1753, 6, 232, 13, 0, 1753, 484, 1, 0, 0, 0, 1754, 1755, 3, 73, 27, 0, 1755, 1756, 1, 0, 0, 0, 1756, 1757, 6, 233, 13, 0, 1757, 486, 1, 0, 0, 0, 1758, 1759, 3, 75, 28, 0, 1759, 1760, 1, 0, 0, 0, 1760, 1761, 6, 234, 13, 0, 1761, 488, 1, 0, 0, 0, 1762, 1763, 3, 187, 84, 0, 1763, 1764, 1, 0, 0, 0, 1764, 1765, 6, 235, 40, 0, 1765, 1766, 6, 235, 17, 0, 1766, 490, 1, 0, 0, 0, 1767, 1768, 3, 79, 30, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1770, 6, 236, 18, 0, 1770, 1771, 6, 236, 14, 0, 1771, 492, 1, 0, 0, 0, 1772, 1773, 3, 77, 29, 0, 1773, 1774, 1, 0, 0, 0, 1774, 1775, 6, 237, 13, 0, 1775, 494, 1, 0, 0, 0, 1776, 1777, 3, 73, 27, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1779, 6, 238, 13, 0, 1779, 496, 1, 0, 0, 0, 1780, 1781, 3, 75, 28, 0, 1781, 1782, 1, 0, 0, 0, 1782, 1783, 6, 239, 13, 0, 1783, 498, 1, 0, 0, 0, 69, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 739, 749, 753, 756, 765, 767, 778, 797, 802, 811, 818, 823, 825, 836, 844, 847, 849, 854, 859, 865, 872, 877, 883, 886, 894, 898, 1026, 1031, 1038, 1040, 1066, 1071, 1076, 1078, 1084, 1161, 1166, 1213, 1217, 1222, 1227, 1232, 1234, 1238, 1240, 1325, 1329, 1334, 1475, 1477, 41, 5, 1, 0, 5, 4, 0, 5, 6, 0, 5, 2, 0, 5, 3, 0, 5, 8, 0, 5, 5, 0, 5, 9, 0, 5, 13, 0, 5, 16, 0, 5, 11, 0, 5, 14, 0, 5, 18, 0, 0, 1, 0, 4, 0, 0, 7, 16, 0, 7, 72, 0, 5, 0, 0, 7, 31, 0, 7, 73, 0, 7, 40, 0, 7, 41, 0, 7, 38, 0, 7, 85, 0, 7, 32, 0, 7, 43, 0, 7, 54, 0, 7, 71, 0, 7, 89, 0, 5, 10, 0, 5, 7, 0, 7, 99, 0, 7, 98, 0, 7, 77, 0, 7, 76, 0, 7, 97, 0, 5, 12, 0, 7, 93, 0, 5, 15, 0, 7, 35, 0, 7, 74, 0]
\ No newline at end of file
+[4, 0, 139, 1752, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 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, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 493, 8, 0, 10, 0, 12, 0, 496, 9, 0, 1, 0, 3, 0, 499, 8, 0, 1, 0, 3, 0, 502, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 511, 8, 1, 10, 1, 12, 1, 514, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 522, 8, 2, 11, 2, 12, 2, 523, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 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, 14, 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, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 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, 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, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 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, 26, 1, 26, 1, 26, 1, 26, 1, 26, 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, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 4, 29, 766, 8, 29, 11, 29, 12, 29, 767, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 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, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 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, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 4, 45, 838, 8, 45, 11, 45, 12, 45, 839, 1, 45, 1, 45, 3, 45, 844, 8, 45, 1, 45, 4, 45, 847, 8, 45, 11, 45, 12, 45, 848, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 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, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 4, 64, 931, 8, 64, 11, 64, 12, 64, 932, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 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, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 3, 78, 984, 8, 78, 1, 78, 4, 78, 987, 8, 78, 11, 78, 12, 78, 988, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 3, 81, 998, 8, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 3, 83, 1005, 8, 83, 1, 84, 1, 84, 1, 84, 5, 84, 1010, 8, 84, 10, 84, 12, 84, 1013, 9, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 5, 84, 1021, 8, 84, 10, 84, 12, 84, 1024, 9, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1031, 8, 84, 1, 84, 3, 84, 1034, 8, 84, 3, 84, 1036, 8, 84, 1, 85, 4, 85, 1039, 8, 85, 11, 85, 12, 85, 1040, 1, 86, 4, 86, 1044, 8, 86, 11, 86, 12, 86, 1045, 1, 86, 1, 86, 5, 86, 1050, 8, 86, 10, 86, 12, 86, 1053, 9, 86, 1, 86, 1, 86, 4, 86, 1057, 8, 86, 11, 86, 12, 86, 1058, 1, 86, 4, 86, 1062, 8, 86, 11, 86, 12, 86, 1063, 1, 86, 1, 86, 5, 86, 1068, 8, 86, 10, 86, 12, 86, 1071, 9, 86, 3, 86, 1073, 8, 86, 1, 86, 1, 86, 1, 86, 1, 86, 4, 86, 1079, 8, 86, 11, 86, 12, 86, 1080, 1, 86, 1, 86, 3, 86, 1085, 8, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 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, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 3, 124, 1213, 8, 124, 1, 124, 5, 124, 1216, 8, 124, 10, 124, 12, 124, 1219, 9, 124, 1, 124, 1, 124, 4, 124, 1223, 8, 124, 11, 124, 12, 124, 1224, 3, 124, 1227, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 5, 129, 1251, 8, 129, 10, 129, 12, 129, 1254, 9, 129, 1, 129, 1, 129, 3, 129, 1258, 8, 129, 1, 129, 4, 129, 1261, 8, 129, 11, 129, 12, 129, 1262, 3, 129, 1265, 8, 129, 1, 130, 1, 130, 4, 130, 1269, 8, 130, 11, 130, 12, 130, 1270, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 3, 142, 1326, 8, 142, 1, 143, 4, 143, 1329, 8, 143, 11, 143, 12, 143, 1330, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 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, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 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, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 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, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 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, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 3, 213, 1646, 8, 213, 1, 214, 1, 214, 3, 214, 1650, 8, 214, 1, 214, 5, 214, 1653, 8, 214, 10, 214, 12, 214, 1656, 9, 214, 1, 214, 1, 214, 3, 214, 1660, 8, 214, 1, 214, 4, 214, 1663, 8, 214, 11, 214, 12, 214, 1664, 3, 214, 1667, 8, 214, 1, 215, 1, 215, 4, 215, 1671, 8, 215, 11, 215, 12, 215, 1672, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 2, 512, 1022, 0, 235, 18, 1, 20, 2, 22, 3, 24, 4, 26, 5, 28, 6, 30, 7, 32, 8, 34, 9, 36, 10, 38, 11, 40, 12, 42, 13, 44, 14, 46, 15, 48, 16, 50, 17, 52, 18, 54, 19, 56, 20, 58, 21, 60, 22, 62, 23, 64, 24, 66, 25, 68, 26, 70, 27, 72, 28, 74, 29, 76, 30, 78, 0, 80, 0, 82, 0, 84, 0, 86, 0, 88, 0, 90, 0, 92, 31, 94, 32, 96, 33, 98, 0, 100, 0, 102, 34, 104, 35, 106, 0, 108, 36, 110, 0, 112, 37, 114, 38, 116, 39, 118, 0, 120, 0, 122, 0, 124, 0, 126, 0, 128, 0, 130, 0, 132, 0, 134, 0, 136, 40, 138, 41, 140, 42, 142, 0, 144, 0, 146, 43, 148, 44, 150, 45, 152, 46, 154, 0, 156, 0, 158, 47, 160, 48, 162, 49, 164, 50, 166, 0, 168, 0, 170, 0, 172, 0, 174, 0, 176, 0, 178, 0, 180, 0, 182, 0, 184, 0, 186, 51, 188, 52, 190, 53, 192, 54, 194, 55, 196, 56, 198, 57, 200, 58, 202, 59, 204, 60, 206, 61, 208, 62, 210, 63, 212, 64, 214, 65, 216, 66, 218, 67, 220, 68, 222, 69, 224, 70, 226, 71, 228, 72, 230, 73, 232, 74, 234, 75, 236, 76, 238, 77, 240, 78, 242, 79, 244, 80, 246, 81, 248, 82, 250, 83, 252, 84, 254, 85, 256, 86, 258, 87, 260, 88, 262, 89, 264, 0, 266, 90, 268, 91, 270, 92, 272, 93, 274, 94, 276, 95, 278, 0, 280, 96, 282, 97, 284, 98, 286, 99, 288, 0, 290, 0, 292, 0, 294, 0, 296, 0, 298, 0, 300, 100, 302, 0, 304, 101, 306, 0, 308, 0, 310, 102, 312, 103, 314, 104, 316, 0, 318, 0, 320, 105, 322, 106, 324, 107, 326, 0, 328, 108, 330, 0, 332, 0, 334, 109, 336, 0, 338, 0, 340, 0, 342, 0, 344, 0, 346, 110, 348, 111, 350, 112, 352, 0, 354, 0, 356, 0, 358, 0, 360, 0, 362, 0, 364, 0, 366, 113, 368, 114, 370, 115, 372, 0, 374, 0, 376, 0, 378, 0, 380, 116, 382, 117, 384, 118, 386, 0, 388, 0, 390, 0, 392, 119, 394, 120, 396, 121, 398, 0, 400, 0, 402, 122, 404, 123, 406, 124, 408, 0, 410, 0, 412, 0, 414, 0, 416, 0, 418, 0, 420, 0, 422, 0, 424, 0, 426, 0, 428, 125, 430, 126, 432, 127, 434, 0, 436, 0, 438, 0, 440, 0, 442, 0, 444, 0, 446, 0, 448, 128, 450, 129, 452, 130, 454, 131, 456, 0, 458, 0, 460, 0, 462, 0, 464, 0, 466, 0, 468, 132, 470, 0, 472, 133, 474, 134, 476, 135, 478, 0, 480, 136, 482, 137, 484, 138, 486, 139, 18, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 36, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 67, 67, 99, 99, 2, 0, 72, 72, 104, 104, 2, 0, 65, 65, 97, 97, 2, 0, 78, 78, 110, 110, 2, 0, 71, 71, 103, 103, 2, 0, 69, 69, 101, 101, 2, 0, 80, 80, 112, 112, 2, 0, 79, 79, 111, 111, 2, 0, 73, 73, 105, 105, 2, 0, 84, 84, 116, 116, 2, 0, 82, 82, 114, 114, 2, 0, 88, 88, 120, 120, 2, 0, 76, 76, 108, 108, 2, 0, 68, 68, 100, 100, 2, 0, 83, 83, 115, 115, 2, 0, 86, 86, 118, 118, 2, 0, 75, 75, 107, 107, 2, 0, 77, 77, 109, 109, 2, 0, 87, 87, 119, 119, 2, 0, 70, 70, 102, 102, 2, 0, 85, 85, 117, 117, 6, 0, 9, 10, 13, 13, 32, 32, 47, 47, 91, 91, 93, 93, 11, 0, 9, 10, 13, 13, 32, 32, 34, 35, 44, 44, 47, 47, 58, 58, 60, 60, 62, 63, 92, 92, 124, 124, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 8, 0, 34, 34, 78, 78, 82, 82, 84, 84, 92, 92, 110, 110, 114, 114, 116, 116, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 43, 43, 45, 45, 1, 0, 96, 96, 2, 0, 66, 66, 98, 98, 2, 0, 89, 89, 121, 121, 11, 0, 9, 10, 13, 13, 32, 32, 34, 34, 44, 44, 47, 47, 58, 58, 61, 61, 91, 91, 93, 93, 124, 124, 2, 0, 42, 42, 47, 47, 2, 0, 74, 74, 106, 106, 1777, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 38, 1, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 56, 1, 0, 0, 0, 0, 58, 1, 0, 0, 0, 0, 60, 1, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 66, 1, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 70, 1, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 76, 1, 0, 0, 0, 1, 78, 1, 0, 0, 0, 1, 80, 1, 0, 0, 0, 1, 82, 1, 0, 0, 0, 1, 84, 1, 0, 0, 0, 1, 86, 1, 0, 0, 0, 1, 88, 1, 0, 0, 0, 1, 90, 1, 0, 0, 0, 1, 92, 1, 0, 0, 0, 1, 94, 1, 0, 0, 0, 1, 96, 1, 0, 0, 0, 2, 98, 1, 0, 0, 0, 2, 100, 1, 0, 0, 0, 2, 102, 1, 0, 0, 0, 2, 104, 1, 0, 0, 0, 2, 108, 1, 0, 0, 0, 2, 110, 1, 0, 0, 0, 2, 112, 1, 0, 0, 0, 2, 114, 1, 0, 0, 0, 2, 116, 1, 0, 0, 0, 3, 118, 1, 0, 0, 0, 3, 120, 1, 0, 0, 0, 3, 122, 1, 0, 0, 0, 3, 124, 1, 0, 0, 0, 3, 126, 1, 0, 0, 0, 3, 128, 1, 0, 0, 0, 3, 130, 1, 0, 0, 0, 3, 132, 1, 0, 0, 0, 3, 134, 1, 0, 0, 0, 3, 136, 1, 0, 0, 0, 3, 138, 1, 0, 0, 0, 3, 140, 1, 0, 0, 0, 4, 142, 1, 0, 0, 0, 4, 144, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 4, 148, 1, 0, 0, 0, 4, 150, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 5, 154, 1, 0, 0, 0, 5, 156, 1, 0, 0, 0, 5, 158, 1, 0, 0, 0, 5, 160, 1, 0, 0, 0, 5, 162, 1, 0, 0, 0, 6, 164, 1, 0, 0, 0, 6, 186, 1, 0, 0, 0, 6, 188, 1, 0, 0, 0, 6, 190, 1, 0, 0, 0, 6, 192, 1, 0, 0, 0, 6, 194, 1, 0, 0, 0, 6, 196, 1, 0, 0, 0, 6, 198, 1, 0, 0, 0, 6, 200, 1, 0, 0, 0, 6, 202, 1, 0, 0, 0, 6, 204, 1, 0, 0, 0, 6, 206, 1, 0, 0, 0, 6, 208, 1, 0, 0, 0, 6, 210, 1, 0, 0, 0, 6, 212, 1, 0, 0, 0, 6, 214, 1, 0, 0, 0, 6, 216, 1, 0, 0, 0, 6, 218, 1, 0, 0, 0, 6, 220, 1, 0, 0, 0, 6, 222, 1, 0, 0, 0, 6, 224, 1, 0, 0, 0, 6, 226, 1, 0, 0, 0, 6, 228, 1, 0, 0, 0, 6, 230, 1, 0, 0, 0, 6, 232, 1, 0, 0, 0, 6, 234, 1, 0, 0, 0, 6, 236, 1, 0, 0, 0, 6, 238, 1, 0, 0, 0, 6, 240, 1, 0, 0, 0, 6, 242, 1, 0, 0, 0, 6, 244, 1, 0, 0, 0, 6, 246, 1, 0, 0, 0, 6, 248, 1, 0, 0, 0, 6, 250, 1, 0, 0, 0, 6, 252, 1, 0, 0, 0, 6, 254, 1, 0, 0, 0, 6, 256, 1, 0, 0, 0, 6, 258, 1, 0, 0, 0, 6, 260, 1, 0, 0, 0, 6, 262, 1, 0, 0, 0, 6, 264, 1, 0, 0, 0, 6, 266, 1, 0, 0, 0, 6, 268, 1, 0, 0, 0, 6, 270, 1, 0, 0, 0, 6, 272, 1, 0, 0, 0, 6, 274, 1, 0, 0, 0, 6, 276, 1, 0, 0, 0, 6, 280, 1, 0, 0, 0, 6, 282, 1, 0, 0, 0, 6, 284, 1, 0, 0, 0, 6, 286, 1, 0, 0, 0, 7, 288, 1, 0, 0, 0, 7, 290, 1, 0, 0, 0, 7, 292, 1, 0, 0, 0, 7, 294, 1, 0, 0, 0, 7, 296, 1, 0, 0, 0, 7, 298, 1, 0, 0, 0, 7, 300, 1, 0, 0, 0, 7, 304, 1, 0, 0, 0, 7, 306, 1, 0, 0, 0, 7, 308, 1, 0, 0, 0, 7, 310, 1, 0, 0, 0, 7, 312, 1, 0, 0, 0, 7, 314, 1, 0, 0, 0, 8, 316, 1, 0, 0, 0, 8, 318, 1, 0, 0, 0, 8, 320, 1, 0, 0, 0, 8, 322, 1, 0, 0, 0, 8, 324, 1, 0, 0, 0, 9, 326, 1, 0, 0, 0, 9, 328, 1, 0, 0, 0, 9, 330, 1, 0, 0, 0, 9, 332, 1, 0, 0, 0, 9, 334, 1, 0, 0, 0, 9, 336, 1, 0, 0, 0, 9, 338, 1, 0, 0, 0, 9, 340, 1, 0, 0, 0, 9, 342, 1, 0, 0, 0, 9, 344, 1, 0, 0, 0, 9, 346, 1, 0, 0, 0, 9, 348, 1, 0, 0, 0, 9, 350, 1, 0, 0, 0, 10, 352, 1, 0, 0, 0, 10, 354, 1, 0, 0, 0, 10, 356, 1, 0, 0, 0, 10, 358, 1, 0, 0, 0, 10, 360, 1, 0, 0, 0, 10, 362, 1, 0, 0, 0, 10, 364, 1, 0, 0, 0, 10, 366, 1, 0, 0, 0, 10, 368, 1, 0, 0, 0, 10, 370, 1, 0, 0, 0, 11, 372, 1, 0, 0, 0, 11, 374, 1, 0, 0, 0, 11, 376, 1, 0, 0, 0, 11, 378, 1, 0, 0, 0, 11, 380, 1, 0, 0, 0, 11, 382, 1, 0, 0, 0, 11, 384, 1, 0, 0, 0, 12, 386, 1, 0, 0, 0, 12, 388, 1, 0, 0, 0, 12, 390, 1, 0, 0, 0, 12, 392, 1, 0, 0, 0, 12, 394, 1, 0, 0, 0, 12, 396, 1, 0, 0, 0, 13, 398, 1, 0, 0, 0, 13, 400, 1, 0, 0, 0, 13, 402, 1, 0, 0, 0, 13, 404, 1, 0, 0, 0, 13, 406, 1, 0, 0, 0, 13, 408, 1, 0, 0, 0, 13, 410, 1, 0, 0, 0, 13, 412, 1, 0, 0, 0, 13, 414, 1, 0, 0, 0, 14, 416, 1, 0, 0, 0, 14, 418, 1, 0, 0, 0, 14, 420, 1, 0, 0, 0, 14, 422, 1, 0, 0, 0, 14, 424, 1, 0, 0, 0, 14, 426, 1, 0, 0, 0, 14, 428, 1, 0, 0, 0, 14, 430, 1, 0, 0, 0, 14, 432, 1, 0, 0, 0, 15, 434, 1, 0, 0, 0, 15, 436, 1, 0, 0, 0, 15, 438, 1, 0, 0, 0, 15, 440, 1, 0, 0, 0, 15, 442, 1, 0, 0, 0, 15, 448, 1, 0, 0, 0, 15, 450, 1, 0, 0, 0, 15, 452, 1, 0, 0, 0, 15, 454, 1, 0, 0, 0, 16, 456, 1, 0, 0, 0, 16, 458, 1, 0, 0, 0, 16, 460, 1, 0, 0, 0, 16, 462, 1, 0, 0, 0, 16, 464, 1, 0, 0, 0, 16, 466, 1, 0, 0, 0, 16, 468, 1, 0, 0, 0, 16, 470, 1, 0, 0, 0, 16, 472, 1, 0, 0, 0, 16, 474, 1, 0, 0, 0, 16, 476, 1, 0, 0, 0, 17, 478, 1, 0, 0, 0, 17, 480, 1, 0, 0, 0, 17, 482, 1, 0, 0, 0, 17, 484, 1, 0, 0, 0, 17, 486, 1, 0, 0, 0, 18, 488, 1, 0, 0, 0, 20, 505, 1, 0, 0, 0, 22, 521, 1, 0, 0, 0, 24, 527, 1, 0, 0, 0, 26, 543, 1, 0, 0, 0, 28, 552, 1, 0, 0, 0, 30, 562, 1, 0, 0, 0, 32, 572, 1, 0, 0, 0, 34, 579, 1, 0, 0, 0, 36, 586, 1, 0, 0, 0, 38, 594, 1, 0, 0, 0, 40, 600, 1, 0, 0, 0, 42, 607, 1, 0, 0, 0, 44, 615, 1, 0, 0, 0, 46, 623, 1, 0, 0, 0, 48, 638, 1, 0, 0, 0, 50, 645, 1, 0, 0, 0, 52, 653, 1, 0, 0, 0, 54, 662, 1, 0, 0, 0, 56, 670, 1, 0, 0, 0, 58, 678, 1, 0, 0, 0, 60, 687, 1, 0, 0, 0, 62, 699, 1, 0, 0, 0, 64, 710, 1, 0, 0, 0, 66, 722, 1, 0, 0, 0, 68, 729, 1, 0, 0, 0, 70, 736, 1, 0, 0, 0, 72, 748, 1, 0, 0, 0, 74, 757, 1, 0, 0, 0, 76, 765, 1, 0, 0, 0, 78, 771, 1, 0, 0, 0, 80, 776, 1, 0, 0, 0, 82, 780, 1, 0, 0, 0, 84, 784, 1, 0, 0, 0, 86, 788, 1, 0, 0, 0, 88, 792, 1, 0, 0, 0, 90, 796, 1, 0, 0, 0, 92, 800, 1, 0, 0, 0, 94, 804, 1, 0, 0, 0, 96, 808, 1, 0, 0, 0, 98, 812, 1, 0, 0, 0, 100, 817, 1, 0, 0, 0, 102, 822, 1, 0, 0, 0, 104, 827, 1, 0, 0, 0, 106, 834, 1, 0, 0, 0, 108, 843, 1, 0, 0, 0, 110, 850, 1, 0, 0, 0, 112, 854, 1, 0, 0, 0, 114, 858, 1, 0, 0, 0, 116, 862, 1, 0, 0, 0, 118, 866, 1, 0, 0, 0, 120, 872, 1, 0, 0, 0, 122, 876, 1, 0, 0, 0, 124, 880, 1, 0, 0, 0, 126, 884, 1, 0, 0, 0, 128, 888, 1, 0, 0, 0, 130, 892, 1, 0, 0, 0, 132, 896, 1, 0, 0, 0, 134, 900, 1, 0, 0, 0, 136, 904, 1, 0, 0, 0, 138, 908, 1, 0, 0, 0, 140, 912, 1, 0, 0, 0, 142, 916, 1, 0, 0, 0, 144, 921, 1, 0, 0, 0, 146, 930, 1, 0, 0, 0, 148, 934, 1, 0, 0, 0, 150, 938, 1, 0, 0, 0, 152, 942, 1, 0, 0, 0, 154, 946, 1, 0, 0, 0, 156, 951, 1, 0, 0, 0, 158, 956, 1, 0, 0, 0, 160, 960, 1, 0, 0, 0, 162, 964, 1, 0, 0, 0, 164, 968, 1, 0, 0, 0, 166, 972, 1, 0, 0, 0, 168, 974, 1, 0, 0, 0, 170, 976, 1, 0, 0, 0, 172, 979, 1, 0, 0, 0, 174, 981, 1, 0, 0, 0, 176, 990, 1, 0, 0, 0, 178, 992, 1, 0, 0, 0, 180, 997, 1, 0, 0, 0, 182, 999, 1, 0, 0, 0, 184, 1004, 1, 0, 0, 0, 186, 1035, 1, 0, 0, 0, 188, 1038, 1, 0, 0, 0, 190, 1084, 1, 0, 0, 0, 192, 1086, 1, 0, 0, 0, 194, 1089, 1, 0, 0, 0, 196, 1093, 1, 0, 0, 0, 198, 1097, 1, 0, 0, 0, 200, 1099, 1, 0, 0, 0, 202, 1102, 1, 0, 0, 0, 204, 1104, 1, 0, 0, 0, 206, 1106, 1, 0, 0, 0, 208, 1111, 1, 0, 0, 0, 210, 1113, 1, 0, 0, 0, 212, 1119, 1, 0, 0, 0, 214, 1125, 1, 0, 0, 0, 216, 1128, 1, 0, 0, 0, 218, 1131, 1, 0, 0, 0, 220, 1136, 1, 0, 0, 0, 222, 1141, 1, 0, 0, 0, 224, 1145, 1, 0, 0, 0, 226, 1150, 1, 0, 0, 0, 228, 1156, 1, 0, 0, 0, 230, 1159, 1, 0, 0, 0, 232, 1161, 1, 0, 0, 0, 234, 1167, 1, 0, 0, 0, 236, 1172, 1, 0, 0, 0, 238, 1175, 1, 0, 0, 0, 240, 1178, 1, 0, 0, 0, 242, 1181, 1, 0, 0, 0, 244, 1183, 1, 0, 0, 0, 246, 1186, 1, 0, 0, 0, 248, 1188, 1, 0, 0, 0, 250, 1191, 1, 0, 0, 0, 252, 1193, 1, 0, 0, 0, 254, 1195, 1, 0, 0, 0, 256, 1197, 1, 0, 0, 0, 258, 1199, 1, 0, 0, 0, 260, 1201, 1, 0, 0, 0, 262, 1203, 1, 0, 0, 0, 264, 1205, 1, 0, 0, 0, 266, 1226, 1, 0, 0, 0, 268, 1228, 1, 0, 0, 0, 270, 1233, 1, 0, 0, 0, 272, 1238, 1, 0, 0, 0, 274, 1243, 1, 0, 0, 0, 276, 1264, 1, 0, 0, 0, 278, 1266, 1, 0, 0, 0, 280, 1274, 1, 0, 0, 0, 282, 1276, 1, 0, 0, 0, 284, 1280, 1, 0, 0, 0, 286, 1284, 1, 0, 0, 0, 288, 1288, 1, 0, 0, 0, 290, 1293, 1, 0, 0, 0, 292, 1297, 1, 0, 0, 0, 294, 1301, 1, 0, 0, 0, 296, 1305, 1, 0, 0, 0, 298, 1309, 1, 0, 0, 0, 300, 1313, 1, 0, 0, 0, 302, 1325, 1, 0, 0, 0, 304, 1328, 1, 0, 0, 0, 306, 1332, 1, 0, 0, 0, 308, 1336, 1, 0, 0, 0, 310, 1340, 1, 0, 0, 0, 312, 1344, 1, 0, 0, 0, 314, 1348, 1, 0, 0, 0, 316, 1352, 1, 0, 0, 0, 318, 1357, 1, 0, 0, 0, 320, 1362, 1, 0, 0, 0, 322, 1366, 1, 0, 0, 0, 324, 1370, 1, 0, 0, 0, 326, 1374, 1, 0, 0, 0, 328, 1379, 1, 0, 0, 0, 330, 1384, 1, 0, 0, 0, 332, 1388, 1, 0, 0, 0, 334, 1394, 1, 0, 0, 0, 336, 1403, 1, 0, 0, 0, 338, 1407, 1, 0, 0, 0, 340, 1411, 1, 0, 0, 0, 342, 1415, 1, 0, 0, 0, 344, 1419, 1, 0, 0, 0, 346, 1423, 1, 0, 0, 0, 348, 1427, 1, 0, 0, 0, 350, 1431, 1, 0, 0, 0, 352, 1435, 1, 0, 0, 0, 354, 1440, 1, 0, 0, 0, 356, 1444, 1, 0, 0, 0, 358, 1448, 1, 0, 0, 0, 360, 1452, 1, 0, 0, 0, 362, 1457, 1, 0, 0, 0, 364, 1461, 1, 0, 0, 0, 366, 1465, 1, 0, 0, 0, 368, 1469, 1, 0, 0, 0, 370, 1473, 1, 0, 0, 0, 372, 1477, 1, 0, 0, 0, 374, 1483, 1, 0, 0, 0, 376, 1487, 1, 0, 0, 0, 378, 1491, 1, 0, 0, 0, 380, 1495, 1, 0, 0, 0, 382, 1499, 1, 0, 0, 0, 384, 1503, 1, 0, 0, 0, 386, 1507, 1, 0, 0, 0, 388, 1512, 1, 0, 0, 0, 390, 1518, 1, 0, 0, 0, 392, 1524, 1, 0, 0, 0, 394, 1528, 1, 0, 0, 0, 396, 1532, 1, 0, 0, 0, 398, 1536, 1, 0, 0, 0, 400, 1542, 1, 0, 0, 0, 402, 1548, 1, 0, 0, 0, 404, 1552, 1, 0, 0, 0, 406, 1556, 1, 0, 0, 0, 408, 1560, 1, 0, 0, 0, 410, 1566, 1, 0, 0, 0, 412, 1572, 1, 0, 0, 0, 414, 1578, 1, 0, 0, 0, 416, 1583, 1, 0, 0, 0, 418, 1588, 1, 0, 0, 0, 420, 1592, 1, 0, 0, 0, 422, 1596, 1, 0, 0, 0, 424, 1600, 1, 0, 0, 0, 426, 1604, 1, 0, 0, 0, 428, 1608, 1, 0, 0, 0, 430, 1612, 1, 0, 0, 0, 432, 1616, 1, 0, 0, 0, 434, 1620, 1, 0, 0, 0, 436, 1625, 1, 0, 0, 0, 438, 1629, 1, 0, 0, 0, 440, 1633, 1, 0, 0, 0, 442, 1637, 1, 0, 0, 0, 444, 1645, 1, 0, 0, 0, 446, 1666, 1, 0, 0, 0, 448, 1670, 1, 0, 0, 0, 450, 1674, 1, 0, 0, 0, 452, 1678, 1, 0, 0, 0, 454, 1682, 1, 0, 0, 0, 456, 1686, 1, 0, 0, 0, 458, 1691, 1, 0, 0, 0, 460, 1695, 1, 0, 0, 0, 462, 1699, 1, 0, 0, 0, 464, 1703, 1, 0, 0, 0, 466, 1707, 1, 0, 0, 0, 468, 1711, 1, 0, 0, 0, 470, 1714, 1, 0, 0, 0, 472, 1718, 1, 0, 0, 0, 474, 1722, 1, 0, 0, 0, 476, 1726, 1, 0, 0, 0, 478, 1730, 1, 0, 0, 0, 480, 1735, 1, 0, 0, 0, 482, 1740, 1, 0, 0, 0, 484, 1744, 1, 0, 0, 0, 486, 1748, 1, 0, 0, 0, 488, 489, 5, 47, 0, 0, 489, 490, 5, 47, 0, 0, 490, 494, 1, 0, 0, 0, 491, 493, 8, 0, 0, 0, 492, 491, 1, 0, 0, 0, 493, 496, 1, 0, 0, 0, 494, 492, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 498, 1, 0, 0, 0, 496, 494, 1, 0, 0, 0, 497, 499, 5, 13, 0, 0, 498, 497, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 501, 1, 0, 0, 0, 500, 502, 5, 10, 0, 0, 501, 500, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 504, 6, 0, 0, 0, 504, 19, 1, 0, 0, 0, 505, 506, 5, 47, 0, 0, 506, 507, 5, 42, 0, 0, 507, 512, 1, 0, 0, 0, 508, 511, 3, 20, 1, 0, 509, 511, 9, 0, 0, 0, 510, 508, 1, 0, 0, 0, 510, 509, 1, 0, 0, 0, 511, 514, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 512, 510, 1, 0, 0, 0, 513, 515, 1, 0, 0, 0, 514, 512, 1, 0, 0, 0, 515, 516, 5, 42, 0, 0, 516, 517, 5, 47, 0, 0, 517, 518, 1, 0, 0, 0, 518, 519, 6, 1, 0, 0, 519, 21, 1, 0, 0, 0, 520, 522, 7, 1, 0, 0, 521, 520, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 526, 6, 2, 0, 0, 526, 23, 1, 0, 0, 0, 527, 528, 4, 3, 0, 0, 528, 529, 7, 2, 0, 0, 529, 530, 7, 3, 0, 0, 530, 531, 7, 4, 0, 0, 531, 532, 7, 5, 0, 0, 532, 533, 7, 6, 0, 0, 533, 534, 7, 7, 0, 0, 534, 535, 5, 95, 0, 0, 535, 536, 7, 8, 0, 0, 536, 537, 7, 9, 0, 0, 537, 538, 7, 10, 0, 0, 538, 539, 7, 5, 0, 0, 539, 540, 7, 11, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 6, 3, 1, 0, 542, 25, 1, 0, 0, 0, 543, 544, 7, 7, 0, 0, 544, 545, 7, 5, 0, 0, 545, 546, 7, 12, 0, 0, 546, 547, 7, 10, 0, 0, 547, 548, 7, 2, 0, 0, 548, 549, 7, 3, 0, 0, 549, 550, 1, 0, 0, 0, 550, 551, 6, 4, 2, 0, 551, 27, 1, 0, 0, 0, 552, 553, 7, 7, 0, 0, 553, 554, 7, 13, 0, 0, 554, 555, 7, 8, 0, 0, 555, 556, 7, 14, 0, 0, 556, 557, 7, 4, 0, 0, 557, 558, 7, 10, 0, 0, 558, 559, 7, 5, 0, 0, 559, 560, 1, 0, 0, 0, 560, 561, 6, 5, 3, 0, 561, 29, 1, 0, 0, 0, 562, 563, 7, 15, 0, 0, 563, 564, 7, 10, 0, 0, 564, 565, 7, 16, 0, 0, 565, 566, 7, 16, 0, 0, 566, 567, 7, 7, 0, 0, 567, 568, 7, 2, 0, 0, 568, 569, 7, 11, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 6, 6, 4, 0, 571, 31, 1, 0, 0, 0, 572, 573, 7, 7, 0, 0, 573, 574, 7, 17, 0, 0, 574, 575, 7, 4, 0, 0, 575, 576, 7, 14, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 6, 7, 4, 0, 578, 33, 1, 0, 0, 0, 579, 580, 7, 6, 0, 0, 580, 581, 7, 12, 0, 0, 581, 582, 7, 9, 0, 0, 582, 583, 7, 18, 0, 0, 583, 584, 1, 0, 0, 0, 584, 585, 6, 8, 4, 0, 585, 35, 1, 0, 0, 0, 586, 587, 7, 14, 0, 0, 587, 588, 7, 10, 0, 0, 588, 589, 7, 19, 0, 0, 589, 590, 7, 10, 0, 0, 590, 591, 7, 11, 0, 0, 591, 592, 1, 0, 0, 0, 592, 593, 6, 9, 4, 0, 593, 37, 1, 0, 0, 0, 594, 595, 7, 12, 0, 0, 595, 596, 7, 9, 0, 0, 596, 597, 7, 20, 0, 0, 597, 598, 1, 0, 0, 0, 598, 599, 6, 10, 4, 0, 599, 39, 1, 0, 0, 0, 600, 601, 7, 16, 0, 0, 601, 602, 7, 9, 0, 0, 602, 603, 7, 12, 0, 0, 603, 604, 7, 11, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 6, 11, 4, 0, 606, 41, 1, 0, 0, 0, 607, 608, 7, 16, 0, 0, 608, 609, 7, 11, 0, 0, 609, 610, 7, 4, 0, 0, 610, 611, 7, 11, 0, 0, 611, 612, 7, 16, 0, 0, 612, 613, 1, 0, 0, 0, 613, 614, 6, 12, 4, 0, 614, 43, 1, 0, 0, 0, 615, 616, 7, 20, 0, 0, 616, 617, 7, 3, 0, 0, 617, 618, 7, 7, 0, 0, 618, 619, 7, 12, 0, 0, 619, 620, 7, 7, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 6, 13, 4, 0, 622, 45, 1, 0, 0, 0, 623, 624, 4, 14, 1, 0, 624, 625, 7, 10, 0, 0, 625, 626, 7, 5, 0, 0, 626, 627, 7, 14, 0, 0, 627, 628, 7, 10, 0, 0, 628, 629, 7, 5, 0, 0, 629, 630, 7, 7, 0, 0, 630, 631, 7, 16, 0, 0, 631, 632, 7, 11, 0, 0, 632, 633, 7, 4, 0, 0, 633, 634, 7, 11, 0, 0, 634, 635, 7, 16, 0, 0, 635, 636, 1, 0, 0, 0, 636, 637, 6, 14, 4, 0, 637, 47, 1, 0, 0, 0, 638, 639, 7, 21, 0, 0, 639, 640, 7, 12, 0, 0, 640, 641, 7, 9, 0, 0, 641, 642, 7, 19, 0, 0, 642, 643, 1, 0, 0, 0, 643, 644, 6, 15, 5, 0, 644, 49, 1, 0, 0, 0, 645, 646, 4, 16, 2, 0, 646, 647, 7, 21, 0, 0, 647, 648, 7, 9, 0, 0, 648, 649, 7, 12, 0, 0, 649, 650, 7, 18, 0, 0, 650, 651, 1, 0, 0, 0, 651, 652, 6, 16, 6, 0, 652, 51, 1, 0, 0, 0, 653, 654, 7, 14, 0, 0, 654, 655, 7, 9, 0, 0, 655, 656, 7, 9, 0, 0, 656, 657, 7, 18, 0, 0, 657, 658, 7, 22, 0, 0, 658, 659, 7, 8, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 6, 17, 7, 0, 661, 53, 1, 0, 0, 0, 662, 663, 4, 18, 3, 0, 663, 664, 7, 21, 0, 0, 664, 665, 7, 22, 0, 0, 665, 666, 7, 14, 0, 0, 666, 667, 7, 14, 0, 0, 667, 668, 1, 0, 0, 0, 668, 669, 6, 18, 7, 0, 669, 55, 1, 0, 0, 0, 670, 671, 4, 19, 4, 0, 671, 672, 7, 14, 0, 0, 672, 673, 7, 7, 0, 0, 673, 674, 7, 21, 0, 0, 674, 675, 7, 11, 0, 0, 675, 676, 1, 0, 0, 0, 676, 677, 6, 19, 7, 0, 677, 57, 1, 0, 0, 0, 678, 679, 4, 20, 5, 0, 679, 680, 7, 12, 0, 0, 680, 681, 7, 10, 0, 0, 681, 682, 7, 6, 0, 0, 682, 683, 7, 3, 0, 0, 683, 684, 7, 11, 0, 0, 684, 685, 1, 0, 0, 0, 685, 686, 6, 20, 7, 0, 686, 59, 1, 0, 0, 0, 687, 688, 4, 21, 6, 0, 688, 689, 7, 14, 0, 0, 689, 690, 7, 9, 0, 0, 690, 691, 7, 9, 0, 0, 691, 692, 7, 18, 0, 0, 692, 693, 7, 22, 0, 0, 693, 694, 7, 8, 0, 0, 694, 695, 5, 95, 0, 0, 695, 696, 5, 128020, 0, 0, 696, 697, 1, 0, 0, 0, 697, 698, 6, 21, 8, 0, 698, 61, 1, 0, 0, 0, 699, 700, 4, 22, 7, 0, 700, 701, 7, 19, 0, 0, 701, 702, 7, 7, 0, 0, 702, 703, 7, 11, 0, 0, 703, 704, 7, 12, 0, 0, 704, 705, 7, 10, 0, 0, 705, 706, 7, 2, 0, 0, 706, 707, 7, 16, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 6, 22, 9, 0, 709, 63, 1, 0, 0, 0, 710, 711, 7, 19, 0, 0, 711, 712, 7, 17, 0, 0, 712, 713, 5, 95, 0, 0, 713, 714, 7, 7, 0, 0, 714, 715, 7, 13, 0, 0, 715, 716, 7, 8, 0, 0, 716, 717, 7, 4, 0, 0, 717, 718, 7, 5, 0, 0, 718, 719, 7, 15, 0, 0, 719, 720, 1, 0, 0, 0, 720, 721, 6, 23, 10, 0, 721, 65, 1, 0, 0, 0, 722, 723, 7, 15, 0, 0, 723, 724, 7, 12, 0, 0, 724, 725, 7, 9, 0, 0, 725, 726, 7, 8, 0, 0, 726, 727, 1, 0, 0, 0, 727, 728, 6, 24, 11, 0, 728, 67, 1, 0, 0, 0, 729, 730, 7, 18, 0, 0, 730, 731, 7, 7, 0, 0, 731, 732, 7, 7, 0, 0, 732, 733, 7, 8, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 6, 25, 11, 0, 735, 69, 1, 0, 0, 0, 736, 737, 4, 26, 8, 0, 737, 738, 7, 10, 0, 0, 738, 739, 7, 5, 0, 0, 739, 740, 7, 16, 0, 0, 740, 741, 7, 10, 0, 0, 741, 742, 7, 16, 0, 0, 742, 743, 7, 11, 0, 0, 743, 744, 5, 95, 0, 0, 744, 745, 5, 128020, 0, 0, 745, 746, 1, 0, 0, 0, 746, 747, 6, 26, 11, 0, 747, 71, 1, 0, 0, 0, 748, 749, 7, 12, 0, 0, 749, 750, 7, 7, 0, 0, 750, 751, 7, 5, 0, 0, 751, 752, 7, 4, 0, 0, 752, 753, 7, 19, 0, 0, 753, 754, 7, 7, 0, 0, 754, 755, 1, 0, 0, 0, 755, 756, 6, 27, 12, 0, 756, 73, 1, 0, 0, 0, 757, 758, 7, 16, 0, 0, 758, 759, 7, 3, 0, 0, 759, 760, 7, 9, 0, 0, 760, 761, 7, 20, 0, 0, 761, 762, 1, 0, 0, 0, 762, 763, 6, 28, 13, 0, 763, 75, 1, 0, 0, 0, 764, 766, 8, 23, 0, 0, 765, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 765, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 770, 6, 29, 4, 0, 770, 77, 1, 0, 0, 0, 771, 772, 3, 164, 73, 0, 772, 773, 1, 0, 0, 0, 773, 774, 6, 30, 14, 0, 774, 775, 6, 30, 15, 0, 775, 79, 1, 0, 0, 0, 776, 777, 3, 102, 42, 0, 777, 778, 1, 0, 0, 0, 778, 779, 6, 31, 16, 0, 779, 81, 1, 0, 0, 0, 780, 781, 3, 468, 225, 0, 781, 782, 1, 0, 0, 0, 782, 783, 6, 32, 17, 0, 783, 83, 1, 0, 0, 0, 784, 785, 3, 208, 95, 0, 785, 786, 1, 0, 0, 0, 786, 787, 6, 33, 18, 0, 787, 85, 1, 0, 0, 0, 788, 789, 3, 204, 93, 0, 789, 790, 1, 0, 0, 0, 790, 791, 6, 34, 19, 0, 791, 87, 1, 0, 0, 0, 792, 793, 3, 280, 131, 0, 793, 794, 1, 0, 0, 0, 794, 795, 6, 35, 20, 0, 795, 89, 1, 0, 0, 0, 796, 797, 3, 276, 129, 0, 797, 798, 1, 0, 0, 0, 798, 799, 6, 36, 21, 0, 799, 91, 1, 0, 0, 0, 800, 801, 3, 18, 0, 0, 801, 802, 1, 0, 0, 0, 802, 803, 6, 37, 0, 0, 803, 93, 1, 0, 0, 0, 804, 805, 3, 20, 1, 0, 805, 806, 1, 0, 0, 0, 806, 807, 6, 38, 0, 0, 807, 95, 1, 0, 0, 0, 808, 809, 3, 22, 2, 0, 809, 810, 1, 0, 0, 0, 810, 811, 6, 39, 0, 0, 811, 97, 1, 0, 0, 0, 812, 813, 3, 164, 73, 0, 813, 814, 1, 0, 0, 0, 814, 815, 6, 40, 14, 0, 815, 816, 6, 40, 15, 0, 816, 99, 1, 0, 0, 0, 817, 818, 3, 268, 125, 0, 818, 819, 1, 0, 0, 0, 819, 820, 6, 41, 22, 0, 820, 821, 6, 41, 23, 0, 821, 101, 1, 0, 0, 0, 822, 823, 7, 9, 0, 0, 823, 824, 7, 5, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 6, 42, 24, 0, 826, 103, 1, 0, 0, 0, 827, 828, 7, 20, 0, 0, 828, 829, 7, 10, 0, 0, 829, 830, 7, 11, 0, 0, 830, 831, 7, 3, 0, 0, 831, 832, 1, 0, 0, 0, 832, 833, 6, 43, 24, 0, 833, 105, 1, 0, 0, 0, 834, 835, 8, 24, 0, 0, 835, 107, 1, 0, 0, 0, 836, 838, 3, 106, 44, 0, 837, 836, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 837, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 842, 3, 202, 92, 0, 842, 844, 1, 0, 0, 0, 843, 837, 1, 0, 0, 0, 843, 844, 1, 0, 0, 0, 844, 846, 1, 0, 0, 0, 845, 847, 3, 106, 44, 0, 846, 845, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 846, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 109, 1, 0, 0, 0, 850, 851, 3, 108, 45, 0, 851, 852, 1, 0, 0, 0, 852, 853, 6, 46, 25, 0, 853, 111, 1, 0, 0, 0, 854, 855, 3, 18, 0, 0, 855, 856, 1, 0, 0, 0, 856, 857, 6, 47, 0, 0, 857, 113, 1, 0, 0, 0, 858, 859, 3, 20, 1, 0, 859, 860, 1, 0, 0, 0, 860, 861, 6, 48, 0, 0, 861, 115, 1, 0, 0, 0, 862, 863, 3, 22, 2, 0, 863, 864, 1, 0, 0, 0, 864, 865, 6, 49, 0, 0, 865, 117, 1, 0, 0, 0, 866, 867, 3, 164, 73, 0, 867, 868, 1, 0, 0, 0, 868, 869, 6, 50, 14, 0, 869, 870, 6, 50, 15, 0, 870, 871, 6, 50, 15, 0, 871, 119, 1, 0, 0, 0, 872, 873, 3, 198, 90, 0, 873, 874, 1, 0, 0, 0, 874, 875, 6, 51, 26, 0, 875, 121, 1, 0, 0, 0, 876, 877, 3, 204, 93, 0, 877, 878, 1, 0, 0, 0, 878, 879, 6, 52, 19, 0, 879, 123, 1, 0, 0, 0, 880, 881, 3, 208, 95, 0, 881, 882, 1, 0, 0, 0, 882, 883, 6, 53, 18, 0, 883, 125, 1, 0, 0, 0, 884, 885, 3, 104, 43, 0, 885, 886, 1, 0, 0, 0, 886, 887, 6, 54, 27, 0, 887, 127, 1, 0, 0, 0, 888, 889, 3, 448, 215, 0, 889, 890, 1, 0, 0, 0, 890, 891, 6, 55, 28, 0, 891, 129, 1, 0, 0, 0, 892, 893, 3, 280, 131, 0, 893, 894, 1, 0, 0, 0, 894, 895, 6, 56, 20, 0, 895, 131, 1, 0, 0, 0, 896, 897, 3, 230, 106, 0, 897, 898, 1, 0, 0, 0, 898, 899, 6, 57, 29, 0, 899, 133, 1, 0, 0, 0, 900, 901, 3, 266, 124, 0, 901, 902, 1, 0, 0, 0, 902, 903, 6, 58, 30, 0, 903, 135, 1, 0, 0, 0, 904, 905, 3, 18, 0, 0, 905, 906, 1, 0, 0, 0, 906, 907, 6, 59, 0, 0, 907, 137, 1, 0, 0, 0, 908, 909, 3, 20, 1, 0, 909, 910, 1, 0, 0, 0, 910, 911, 6, 60, 0, 0, 911, 139, 1, 0, 0, 0, 912, 913, 3, 22, 2, 0, 913, 914, 1, 0, 0, 0, 914, 915, 6, 61, 0, 0, 915, 141, 1, 0, 0, 0, 916, 917, 3, 270, 126, 0, 917, 918, 1, 0, 0, 0, 918, 919, 6, 62, 31, 0, 919, 920, 6, 62, 15, 0, 920, 143, 1, 0, 0, 0, 921, 922, 3, 202, 92, 0, 922, 923, 1, 0, 0, 0, 923, 924, 6, 63, 32, 0, 924, 145, 1, 0, 0, 0, 925, 931, 3, 176, 79, 0, 926, 931, 3, 166, 74, 0, 927, 931, 3, 208, 95, 0, 928, 931, 3, 168, 75, 0, 929, 931, 3, 182, 82, 0, 930, 925, 1, 0, 0, 0, 930, 926, 1, 0, 0, 0, 930, 927, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 930, 929, 1, 0, 0, 0, 931, 932, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 147, 1, 0, 0, 0, 934, 935, 3, 18, 0, 0, 935, 936, 1, 0, 0, 0, 936, 937, 6, 65, 0, 0, 937, 149, 1, 0, 0, 0, 938, 939, 3, 20, 1, 0, 939, 940, 1, 0, 0, 0, 940, 941, 6, 66, 0, 0, 941, 151, 1, 0, 0, 0, 942, 943, 3, 22, 2, 0, 943, 944, 1, 0, 0, 0, 944, 945, 6, 67, 0, 0, 945, 153, 1, 0, 0, 0, 946, 947, 3, 268, 125, 0, 947, 948, 1, 0, 0, 0, 948, 949, 6, 68, 22, 0, 949, 950, 6, 68, 33, 0, 950, 155, 1, 0, 0, 0, 951, 952, 3, 164, 73, 0, 952, 953, 1, 0, 0, 0, 953, 954, 6, 69, 14, 0, 954, 955, 6, 69, 15, 0, 955, 157, 1, 0, 0, 0, 956, 957, 3, 22, 2, 0, 957, 958, 1, 0, 0, 0, 958, 959, 6, 70, 0, 0, 959, 159, 1, 0, 0, 0, 960, 961, 3, 18, 0, 0, 961, 962, 1, 0, 0, 0, 962, 963, 6, 71, 0, 0, 963, 161, 1, 0, 0, 0, 964, 965, 3, 20, 1, 0, 965, 966, 1, 0, 0, 0, 966, 967, 6, 72, 0, 0, 967, 163, 1, 0, 0, 0, 968, 969, 5, 124, 0, 0, 969, 970, 1, 0, 0, 0, 970, 971, 6, 73, 15, 0, 971, 165, 1, 0, 0, 0, 972, 973, 7, 25, 0, 0, 973, 167, 1, 0, 0, 0, 974, 975, 7, 26, 0, 0, 975, 169, 1, 0, 0, 0, 976, 977, 5, 92, 0, 0, 977, 978, 7, 27, 0, 0, 978, 171, 1, 0, 0, 0, 979, 980, 8, 28, 0, 0, 980, 173, 1, 0, 0, 0, 981, 983, 7, 7, 0, 0, 982, 984, 7, 29, 0, 0, 983, 982, 1, 0, 0, 0, 983, 984, 1, 0, 0, 0, 984, 986, 1, 0, 0, 0, 985, 987, 3, 166, 74, 0, 986, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 986, 1, 0, 0, 0, 988, 989, 1, 0, 0, 0, 989, 175, 1, 0, 0, 0, 990, 991, 5, 64, 0, 0, 991, 177, 1, 0, 0, 0, 992, 993, 5, 96, 0, 0, 993, 179, 1, 0, 0, 0, 994, 998, 8, 30, 0, 0, 995, 996, 5, 96, 0, 0, 996, 998, 5, 96, 0, 0, 997, 994, 1, 0, 0, 0, 997, 995, 1, 0, 0, 0, 998, 181, 1, 0, 0, 0, 999, 1000, 5, 95, 0, 0, 1000, 183, 1, 0, 0, 0, 1001, 1005, 3, 168, 75, 0, 1002, 1005, 3, 166, 74, 0, 1003, 1005, 3, 182, 82, 0, 1004, 1001, 1, 0, 0, 0, 1004, 1002, 1, 0, 0, 0, 1004, 1003, 1, 0, 0, 0, 1005, 185, 1, 0, 0, 0, 1006, 1011, 5, 34, 0, 0, 1007, 1010, 3, 170, 76, 0, 1008, 1010, 3, 172, 77, 0, 1009, 1007, 1, 0, 0, 0, 1009, 1008, 1, 0, 0, 0, 1010, 1013, 1, 0, 0, 0, 1011, 1009, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1014, 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1014, 1036, 5, 34, 0, 0, 1015, 1016, 5, 34, 0, 0, 1016, 1017, 5, 34, 0, 0, 1017, 1018, 5, 34, 0, 0, 1018, 1022, 1, 0, 0, 0, 1019, 1021, 8, 0, 0, 0, 1020, 1019, 1, 0, 0, 0, 1021, 1024, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1022, 1020, 1, 0, 0, 0, 1023, 1025, 1, 0, 0, 0, 1024, 1022, 1, 0, 0, 0, 1025, 1026, 5, 34, 0, 0, 1026, 1027, 5, 34, 0, 0, 1027, 1028, 5, 34, 0, 0, 1028, 1030, 1, 0, 0, 0, 1029, 1031, 5, 34, 0, 0, 1030, 1029, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1033, 1, 0, 0, 0, 1032, 1034, 5, 34, 0, 0, 1033, 1032, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1036, 1, 0, 0, 0, 1035, 1006, 1, 0, 0, 0, 1035, 1015, 1, 0, 0, 0, 1036, 187, 1, 0, 0, 0, 1037, 1039, 3, 166, 74, 0, 1038, 1037, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1038, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 189, 1, 0, 0, 0, 1042, 1044, 3, 166, 74, 0, 1043, 1042, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1043, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1051, 3, 208, 95, 0, 1048, 1050, 3, 166, 74, 0, 1049, 1048, 1, 0, 0, 0, 1050, 1053, 1, 0, 0, 0, 1051, 1049, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1085, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1054, 1056, 3, 208, 95, 0, 1055, 1057, 3, 166, 74, 0, 1056, 1055, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1056, 1, 0, 0, 0, 1058, 1059, 1, 0, 0, 0, 1059, 1085, 1, 0, 0, 0, 1060, 1062, 3, 166, 74, 0, 1061, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1061, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1072, 1, 0, 0, 0, 1065, 1069, 3, 208, 95, 0, 1066, 1068, 3, 166, 74, 0, 1067, 1066, 1, 0, 0, 0, 1068, 1071, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1073, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1072, 1065, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1074, 1, 0, 0, 0, 1074, 1075, 3, 174, 78, 0, 1075, 1085, 1, 0, 0, 0, 1076, 1078, 3, 208, 95, 0, 1077, 1079, 3, 166, 74, 0, 1078, 1077, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1078, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, 1, 0, 0, 0, 1082, 1083, 3, 174, 78, 0, 1083, 1085, 1, 0, 0, 0, 1084, 1043, 1, 0, 0, 0, 1084, 1054, 1, 0, 0, 0, 1084, 1061, 1, 0, 0, 0, 1084, 1076, 1, 0, 0, 0, 1085, 191, 1, 0, 0, 0, 1086, 1087, 7, 31, 0, 0, 1087, 1088, 7, 32, 0, 0, 1088, 193, 1, 0, 0, 0, 1089, 1090, 7, 4, 0, 0, 1090, 1091, 7, 5, 0, 0, 1091, 1092, 7, 15, 0, 0, 1092, 195, 1, 0, 0, 0, 1093, 1094, 7, 4, 0, 0, 1094, 1095, 7, 16, 0, 0, 1095, 1096, 7, 2, 0, 0, 1096, 197, 1, 0, 0, 0, 1097, 1098, 5, 61, 0, 0, 1098, 199, 1, 0, 0, 0, 1099, 1100, 5, 58, 0, 0, 1100, 1101, 5, 58, 0, 0, 1101, 201, 1, 0, 0, 0, 1102, 1103, 5, 58, 0, 0, 1103, 203, 1, 0, 0, 0, 1104, 1105, 5, 44, 0, 0, 1105, 205, 1, 0, 0, 0, 1106, 1107, 7, 15, 0, 0, 1107, 1108, 7, 7, 0, 0, 1108, 1109, 7, 16, 0, 0, 1109, 1110, 7, 2, 0, 0, 1110, 207, 1, 0, 0, 0, 1111, 1112, 5, 46, 0, 0, 1112, 209, 1, 0, 0, 0, 1113, 1114, 7, 21, 0, 0, 1114, 1115, 7, 4, 0, 0, 1115, 1116, 7, 14, 0, 0, 1116, 1117, 7, 16, 0, 0, 1117, 1118, 7, 7, 0, 0, 1118, 211, 1, 0, 0, 0, 1119, 1120, 7, 21, 0, 0, 1120, 1121, 7, 10, 0, 0, 1121, 1122, 7, 12, 0, 0, 1122, 1123, 7, 16, 0, 0, 1123, 1124, 7, 11, 0, 0, 1124, 213, 1, 0, 0, 0, 1125, 1126, 7, 10, 0, 0, 1126, 1127, 7, 5, 0, 0, 1127, 215, 1, 0, 0, 0, 1128, 1129, 7, 10, 0, 0, 1129, 1130, 7, 16, 0, 0, 1130, 217, 1, 0, 0, 0, 1131, 1132, 7, 14, 0, 0, 1132, 1133, 7, 4, 0, 0, 1133, 1134, 7, 16, 0, 0, 1134, 1135, 7, 11, 0, 0, 1135, 219, 1, 0, 0, 0, 1136, 1137, 7, 14, 0, 0, 1137, 1138, 7, 10, 0, 0, 1138, 1139, 7, 18, 0, 0, 1139, 1140, 7, 7, 0, 0, 1140, 221, 1, 0, 0, 0, 1141, 1142, 7, 5, 0, 0, 1142, 1143, 7, 9, 0, 0, 1143, 1144, 7, 11, 0, 0, 1144, 223, 1, 0, 0, 0, 1145, 1146, 7, 5, 0, 0, 1146, 1147, 7, 22, 0, 0, 1147, 1148, 7, 14, 0, 0, 1148, 1149, 7, 14, 0, 0, 1149, 225, 1, 0, 0, 0, 1150, 1151, 7, 5, 0, 0, 1151, 1152, 7, 22, 0, 0, 1152, 1153, 7, 14, 0, 0, 1153, 1154, 7, 14, 0, 0, 1154, 1155, 7, 16, 0, 0, 1155, 227, 1, 0, 0, 0, 1156, 1157, 7, 9, 0, 0, 1157, 1158, 7, 12, 0, 0, 1158, 229, 1, 0, 0, 0, 1159, 1160, 5, 63, 0, 0, 1160, 231, 1, 0, 0, 0, 1161, 1162, 7, 12, 0, 0, 1162, 1163, 7, 14, 0, 0, 1163, 1164, 7, 10, 0, 0, 1164, 1165, 7, 18, 0, 0, 1165, 1166, 7, 7, 0, 0, 1166, 233, 1, 0, 0, 0, 1167, 1168, 7, 11, 0, 0, 1168, 1169, 7, 12, 0, 0, 1169, 1170, 7, 22, 0, 0, 1170, 1171, 7, 7, 0, 0, 1171, 235, 1, 0, 0, 0, 1172, 1173, 5, 61, 0, 0, 1173, 1174, 5, 61, 0, 0, 1174, 237, 1, 0, 0, 0, 1175, 1176, 5, 61, 0, 0, 1176, 1177, 5, 126, 0, 0, 1177, 239, 1, 0, 0, 0, 1178, 1179, 5, 33, 0, 0, 1179, 1180, 5, 61, 0, 0, 1180, 241, 1, 0, 0, 0, 1181, 1182, 5, 60, 0, 0, 1182, 243, 1, 0, 0, 0, 1183, 1184, 5, 60, 0, 0, 1184, 1185, 5, 61, 0, 0, 1185, 245, 1, 0, 0, 0, 1186, 1187, 5, 62, 0, 0, 1187, 247, 1, 0, 0, 0, 1188, 1189, 5, 62, 0, 0, 1189, 1190, 5, 61, 0, 0, 1190, 249, 1, 0, 0, 0, 1191, 1192, 5, 43, 0, 0, 1192, 251, 1, 0, 0, 0, 1193, 1194, 5, 45, 0, 0, 1194, 253, 1, 0, 0, 0, 1195, 1196, 5, 42, 0, 0, 1196, 255, 1, 0, 0, 0, 1197, 1198, 5, 47, 0, 0, 1198, 257, 1, 0, 0, 0, 1199, 1200, 5, 37, 0, 0, 1200, 259, 1, 0, 0, 0, 1201, 1202, 5, 123, 0, 0, 1202, 261, 1, 0, 0, 0, 1203, 1204, 5, 125, 0, 0, 1204, 263, 1, 0, 0, 0, 1205, 1206, 3, 44, 13, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1208, 6, 123, 34, 0, 1208, 265, 1, 0, 0, 0, 1209, 1212, 3, 230, 106, 0, 1210, 1213, 3, 168, 75, 0, 1211, 1213, 3, 182, 82, 0, 1212, 1210, 1, 0, 0, 0, 1212, 1211, 1, 0, 0, 0, 1213, 1217, 1, 0, 0, 0, 1214, 1216, 3, 184, 83, 0, 1215, 1214, 1, 0, 0, 0, 1216, 1219, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1227, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1222, 3, 230, 106, 0, 1221, 1223, 3, 166, 74, 0, 1222, 1221, 1, 0, 0, 0, 1223, 1224, 1, 0, 0, 0, 1224, 1222, 1, 0, 0, 0, 1224, 1225, 1, 0, 0, 0, 1225, 1227, 1, 0, 0, 0, 1226, 1209, 1, 0, 0, 0, 1226, 1220, 1, 0, 0, 0, 1227, 267, 1, 0, 0, 0, 1228, 1229, 5, 91, 0, 0, 1229, 1230, 1, 0, 0, 0, 1230, 1231, 6, 125, 4, 0, 1231, 1232, 6, 125, 4, 0, 1232, 269, 1, 0, 0, 0, 1233, 1234, 5, 93, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1236, 6, 126, 15, 0, 1236, 1237, 6, 126, 15, 0, 1237, 271, 1, 0, 0, 0, 1238, 1239, 5, 40, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1241, 6, 127, 4, 0, 1241, 1242, 6, 127, 4, 0, 1242, 273, 1, 0, 0, 0, 1243, 1244, 5, 41, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1246, 6, 128, 15, 0, 1246, 1247, 6, 128, 15, 0, 1247, 275, 1, 0, 0, 0, 1248, 1252, 3, 168, 75, 0, 1249, 1251, 3, 184, 83, 0, 1250, 1249, 1, 0, 0, 0, 1251, 1254, 1, 0, 0, 0, 1252, 1250, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1265, 1, 0, 0, 0, 1254, 1252, 1, 0, 0, 0, 1255, 1258, 3, 182, 82, 0, 1256, 1258, 3, 176, 79, 0, 1257, 1255, 1, 0, 0, 0, 1257, 1256, 1, 0, 0, 0, 1258, 1260, 1, 0, 0, 0, 1259, 1261, 3, 184, 83, 0, 1260, 1259, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1260, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1265, 1, 0, 0, 0, 1264, 1248, 1, 0, 0, 0, 1264, 1257, 1, 0, 0, 0, 1265, 277, 1, 0, 0, 0, 1266, 1268, 3, 178, 80, 0, 1267, 1269, 3, 180, 81, 0, 1268, 1267, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1268, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1273, 3, 178, 80, 0, 1273, 279, 1, 0, 0, 0, 1274, 1275, 3, 278, 130, 0, 1275, 281, 1, 0, 0, 0, 1276, 1277, 3, 18, 0, 0, 1277, 1278, 1, 0, 0, 0, 1278, 1279, 6, 132, 0, 0, 1279, 283, 1, 0, 0, 0, 1280, 1281, 3, 20, 1, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1283, 6, 133, 0, 0, 1283, 285, 1, 0, 0, 0, 1284, 1285, 3, 22, 2, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1287, 6, 134, 0, 0, 1287, 287, 1, 0, 0, 0, 1288, 1289, 3, 164, 73, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 6, 135, 14, 0, 1291, 1292, 6, 135, 15, 0, 1292, 289, 1, 0, 0, 0, 1293, 1294, 3, 268, 125, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1296, 6, 136, 22, 0, 1296, 291, 1, 0, 0, 0, 1297, 1298, 3, 270, 126, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 6, 137, 31, 0, 1300, 293, 1, 0, 0, 0, 1301, 1302, 3, 202, 92, 0, 1302, 1303, 1, 0, 0, 0, 1303, 1304, 6, 138, 32, 0, 1304, 295, 1, 0, 0, 0, 1305, 1306, 3, 204, 93, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1308, 6, 139, 19, 0, 1308, 297, 1, 0, 0, 0, 1309, 1310, 3, 198, 90, 0, 1310, 1311, 1, 0, 0, 0, 1311, 1312, 6, 140, 26, 0, 1312, 299, 1, 0, 0, 0, 1313, 1314, 7, 19, 0, 0, 1314, 1315, 7, 7, 0, 0, 1315, 1316, 7, 11, 0, 0, 1316, 1317, 7, 4, 0, 0, 1317, 1318, 7, 15, 0, 0, 1318, 1319, 7, 4, 0, 0, 1319, 1320, 7, 11, 0, 0, 1320, 1321, 7, 4, 0, 0, 1321, 301, 1, 0, 0, 0, 1322, 1326, 8, 33, 0, 0, 1323, 1324, 5, 47, 0, 0, 1324, 1326, 8, 34, 0, 0, 1325, 1322, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, 0, 1326, 303, 1, 0, 0, 0, 1327, 1329, 3, 302, 142, 0, 1328, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 305, 1, 0, 0, 0, 1332, 1333, 3, 304, 143, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1335, 6, 144, 35, 0, 1335, 307, 1, 0, 0, 0, 1336, 1337, 3, 186, 84, 0, 1337, 1338, 1, 0, 0, 0, 1338, 1339, 6, 145, 36, 0, 1339, 309, 1, 0, 0, 0, 1340, 1341, 3, 18, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1343, 6, 146, 0, 0, 1343, 311, 1, 0, 0, 0, 1344, 1345, 3, 20, 1, 0, 1345, 1346, 1, 0, 0, 0, 1346, 1347, 6, 147, 0, 0, 1347, 313, 1, 0, 0, 0, 1348, 1349, 3, 22, 2, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1351, 6, 148, 0, 0, 1351, 315, 1, 0, 0, 0, 1352, 1353, 3, 272, 127, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1355, 6, 149, 37, 0, 1355, 1356, 6, 149, 33, 0, 1356, 317, 1, 0, 0, 0, 1357, 1358, 3, 164, 73, 0, 1358, 1359, 1, 0, 0, 0, 1359, 1360, 6, 150, 14, 0, 1360, 1361, 6, 150, 15, 0, 1361, 319, 1, 0, 0, 0, 1362, 1363, 3, 22, 2, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1365, 6, 151, 0, 0, 1365, 321, 1, 0, 0, 0, 1366, 1367, 3, 18, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1369, 6, 152, 0, 0, 1369, 323, 1, 0, 0, 0, 1370, 1371, 3, 20, 1, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 6, 153, 0, 0, 1373, 325, 1, 0, 0, 0, 1374, 1375, 3, 164, 73, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, 6, 154, 14, 0, 1377, 1378, 6, 154, 15, 0, 1378, 327, 1, 0, 0, 0, 1379, 1380, 7, 35, 0, 0, 1380, 1381, 7, 9, 0, 0, 1381, 1382, 7, 10, 0, 0, 1382, 1383, 7, 5, 0, 0, 1383, 329, 1, 0, 0, 0, 1384, 1385, 3, 468, 225, 0, 1385, 1386, 1, 0, 0, 0, 1386, 1387, 6, 156, 17, 0, 1387, 331, 1, 0, 0, 0, 1388, 1389, 3, 102, 42, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1391, 6, 157, 16, 0, 1391, 1392, 6, 157, 15, 0, 1392, 1393, 6, 157, 4, 0, 1393, 333, 1, 0, 0, 0, 1394, 1395, 7, 22, 0, 0, 1395, 1396, 7, 16, 0, 0, 1396, 1397, 7, 10, 0, 0, 1397, 1398, 7, 5, 0, 0, 1398, 1399, 7, 6, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1401, 6, 158, 15, 0, 1401, 1402, 6, 158, 4, 0, 1402, 335, 1, 0, 0, 0, 1403, 1404, 3, 304, 143, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 6, 159, 35, 0, 1406, 337, 1, 0, 0, 0, 1407, 1408, 3, 186, 84, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1410, 6, 160, 36, 0, 1410, 339, 1, 0, 0, 0, 1411, 1412, 3, 202, 92, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1414, 6, 161, 32, 0, 1414, 341, 1, 0, 0, 0, 1415, 1416, 3, 276, 129, 0, 1416, 1417, 1, 0, 0, 0, 1417, 1418, 6, 162, 21, 0, 1418, 343, 1, 0, 0, 0, 1419, 1420, 3, 280, 131, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 6, 163, 20, 0, 1422, 345, 1, 0, 0, 0, 1423, 1424, 3, 18, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 164, 0, 0, 1426, 347, 1, 0, 0, 0, 1427, 1428, 3, 20, 1, 0, 1428, 1429, 1, 0, 0, 0, 1429, 1430, 6, 165, 0, 0, 1430, 349, 1, 0, 0, 0, 1431, 1432, 3, 22, 2, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1434, 6, 166, 0, 0, 1434, 351, 1, 0, 0, 0, 1435, 1436, 3, 164, 73, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1438, 6, 167, 14, 0, 1438, 1439, 6, 167, 15, 0, 1439, 353, 1, 0, 0, 0, 1440, 1441, 3, 202, 92, 0, 1441, 1442, 1, 0, 0, 0, 1442, 1443, 6, 168, 32, 0, 1443, 355, 1, 0, 0, 0, 1444, 1445, 3, 204, 93, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1447, 6, 169, 19, 0, 1447, 357, 1, 0, 0, 0, 1448, 1449, 3, 208, 95, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1451, 6, 170, 18, 0, 1451, 359, 1, 0, 0, 0, 1452, 1453, 3, 102, 42, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 6, 171, 16, 0, 1455, 1456, 6, 171, 38, 0, 1456, 361, 1, 0, 0, 0, 1457, 1458, 3, 304, 143, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 6, 172, 35, 0, 1460, 363, 1, 0, 0, 0, 1461, 1462, 3, 186, 84, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1464, 6, 173, 36, 0, 1464, 365, 1, 0, 0, 0, 1465, 1466, 3, 18, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 6, 174, 0, 0, 1468, 367, 1, 0, 0, 0, 1469, 1470, 3, 20, 1, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1472, 6, 175, 0, 0, 1472, 369, 1, 0, 0, 0, 1473, 1474, 3, 22, 2, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1476, 6, 176, 0, 0, 1476, 371, 1, 0, 0, 0, 1477, 1478, 3, 164, 73, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1480, 6, 177, 14, 0, 1480, 1481, 6, 177, 15, 0, 1481, 1482, 6, 177, 15, 0, 1482, 373, 1, 0, 0, 0, 1483, 1484, 3, 204, 93, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1486, 6, 178, 19, 0, 1486, 375, 1, 0, 0, 0, 1487, 1488, 3, 208, 95, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1490, 6, 179, 18, 0, 1490, 377, 1, 0, 0, 0, 1491, 1492, 3, 448, 215, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1494, 6, 180, 28, 0, 1494, 379, 1, 0, 0, 0, 1495, 1496, 3, 18, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1498, 6, 181, 0, 0, 1498, 381, 1, 0, 0, 0, 1499, 1500, 3, 20, 1, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1502, 6, 182, 0, 0, 1502, 383, 1, 0, 0, 0, 1503, 1504, 3, 22, 2, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1506, 6, 183, 0, 0, 1506, 385, 1, 0, 0, 0, 1507, 1508, 3, 164, 73, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 6, 184, 14, 0, 1510, 1511, 6, 184, 15, 0, 1511, 387, 1, 0, 0, 0, 1512, 1513, 3, 304, 143, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1515, 6, 185, 35, 0, 1515, 1516, 6, 185, 15, 0, 1516, 1517, 6, 185, 39, 0, 1517, 389, 1, 0, 0, 0, 1518, 1519, 3, 186, 84, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1521, 6, 186, 36, 0, 1521, 1522, 6, 186, 15, 0, 1522, 1523, 6, 186, 39, 0, 1523, 391, 1, 0, 0, 0, 1524, 1525, 3, 18, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1527, 6, 187, 0, 0, 1527, 393, 1, 0, 0, 0, 1528, 1529, 3, 20, 1, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 6, 188, 0, 0, 1531, 395, 1, 0, 0, 0, 1532, 1533, 3, 22, 2, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1535, 6, 189, 0, 0, 1535, 397, 1, 0, 0, 0, 1536, 1537, 3, 202, 92, 0, 1537, 1538, 1, 0, 0, 0, 1538, 1539, 6, 190, 32, 0, 1539, 1540, 6, 190, 15, 0, 1540, 1541, 6, 190, 9, 0, 1541, 399, 1, 0, 0, 0, 1542, 1543, 3, 204, 93, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1545, 6, 191, 19, 0, 1545, 1546, 6, 191, 15, 0, 1546, 1547, 6, 191, 9, 0, 1547, 401, 1, 0, 0, 0, 1548, 1549, 3, 18, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1551, 6, 192, 0, 0, 1551, 403, 1, 0, 0, 0, 1552, 1553, 3, 20, 1, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1555, 6, 193, 0, 0, 1555, 405, 1, 0, 0, 0, 1556, 1557, 3, 22, 2, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1559, 6, 194, 0, 0, 1559, 407, 1, 0, 0, 0, 1560, 1561, 3, 280, 131, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1563, 6, 195, 15, 0, 1563, 1564, 6, 195, 4, 0, 1564, 1565, 6, 195, 20, 0, 1565, 409, 1, 0, 0, 0, 1566, 1567, 3, 276, 129, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 6, 196, 15, 0, 1569, 1570, 6, 196, 4, 0, 1570, 1571, 6, 196, 21, 0, 1571, 411, 1, 0, 0, 0, 1572, 1573, 3, 192, 87, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1575, 6, 197, 15, 0, 1575, 1576, 6, 197, 4, 0, 1576, 1577, 6, 197, 40, 0, 1577, 413, 1, 0, 0, 0, 1578, 1579, 3, 164, 73, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 6, 198, 14, 0, 1581, 1582, 6, 198, 15, 0, 1582, 415, 1, 0, 0, 0, 1583, 1584, 3, 164, 73, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1586, 6, 199, 14, 0, 1586, 1587, 6, 199, 15, 0, 1587, 417, 1, 0, 0, 0, 1588, 1589, 3, 208, 95, 0, 1589, 1590, 1, 0, 0, 0, 1590, 1591, 6, 200, 18, 0, 1591, 419, 1, 0, 0, 0, 1592, 1593, 3, 230, 106, 0, 1593, 1594, 1, 0, 0, 0, 1594, 1595, 6, 201, 29, 0, 1595, 421, 1, 0, 0, 0, 1596, 1597, 3, 266, 124, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1599, 6, 202, 30, 0, 1599, 423, 1, 0, 0, 0, 1600, 1601, 3, 280, 131, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1603, 6, 203, 20, 0, 1603, 425, 1, 0, 0, 0, 1604, 1605, 3, 276, 129, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1607, 6, 204, 21, 0, 1607, 427, 1, 0, 0, 0, 1608, 1609, 3, 18, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1611, 6, 205, 0, 0, 1611, 429, 1, 0, 0, 0, 1612, 1613, 3, 20, 1, 0, 1613, 1614, 1, 0, 0, 0, 1614, 1615, 6, 206, 0, 0, 1615, 431, 1, 0, 0, 0, 1616, 1617, 3, 22, 2, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1619, 6, 207, 0, 0, 1619, 433, 1, 0, 0, 0, 1620, 1621, 3, 164, 73, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1623, 6, 208, 14, 0, 1623, 1624, 6, 208, 15, 0, 1624, 435, 1, 0, 0, 0, 1625, 1626, 3, 208, 95, 0, 1626, 1627, 1, 0, 0, 0, 1627, 1628, 6, 209, 18, 0, 1628, 437, 1, 0, 0, 0, 1629, 1630, 3, 204, 93, 0, 1630, 1631, 1, 0, 0, 0, 1631, 1632, 6, 210, 19, 0, 1632, 439, 1, 0, 0, 0, 1633, 1634, 3, 230, 106, 0, 1634, 1635, 1, 0, 0, 0, 1635, 1636, 6, 211, 29, 0, 1636, 441, 1, 0, 0, 0, 1637, 1638, 3, 266, 124, 0, 1638, 1639, 1, 0, 0, 0, 1639, 1640, 6, 212, 30, 0, 1640, 443, 1, 0, 0, 0, 1641, 1646, 3, 168, 75, 0, 1642, 1646, 3, 166, 74, 0, 1643, 1646, 3, 182, 82, 0, 1644, 1646, 3, 254, 118, 0, 1645, 1641, 1, 0, 0, 0, 1645, 1642, 1, 0, 0, 0, 1645, 1643, 1, 0, 0, 0, 1645, 1644, 1, 0, 0, 0, 1646, 445, 1, 0, 0, 0, 1647, 1650, 3, 168, 75, 0, 1648, 1650, 3, 254, 118, 0, 1649, 1647, 1, 0, 0, 0, 1649, 1648, 1, 0, 0, 0, 1650, 1654, 1, 0, 0, 0, 1651, 1653, 3, 444, 213, 0, 1652, 1651, 1, 0, 0, 0, 1653, 1656, 1, 0, 0, 0, 1654, 1652, 1, 0, 0, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1667, 1, 0, 0, 0, 1656, 1654, 1, 0, 0, 0, 1657, 1660, 3, 182, 82, 0, 1658, 1660, 3, 176, 79, 0, 1659, 1657, 1, 0, 0, 0, 1659, 1658, 1, 0, 0, 0, 1660, 1662, 1, 0, 0, 0, 1661, 1663, 3, 444, 213, 0, 1662, 1661, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 1662, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1667, 1, 0, 0, 0, 1666, 1649, 1, 0, 0, 0, 1666, 1659, 1, 0, 0, 0, 1667, 447, 1, 0, 0, 0, 1668, 1671, 3, 446, 214, 0, 1669, 1671, 3, 278, 130, 0, 1670, 1668, 1, 0, 0, 0, 1670, 1669, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1670, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 449, 1, 0, 0, 0, 1674, 1675, 3, 18, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1677, 6, 216, 0, 0, 1677, 451, 1, 0, 0, 0, 1678, 1679, 3, 20, 1, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1681, 6, 217, 0, 0, 1681, 453, 1, 0, 0, 0, 1682, 1683, 3, 22, 2, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 6, 218, 0, 0, 1685, 455, 1, 0, 0, 0, 1686, 1687, 3, 164, 73, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 6, 219, 14, 0, 1689, 1690, 6, 219, 15, 0, 1690, 457, 1, 0, 0, 0, 1691, 1692, 3, 198, 90, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1694, 6, 220, 26, 0, 1694, 459, 1, 0, 0, 0, 1695, 1696, 3, 204, 93, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 6, 221, 19, 0, 1698, 461, 1, 0, 0, 0, 1699, 1700, 3, 208, 95, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1702, 6, 222, 18, 0, 1702, 463, 1, 0, 0, 0, 1703, 1704, 3, 230, 106, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1706, 6, 223, 29, 0, 1706, 465, 1, 0, 0, 0, 1707, 1708, 3, 266, 124, 0, 1708, 1709, 1, 0, 0, 0, 1709, 1710, 6, 224, 30, 0, 1710, 467, 1, 0, 0, 0, 1711, 1712, 7, 4, 0, 0, 1712, 1713, 7, 16, 0, 0, 1713, 469, 1, 0, 0, 0, 1714, 1715, 3, 448, 215, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1717, 6, 226, 28, 0, 1717, 471, 1, 0, 0, 0, 1718, 1719, 3, 18, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 1721, 6, 227, 0, 0, 1721, 473, 1, 0, 0, 0, 1722, 1723, 3, 20, 1, 0, 1723, 1724, 1, 0, 0, 0, 1724, 1725, 6, 228, 0, 0, 1725, 475, 1, 0, 0, 0, 1726, 1727, 3, 22, 2, 0, 1727, 1728, 1, 0, 0, 0, 1728, 1729, 6, 229, 0, 0, 1729, 477, 1, 0, 0, 0, 1730, 1731, 3, 164, 73, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1733, 6, 230, 14, 0, 1733, 1734, 6, 230, 15, 0, 1734, 479, 1, 0, 0, 0, 1735, 1736, 7, 10, 0, 0, 1736, 1737, 7, 5, 0, 0, 1737, 1738, 7, 21, 0, 0, 1738, 1739, 7, 9, 0, 0, 1739, 481, 1, 0, 0, 0, 1740, 1741, 3, 18, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1743, 6, 232, 0, 0, 1743, 483, 1, 0, 0, 0, 1744, 1745, 3, 20, 1, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 6, 233, 0, 0, 1747, 485, 1, 0, 0, 0, 1748, 1749, 3, 22, 2, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1751, 6, 234, 0, 0, 1751, 487, 1, 0, 0, 0, 68, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 494, 498, 501, 510, 512, 523, 767, 839, 843, 848, 930, 932, 983, 988, 997, 1004, 1009, 1011, 1022, 1030, 1033, 1035, 1040, 1045, 1051, 1058, 1063, 1069, 1072, 1080, 1084, 1212, 1217, 1224, 1226, 1252, 1257, 1262, 1264, 1270, 1325, 1330, 1645, 1649, 1654, 1659, 1664, 1666, 1670, 1672, 41, 0, 1, 0, 5, 1, 0, 5, 2, 0, 5, 5, 0, 5, 6, 0, 5, 7, 0, 5, 8, 0, 5, 9, 0, 5, 10, 0, 5, 12, 0, 5, 14, 0, 5, 15, 0, 5, 16, 0, 5, 17, 0, 7, 50, 0, 4, 0, 0, 7, 34, 0, 7, 132, 0, 7, 62, 0, 7, 60, 0, 7, 96, 0, 7, 95, 0, 7, 91, 0, 5, 4, 0, 5, 3, 0, 7, 36, 0, 7, 57, 0, 7, 35, 0, 7, 128, 0, 7, 73, 0, 7, 90, 0, 7, 92, 0, 7, 59, 0, 5, 0, 0, 7, 14, 0, 7, 101, 0, 7, 51, 0, 7, 93, 0, 5, 11, 0, 5, 13, 0, 7, 54, 0]
\ No newline at end of file
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseLexer.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseLexer.java
index 16e0455c6b45..1aefc71937c0 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseLexer.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseLexer.java
@@ -25,136 +25,140 @@ public class EsqlBaseLexer extends LexerConfig {
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
- DISSECT=1, DROP=2, ENRICH=3, EVAL=4, EXPLAIN=5, FROM=6, GROK=7, KEEP=8,
- LIMIT=9, MV_EXPAND=10, RENAME=11, ROW=12, SHOW=13, SORT=14, STATS=15,
- WHERE=16, JOIN_LOOKUP=17, DEV_CHANGE_POINT=18, DEV_INLINESTATS=19, DEV_INSIST=20,
- DEV_LOOKUP=21, DEV_METRICS=22, DEV_JOIN_FULL=23, DEV_JOIN_LEFT=24, DEV_JOIN_RIGHT=25,
- DEV_FORK=26, UNKNOWN_CMD=27, LINE_COMMENT=28, MULTILINE_COMMENT=29, WS=30,
- PIPE=31, QUOTED_STRING=32, INTEGER_LITERAL=33, DECIMAL_LITERAL=34, BY=35,
- AND=36, ASC=37, ASSIGN=38, CAST_OP=39, COLON=40, COMMA=41, DESC=42, DOT=43,
- FALSE=44, FIRST=45, IN=46, IS=47, LAST=48, LIKE=49, NOT=50, NULL=51, NULLS=52,
- OR=53, PARAM=54, RLIKE=55, TRUE=56, EQ=57, CIEQ=58, NEQ=59, LT=60, LTE=61,
- GT=62, GTE=63, PLUS=64, MINUS=65, ASTERISK=66, SLASH=67, PERCENT=68, LEFT_BRACES=69,
- RIGHT_BRACES=70, NAMED_OR_POSITIONAL_PARAM=71, OPENING_BRACKET=72, CLOSING_BRACKET=73,
- LP=74, RP=75, UNQUOTED_IDENTIFIER=76, QUOTED_IDENTIFIER=77, EXPR_LINE_COMMENT=78,
- EXPR_MULTILINE_COMMENT=79, EXPR_WS=80, EXPLAIN_WS=81, EXPLAIN_LINE_COMMENT=82,
- EXPLAIN_MULTILINE_COMMENT=83, METADATA=84, UNQUOTED_SOURCE=85, FROM_LINE_COMMENT=86,
- FROM_MULTILINE_COMMENT=87, FROM_WS=88, ID_PATTERN=89, PROJECT_LINE_COMMENT=90,
- PROJECT_MULTILINE_COMMENT=91, PROJECT_WS=92, AS=93, RENAME_LINE_COMMENT=94,
- RENAME_MULTILINE_COMMENT=95, RENAME_WS=96, ON=97, WITH=98, ENRICH_POLICY_NAME=99,
- ENRICH_LINE_COMMENT=100, ENRICH_MULTILINE_COMMENT=101, ENRICH_WS=102,
- ENRICH_FIELD_LINE_COMMENT=103, ENRICH_FIELD_MULTILINE_COMMENT=104, ENRICH_FIELD_WS=105,
- MVEXPAND_LINE_COMMENT=106, MVEXPAND_MULTILINE_COMMENT=107, MVEXPAND_WS=108,
- INFO=109, SHOW_LINE_COMMENT=110, SHOW_MULTILINE_COMMENT=111, SHOW_WS=112,
- SETTING=113, SETTING_LINE_COMMENT=114, SETTTING_MULTILINE_COMMENT=115,
- SETTING_WS=116, LOOKUP_LINE_COMMENT=117, LOOKUP_MULTILINE_COMMENT=118,
- LOOKUP_WS=119, LOOKUP_FIELD_LINE_COMMENT=120, LOOKUP_FIELD_MULTILINE_COMMENT=121,
- LOOKUP_FIELD_WS=122, JOIN=123, USING=124, JOIN_LINE_COMMENT=125, JOIN_MULTILINE_COMMENT=126,
- JOIN_WS=127, METRICS_LINE_COMMENT=128, METRICS_MULTILINE_COMMENT=129,
- METRICS_WS=130, CLOSING_METRICS_LINE_COMMENT=131, CLOSING_METRICS_MULTILINE_COMMENT=132,
- CLOSING_METRICS_WS=133, CHANGE_POINT_LINE_COMMENT=134, CHANGE_POINT_MULTILINE_COMMENT=135,
- CHANGE_POINT_WS=136, INSIST_WS=137, INSIST_LINE_COMMENT=138, INSIST_MULTILINE_COMMENT=139,
- FORK_WS=140, FORK_LINE_COMMENT=141, FORK_MULTILINE_COMMENT=142;
+ LINE_COMMENT=1, MULTILINE_COMMENT=2, WS=3, DEV_CHANGE_POINT=4, ENRICH=5,
+ EXPLAIN=6, DISSECT=7, EVAL=8, GROK=9, LIMIT=10, ROW=11, SORT=12, STATS=13,
+ WHERE=14, DEV_INLINESTATS=15, FROM=16, DEV_FORK=17, JOIN_LOOKUP=18, DEV_JOIN_FULL=19,
+ DEV_JOIN_LEFT=20, DEV_JOIN_RIGHT=21, DEV_LOOKUP=22, DEV_METRICS=23, MV_EXPAND=24,
+ DROP=25, KEEP=26, DEV_INSIST=27, RENAME=28, SHOW=29, UNKNOWN_CMD=30, CHANGE_POINT_LINE_COMMENT=31,
+ CHANGE_POINT_MULTILINE_COMMENT=32, CHANGE_POINT_WS=33, ON=34, WITH=35,
+ ENRICH_POLICY_NAME=36, ENRICH_LINE_COMMENT=37, ENRICH_MULTILINE_COMMENT=38,
+ ENRICH_WS=39, ENRICH_FIELD_LINE_COMMENT=40, ENRICH_FIELD_MULTILINE_COMMENT=41,
+ ENRICH_FIELD_WS=42, SETTING=43, SETTING_LINE_COMMENT=44, SETTTING_MULTILINE_COMMENT=45,
+ SETTING_WS=46, EXPLAIN_WS=47, EXPLAIN_LINE_COMMENT=48, EXPLAIN_MULTILINE_COMMENT=49,
+ PIPE=50, QUOTED_STRING=51, INTEGER_LITERAL=52, DECIMAL_LITERAL=53, BY=54,
+ AND=55, ASC=56, ASSIGN=57, CAST_OP=58, COLON=59, COMMA=60, DESC=61, DOT=62,
+ FALSE=63, FIRST=64, IN=65, IS=66, LAST=67, LIKE=68, NOT=69, NULL=70, NULLS=71,
+ OR=72, PARAM=73, RLIKE=74, TRUE=75, EQ=76, CIEQ=77, NEQ=78, LT=79, LTE=80,
+ GT=81, GTE=82, PLUS=83, MINUS=84, ASTERISK=85, SLASH=86, PERCENT=87, LEFT_BRACES=88,
+ RIGHT_BRACES=89, NAMED_OR_POSITIONAL_PARAM=90, OPENING_BRACKET=91, CLOSING_BRACKET=92,
+ LP=93, RP=94, UNQUOTED_IDENTIFIER=95, QUOTED_IDENTIFIER=96, EXPR_LINE_COMMENT=97,
+ EXPR_MULTILINE_COMMENT=98, EXPR_WS=99, METADATA=100, UNQUOTED_SOURCE=101,
+ FROM_LINE_COMMENT=102, FROM_MULTILINE_COMMENT=103, FROM_WS=104, FORK_WS=105,
+ FORK_LINE_COMMENT=106, FORK_MULTILINE_COMMENT=107, JOIN=108, USING=109,
+ JOIN_LINE_COMMENT=110, JOIN_MULTILINE_COMMENT=111, JOIN_WS=112, LOOKUP_LINE_COMMENT=113,
+ LOOKUP_MULTILINE_COMMENT=114, LOOKUP_WS=115, LOOKUP_FIELD_LINE_COMMENT=116,
+ LOOKUP_FIELD_MULTILINE_COMMENT=117, LOOKUP_FIELD_WS=118, METRICS_LINE_COMMENT=119,
+ METRICS_MULTILINE_COMMENT=120, METRICS_WS=121, CLOSING_METRICS_LINE_COMMENT=122,
+ CLOSING_METRICS_MULTILINE_COMMENT=123, CLOSING_METRICS_WS=124, MVEXPAND_LINE_COMMENT=125,
+ MVEXPAND_MULTILINE_COMMENT=126, MVEXPAND_WS=127, ID_PATTERN=128, PROJECT_LINE_COMMENT=129,
+ PROJECT_MULTILINE_COMMENT=130, PROJECT_WS=131, AS=132, RENAME_LINE_COMMENT=133,
+ RENAME_MULTILINE_COMMENT=134, RENAME_WS=135, INFO=136, SHOW_LINE_COMMENT=137,
+ SHOW_MULTILINE_COMMENT=138, SHOW_WS=139;
public static final int
- EXPRESSION_MODE=1, EXPLAIN_MODE=2, FROM_MODE=3, PROJECT_MODE=4, RENAME_MODE=5,
- ENRICH_MODE=6, ENRICH_FIELD_MODE=7, MVEXPAND_MODE=8, SHOW_MODE=9, SETTING_MODE=10,
- LOOKUP_MODE=11, LOOKUP_FIELD_MODE=12, JOIN_MODE=13, METRICS_MODE=14, CLOSING_METRICS_MODE=15,
- CHANGE_POINT_MODE=16, INSIST_MODE=17, FORK_MODE=18;
+ CHANGE_POINT_MODE=1, ENRICH_MODE=2, ENRICH_FIELD_MODE=3, SETTING_MODE=4,
+ EXPLAIN_MODE=5, EXPRESSION_MODE=6, FROM_MODE=7, FORK_MODE=8, JOIN_MODE=9,
+ LOOKUP_MODE=10, LOOKUP_FIELD_MODE=11, METRICS_MODE=12, CLOSING_METRICS_MODE=13,
+ MVEXPAND_MODE=14, PROJECT_MODE=15, RENAME_MODE=16, SHOW_MODE=17;
public static String[] channelNames = {
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
};
public static String[] modeNames = {
- "DEFAULT_MODE", "EXPRESSION_MODE", "EXPLAIN_MODE", "FROM_MODE", "PROJECT_MODE",
- "RENAME_MODE", "ENRICH_MODE", "ENRICH_FIELD_MODE", "MVEXPAND_MODE", "SHOW_MODE",
- "SETTING_MODE", "LOOKUP_MODE", "LOOKUP_FIELD_MODE", "JOIN_MODE", "METRICS_MODE",
- "CLOSING_METRICS_MODE", "CHANGE_POINT_MODE", "INSIST_MODE", "FORK_MODE"
+ "DEFAULT_MODE", "CHANGE_POINT_MODE", "ENRICH_MODE", "ENRICH_FIELD_MODE",
+ "SETTING_MODE", "EXPLAIN_MODE", "EXPRESSION_MODE", "FROM_MODE", "FORK_MODE",
+ "JOIN_MODE", "LOOKUP_MODE", "LOOKUP_FIELD_MODE", "METRICS_MODE", "CLOSING_METRICS_MODE",
+ "MVEXPAND_MODE", "PROJECT_MODE", "RENAME_MODE", "SHOW_MODE"
};
private static String[] makeRuleNames() {
return new String[] {
- "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", "KEEP",
- "LIMIT", "MV_EXPAND", "RENAME", "ROW", "SHOW", "SORT", "STATS", "WHERE",
- "JOIN_LOOKUP", "DEV_CHANGE_POINT", "DEV_INLINESTATS", "DEV_INSIST", "DEV_LOOKUP",
- "DEV_METRICS", "DEV_JOIN_FULL", "DEV_JOIN_LEFT", "DEV_JOIN_RIGHT", "DEV_FORK",
- "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "PIPE", "DIGIT",
- "LETTER", "ESCAPE_SEQUENCE", "UNESCAPED_CHARS", "EXPONENT", "ASPERAND",
- "BACKQUOTE", "BACKQUOTE_BLOCK", "UNDERSCORE", "UNQUOTED_ID_BODY", "QUOTED_STRING",
- "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY", "AND", "ASC", "ASSIGN", "CAST_OP",
- "COLON", "COMMA", "DESC", "DOT", "FALSE", "FIRST", "IN", "IS", "LAST",
- "LIKE", "NOT", "NULL", "NULLS", "OR", "PARAM", "RLIKE", "TRUE", "EQ",
- "CIEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK",
- "SLASH", "PERCENT", "LEFT_BRACES", "RIGHT_BRACES", "NESTED_WHERE", "NAMED_OR_POSITIONAL_PARAM",
- "OPENING_BRACKET", "CLOSING_BRACKET", "LP", "RP", "UNQUOTED_IDENTIFIER",
- "QUOTED_ID", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT",
- "EXPR_WS", "EXPLAIN_OPENING_BRACKET", "EXPLAIN_PIPE", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT",
- "EXPLAIN_MULTILINE_COMMENT", "FROM_PIPE", "FROM_OPENING_BRACKET", "FROM_CLOSING_BRACKET",
- "FROM_COLON", "FROM_COMMA", "FROM_ASSIGN", "METADATA", "UNQUOTED_SOURCE_PART",
- "UNQUOTED_SOURCE", "FROM_UNQUOTED_SOURCE", "FROM_QUOTED_SOURCE", "FROM_LINE_COMMENT",
- "FROM_MULTILINE_COMMENT", "FROM_WS", "PROJECT_PIPE", "PROJECT_DOT", "PROJECT_COMMA",
- "PROJECT_PARAM", "PROJECT_NAMED_OR_POSITIONAL_PARAM", "UNQUOTED_ID_BODY_WITH_PATTERN",
+ "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "DEV_CHANGE_POINT", "ENRICH",
+ "EXPLAIN", "DISSECT", "EVAL", "GROK", "LIMIT", "ROW", "SORT", "STATS",
+ "WHERE", "DEV_INLINESTATS", "FROM", "DEV_FORK", "JOIN_LOOKUP", "DEV_JOIN_FULL",
+ "DEV_JOIN_LEFT", "DEV_JOIN_RIGHT", "DEV_LOOKUP", "DEV_METRICS", "MV_EXPAND",
+ "DROP", "KEEP", "DEV_INSIST", "RENAME", "SHOW", "UNKNOWN_CMD", "CHANGE_POINT_PIPE",
+ "CHANGE_POINT_ON", "CHANGE_POINT_AS", "CHANGE_POINT_DOT", "CHANGE_POINT_COMMA",
+ "CHANGE_POINT_QUOTED_IDENTIFIER", "CHANGE_POINT_UNQUOTED_IDENTIFIER",
+ "CHANGE_POINT_LINE_COMMENT", "CHANGE_POINT_MULTILINE_COMMENT", "CHANGE_POINT_WS",
+ "ENRICH_PIPE", "ENRICH_OPENING_BRACKET", "ON", "WITH", "ENRICH_POLICY_NAME_BODY",
+ "ENRICH_POLICY_NAME", "ENRICH_MODE_UNQUOTED_VALUE", "ENRICH_LINE_COMMENT",
+ "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_PIPE", "ENRICH_FIELD_ASSIGN",
+ "ENRICH_FIELD_COMMA", "ENRICH_FIELD_DOT", "ENRICH_FIELD_WITH", "ENRICH_FIELD_ID_PATTERN",
+ "ENRICH_FIELD_QUOTED_IDENTIFIER", "ENRICH_FIELD_PARAM", "ENRICH_FIELD_NAMED_OR_POSITIONAL_PARAM",
+ "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT", "ENRICH_FIELD_WS",
+ "SETTING_CLOSING_BRACKET", "SETTING_COLON", "SETTING", "SETTING_LINE_COMMENT",
+ "SETTTING_MULTILINE_COMMENT", "SETTING_WS", "EXPLAIN_OPENING_BRACKET",
+ "EXPLAIN_PIPE", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT",
+ "PIPE", "DIGIT", "LETTER", "ESCAPE_SEQUENCE", "UNESCAPED_CHARS", "EXPONENT",
+ "ASPERAND", "BACKQUOTE", "BACKQUOTE_BLOCK", "UNDERSCORE", "UNQUOTED_ID_BODY",
+ "QUOTED_STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY", "AND", "ASC",
+ "ASSIGN", "CAST_OP", "COLON", "COMMA", "DESC", "DOT", "FALSE", "FIRST",
+ "IN", "IS", "LAST", "LIKE", "NOT", "NULL", "NULLS", "OR", "PARAM", "RLIKE",
+ "TRUE", "EQ", "CIEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS",
+ "ASTERISK", "SLASH", "PERCENT", "LEFT_BRACES", "RIGHT_BRACES", "NESTED_WHERE",
+ "NAMED_OR_POSITIONAL_PARAM", "OPENING_BRACKET", "CLOSING_BRACKET", "LP",
+ "RP", "UNQUOTED_IDENTIFIER", "QUOTED_ID", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT",
+ "EXPR_MULTILINE_COMMENT", "EXPR_WS", "FROM_PIPE", "FROM_OPENING_BRACKET",
+ "FROM_CLOSING_BRACKET", "FROM_COLON", "FROM_COMMA", "FROM_ASSIGN", "METADATA",
+ "UNQUOTED_SOURCE_PART", "UNQUOTED_SOURCE", "FROM_UNQUOTED_SOURCE", "FROM_QUOTED_SOURCE",
+ "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT", "FROM_WS", "FORK_LP",
+ "FORK_PIPE", "FORK_WS", "FORK_LINE_COMMENT", "FORK_MULTILINE_COMMENT",
+ "JOIN_PIPE", "JOIN", "JOIN_AS", "JOIN_ON", "USING", "JOIN_UNQUOTED_SOURCE",
+ "JOIN_QUOTED_SOURCE", "JOIN_COLON", "JOIN_UNQUOTED_IDENTIFER", "JOIN_QUOTED_IDENTIFIER",
+ "JOIN_LINE_COMMENT", "JOIN_MULTILINE_COMMENT", "JOIN_WS", "LOOKUP_PIPE",
+ "LOOKUP_COLON", "LOOKUP_COMMA", "LOOKUP_DOT", "LOOKUP_ON", "LOOKUP_UNQUOTED_SOURCE",
+ "LOOKUP_QUOTED_SOURCE", "LOOKUP_LINE_COMMENT", "LOOKUP_MULTILINE_COMMENT",
+ "LOOKUP_WS", "LOOKUP_FIELD_PIPE", "LOOKUP_FIELD_COMMA", "LOOKUP_FIELD_DOT",
+ "LOOKUP_FIELD_ID_PATTERN", "LOOKUP_FIELD_LINE_COMMENT", "LOOKUP_FIELD_MULTILINE_COMMENT",
+ "LOOKUP_FIELD_WS", "METRICS_PIPE", "METRICS_UNQUOTED_SOURCE", "METRICS_QUOTED_SOURCE",
+ "METRICS_LINE_COMMENT", "METRICS_MULTILINE_COMMENT", "METRICS_WS", "CLOSING_METRICS_COLON",
+ "CLOSING_METRICS_COMMA", "CLOSING_METRICS_LINE_COMMENT", "CLOSING_METRICS_MULTILINE_COMMENT",
+ "CLOSING_METRICS_WS", "CLOSING_METRICS_QUOTED_IDENTIFIER", "CLOSING_METRICS_UNQUOTED_IDENTIFIER",
+ "CLOSING_METRICS_BY", "CLOSING_METRICS_PIPE", "MVEXPAND_PIPE", "MVEXPAND_DOT",
+ "MVEXPAND_PARAM", "MVEXPAND_NAMED_OR_POSITIONAL_PARAM", "MVEXPAND_QUOTED_IDENTIFIER",
+ "MVEXPAND_UNQUOTED_IDENTIFIER", "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT",
+ "MVEXPAND_WS", "PROJECT_PIPE", "PROJECT_DOT", "PROJECT_COMMA", "PROJECT_PARAM",
+ "PROJECT_NAMED_OR_POSITIONAL_PARAM", "UNQUOTED_ID_BODY_WITH_PATTERN",
"UNQUOTED_ID_PATTERN", "ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT",
"PROJECT_WS", "RENAME_PIPE", "RENAME_ASSIGN", "RENAME_COMMA", "RENAME_DOT",
"RENAME_PARAM", "RENAME_NAMED_OR_POSITIONAL_PARAM", "AS", "RENAME_ID_PATTERN",
- "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS", "ENRICH_PIPE",
- "ENRICH_OPENING_BRACKET", "ON", "WITH", "ENRICH_POLICY_NAME_BODY", "ENRICH_POLICY_NAME",
- "ENRICH_MODE_UNQUOTED_VALUE", "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT",
- "ENRICH_WS", "ENRICH_FIELD_PIPE", "ENRICH_FIELD_ASSIGN", "ENRICH_FIELD_COMMA",
- "ENRICH_FIELD_DOT", "ENRICH_FIELD_WITH", "ENRICH_FIELD_ID_PATTERN", "ENRICH_FIELD_QUOTED_IDENTIFIER",
- "ENRICH_FIELD_PARAM", "ENRICH_FIELD_NAMED_OR_POSITIONAL_PARAM", "ENRICH_FIELD_LINE_COMMENT",
- "ENRICH_FIELD_MULTILINE_COMMENT", "ENRICH_FIELD_WS", "MVEXPAND_PIPE",
- "MVEXPAND_DOT", "MVEXPAND_PARAM", "MVEXPAND_NAMED_OR_POSITIONAL_PARAM",
- "MVEXPAND_QUOTED_IDENTIFIER", "MVEXPAND_UNQUOTED_IDENTIFIER", "MVEXPAND_LINE_COMMENT",
- "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS", "SHOW_PIPE", "INFO", "SHOW_LINE_COMMENT",
- "SHOW_MULTILINE_COMMENT", "SHOW_WS", "SETTING_CLOSING_BRACKET", "SETTING_COLON",
- "SETTING", "SETTING_LINE_COMMENT", "SETTTING_MULTILINE_COMMENT", "SETTING_WS",
- "LOOKUP_PIPE", "LOOKUP_COLON", "LOOKUP_COMMA", "LOOKUP_DOT", "LOOKUP_ON",
- "LOOKUP_UNQUOTED_SOURCE", "LOOKUP_QUOTED_SOURCE", "LOOKUP_LINE_COMMENT",
- "LOOKUP_MULTILINE_COMMENT", "LOOKUP_WS", "LOOKUP_FIELD_PIPE", "LOOKUP_FIELD_COMMA",
- "LOOKUP_FIELD_DOT", "LOOKUP_FIELD_ID_PATTERN", "LOOKUP_FIELD_LINE_COMMENT",
- "LOOKUP_FIELD_MULTILINE_COMMENT", "LOOKUP_FIELD_WS", "JOIN_PIPE", "JOIN",
- "JOIN_AS", "JOIN_ON", "USING", "JOIN_UNQUOTED_SOURCE", "JOIN_QUOTED_SOURCE",
- "JOIN_COLON", "JOIN_UNQUOTED_IDENTIFER", "JOIN_QUOTED_IDENTIFIER", "JOIN_LINE_COMMENT",
- "JOIN_MULTILINE_COMMENT", "JOIN_WS", "METRICS_PIPE", "METRICS_UNQUOTED_SOURCE",
- "METRICS_QUOTED_SOURCE", "METRICS_LINE_COMMENT", "METRICS_MULTILINE_COMMENT",
- "METRICS_WS", "CLOSING_METRICS_COLON", "CLOSING_METRICS_COMMA", "CLOSING_METRICS_LINE_COMMENT",
- "CLOSING_METRICS_MULTILINE_COMMENT", "CLOSING_METRICS_WS", "CLOSING_METRICS_QUOTED_IDENTIFIER",
- "CLOSING_METRICS_UNQUOTED_IDENTIFIER", "CLOSING_METRICS_BY", "CLOSING_METRICS_PIPE",
- "CHANGE_POINT_PIPE", "CHANGE_POINT_ON", "CHANGE_POINT_AS", "CHANGE_POINT_DOT",
- "CHANGE_POINT_COMMA", "CHANGE_POINT_QUOTED_IDENTIFIER", "CHANGE_POINT_UNQUOTED_IDENTIFIER",
- "CHANGE_POINT_LINE_COMMENT", "CHANGE_POINT_MULTILINE_COMMENT", "CHANGE_POINT_WS",
- "INSIST_PIPE", "INSIST_IDENTIFIER", "INSIST_WS", "INSIST_LINE_COMMENT",
- "INSIST_MULTILINE_COMMENT", "FORK_LP", "FORK_PIPE", "FORK_WS", "FORK_LINE_COMMENT",
- "FORK_MULTILINE_COMMENT"
+ "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS", "SHOW_PIPE",
+ "INFO", "SHOW_LINE_COMMENT", "SHOW_MULTILINE_COMMENT", "SHOW_WS"
};
}
public static final String[] ruleNames = makeRuleNames();
private static String[] makeLiteralNames() {
return new String[] {
- null, "'dissect'", "'drop'", "'enrich'", "'eval'", "'explain'", "'from'",
- "'grok'", "'keep'", "'limit'", "'mv_expand'", "'rename'", "'row'", "'show'",
- "'sort'", "'stats'", "'where'", "'lookup'", null, null, null, null, null,
- null, null, null, null, null, null, null, null, "'|'", null, null, null,
- "'by'", "'and'", "'asc'", "'='", "'::'", "':'", "','", "'desc'", "'.'",
- "'false'", "'first'", "'in'", "'is'", "'last'", "'like'", "'not'", "'null'",
- "'nulls'", "'or'", "'?'", "'rlike'", "'true'", "'=='", "'=~'", "'!='",
- "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'{'",
- "'}'", null, null, "']'", null, "')'", null, null, null, null, null,
- null, null, null, "'metadata'", null, null, null, null, null, null, null,
- null, "'as'", null, null, null, "'on'", "'with'", null, null, null, null,
- null, null, null, null, null, null, "'info'", null, null, null, null,
- null, null, null, null, null, null, null, null, null, "'join'", "'USING'"
+ null, null, null, null, null, "'enrich'", "'explain'", "'dissect'", "'eval'",
+ "'grok'", "'limit'", "'row'", "'sort'", "'stats'", "'where'", null, "'from'",
+ null, "'lookup'", null, null, null, null, null, "'mv_expand'", "'drop'",
+ "'keep'", null, "'rename'", "'show'", null, null, null, null, "'on'",
+ "'with'", null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, "'|'", null, null, null, "'by'", "'and'", "'asc'",
+ "'='", "'::'", "':'", "','", "'desc'", "'.'", "'false'", "'first'", "'in'",
+ "'is'", "'last'", "'like'", "'not'", "'null'", "'nulls'", "'or'", "'?'",
+ "'rlike'", "'true'", "'=='", "'=~'", "'!='", "'<'", "'<='", "'>'", "'>='",
+ "'+'", "'-'", "'*'", "'/'", "'%'", "'{'", "'}'", null, null, "']'", null,
+ "')'", null, null, null, null, null, "'metadata'", null, null, null,
+ null, null, null, null, "'join'", "'USING'", null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, "'as'", null, null, null, "'info'"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static String[] makeSymbolicNames() {
return new String[] {
- null, "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK",
- "KEEP", "LIMIT", "MV_EXPAND", "RENAME", "ROW", "SHOW", "SORT", "STATS",
- "WHERE", "JOIN_LOOKUP", "DEV_CHANGE_POINT", "DEV_INLINESTATS", "DEV_INSIST",
- "DEV_LOOKUP", "DEV_METRICS", "DEV_JOIN_FULL", "DEV_JOIN_LEFT", "DEV_JOIN_RIGHT",
- "DEV_FORK", "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT", "WS",
+ null, "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "DEV_CHANGE_POINT",
+ "ENRICH", "EXPLAIN", "DISSECT", "EVAL", "GROK", "LIMIT", "ROW", "SORT",
+ "STATS", "WHERE", "DEV_INLINESTATS", "FROM", "DEV_FORK", "JOIN_LOOKUP",
+ "DEV_JOIN_FULL", "DEV_JOIN_LEFT", "DEV_JOIN_RIGHT", "DEV_LOOKUP", "DEV_METRICS",
+ "MV_EXPAND", "DROP", "KEEP", "DEV_INSIST", "RENAME", "SHOW", "UNKNOWN_CMD",
+ "CHANGE_POINT_LINE_COMMENT", "CHANGE_POINT_MULTILINE_COMMENT", "CHANGE_POINT_WS",
+ "ON", "WITH", "ENRICH_POLICY_NAME", "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT",
+ "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT",
+ "ENRICH_FIELD_WS", "SETTING", "SETTING_LINE_COMMENT", "SETTTING_MULTILINE_COMMENT",
+ "SETTING_WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT",
"PIPE", "QUOTED_STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY",
"AND", "ASC", "ASSIGN", "CAST_OP", "COLON", "COMMA", "DESC", "DOT", "FALSE",
"FIRST", "IN", "IS", "LAST", "LIKE", "NOT", "NULL", "NULLS", "OR", "PARAM",
@@ -162,23 +166,17 @@ public class EsqlBaseLexer extends LexerConfig {
"MINUS", "ASTERISK", "SLASH", "PERCENT", "LEFT_BRACES", "RIGHT_BRACES",
"NAMED_OR_POSITIONAL_PARAM", "OPENING_BRACKET", "CLOSING_BRACKET", "LP",
"RP", "UNQUOTED_IDENTIFIER", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT",
- "EXPR_MULTILINE_COMMENT", "EXPR_WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT",
- "EXPLAIN_MULTILINE_COMMENT", "METADATA", "UNQUOTED_SOURCE", "FROM_LINE_COMMENT",
- "FROM_MULTILINE_COMMENT", "FROM_WS", "ID_PATTERN", "PROJECT_LINE_COMMENT",
+ "EXPR_MULTILINE_COMMENT", "EXPR_WS", "METADATA", "UNQUOTED_SOURCE", "FROM_LINE_COMMENT",
+ "FROM_MULTILINE_COMMENT", "FROM_WS", "FORK_WS", "FORK_LINE_COMMENT",
+ "FORK_MULTILINE_COMMENT", "JOIN", "USING", "JOIN_LINE_COMMENT", "JOIN_MULTILINE_COMMENT",
+ "JOIN_WS", "LOOKUP_LINE_COMMENT", "LOOKUP_MULTILINE_COMMENT", "LOOKUP_WS",
+ "LOOKUP_FIELD_LINE_COMMENT", "LOOKUP_FIELD_MULTILINE_COMMENT", "LOOKUP_FIELD_WS",
+ "METRICS_LINE_COMMENT", "METRICS_MULTILINE_COMMENT", "METRICS_WS", "CLOSING_METRICS_LINE_COMMENT",
+ "CLOSING_METRICS_MULTILINE_COMMENT", "CLOSING_METRICS_WS", "MVEXPAND_LINE_COMMENT",
+ "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS", "ID_PATTERN", "PROJECT_LINE_COMMENT",
"PROJECT_MULTILINE_COMMENT", "PROJECT_WS", "AS", "RENAME_LINE_COMMENT",
- "RENAME_MULTILINE_COMMENT", "RENAME_WS", "ON", "WITH", "ENRICH_POLICY_NAME",
- "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT",
- "ENRICH_FIELD_MULTILINE_COMMENT", "ENRICH_FIELD_WS", "MVEXPAND_LINE_COMMENT",
- "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS", "INFO", "SHOW_LINE_COMMENT",
- "SHOW_MULTILINE_COMMENT", "SHOW_WS", "SETTING", "SETTING_LINE_COMMENT",
- "SETTTING_MULTILINE_COMMENT", "SETTING_WS", "LOOKUP_LINE_COMMENT", "LOOKUP_MULTILINE_COMMENT",
- "LOOKUP_WS", "LOOKUP_FIELD_LINE_COMMENT", "LOOKUP_FIELD_MULTILINE_COMMENT",
- "LOOKUP_FIELD_WS", "JOIN", "USING", "JOIN_LINE_COMMENT", "JOIN_MULTILINE_COMMENT",
- "JOIN_WS", "METRICS_LINE_COMMENT", "METRICS_MULTILINE_COMMENT", "METRICS_WS",
- "CLOSING_METRICS_LINE_COMMENT", "CLOSING_METRICS_MULTILINE_COMMENT",
- "CLOSING_METRICS_WS", "CHANGE_POINT_LINE_COMMENT", "CHANGE_POINT_MULTILINE_COMMENT",
- "CHANGE_POINT_WS", "INSIST_WS", "INSIST_LINE_COMMENT", "INSIST_MULTILINE_COMMENT",
- "FORK_WS", "FORK_LINE_COMMENT", "FORK_MULTILINE_COMMENT"
+ "RENAME_MULTILINE_COMMENT", "RENAME_WS", "INFO", "SHOW_LINE_COMMENT",
+ "SHOW_MULTILINE_COMMENT", "SHOW_WS"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@@ -243,24 +241,24 @@ public class EsqlBaseLexer extends LexerConfig {
@Override
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
- case 17:
+ case 3:
return DEV_CHANGE_POINT_sempred((RuleContext)_localctx, predIndex);
- case 18:
+ case 14:
return DEV_INLINESTATS_sempred((RuleContext)_localctx, predIndex);
- case 19:
- return DEV_INSIST_sempred((RuleContext)_localctx, predIndex);
- case 20:
- return DEV_LOOKUP_sempred((RuleContext)_localctx, predIndex);
- case 21:
- return DEV_METRICS_sempred((RuleContext)_localctx, predIndex);
- case 22:
- return DEV_JOIN_FULL_sempred((RuleContext)_localctx, predIndex);
- case 23:
- return DEV_JOIN_LEFT_sempred((RuleContext)_localctx, predIndex);
- case 24:
- return DEV_JOIN_RIGHT_sempred((RuleContext)_localctx, predIndex);
- case 25:
+ case 16:
return DEV_FORK_sempred((RuleContext)_localctx, predIndex);
+ case 18:
+ return DEV_JOIN_FULL_sempred((RuleContext)_localctx, predIndex);
+ case 19:
+ return DEV_JOIN_LEFT_sempred((RuleContext)_localctx, predIndex);
+ case 20:
+ return DEV_JOIN_RIGHT_sempred((RuleContext)_localctx, predIndex);
+ case 21:
+ return DEV_LOOKUP_sempred((RuleContext)_localctx, predIndex);
+ case 22:
+ return DEV_METRICS_sempred((RuleContext)_localctx, predIndex);
+ case 26:
+ return DEV_INSIST_sempred((RuleContext)_localctx, predIndex);
}
return true;
}
@@ -278,49 +276,49 @@ public class EsqlBaseLexer extends LexerConfig {
}
return true;
}
- private boolean DEV_INSIST_sempred(RuleContext _localctx, int predIndex) {
+ private boolean DEV_FORK_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 2:
return this.isDevVersion();
}
return true;
}
- private boolean DEV_LOOKUP_sempred(RuleContext _localctx, int predIndex) {
+ private boolean DEV_JOIN_FULL_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 3:
return this.isDevVersion();
}
return true;
}
- private boolean DEV_METRICS_sempred(RuleContext _localctx, int predIndex) {
+ private boolean DEV_JOIN_LEFT_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 4:
return this.isDevVersion();
}
return true;
}
- private boolean DEV_JOIN_FULL_sempred(RuleContext _localctx, int predIndex) {
+ private boolean DEV_JOIN_RIGHT_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 5:
return this.isDevVersion();
}
return true;
}
- private boolean DEV_JOIN_LEFT_sempred(RuleContext _localctx, int predIndex) {
+ private boolean DEV_LOOKUP_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 6:
return this.isDevVersion();
}
return true;
}
- private boolean DEV_JOIN_RIGHT_sempred(RuleContext _localctx, int predIndex) {
+ private boolean DEV_METRICS_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 7:
return this.isDevVersion();
}
return true;
}
- private boolean DEV_FORK_sempred(RuleContext _localctx, int predIndex) {
+ private boolean DEV_INSIST_sempred(RuleContext _localctx, int predIndex) {
switch (predIndex) {
case 8:
return this.isDevVersion();
@@ -329,1170 +327,1162 @@ public class EsqlBaseLexer extends LexerConfig {
}
public static final String _serializedATN =
- "\u0004\u0000\u008e\u06f8\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+
+ "\u0004\u0000\u008b\u06d8\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+
"\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+
"\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+
"\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+
- "\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+
- "\uffff\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002\u0002\u0007"+
- "\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002\u0005\u0007"+
- "\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002\b\u0007\b"+
- "\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002\f\u0007"+
- "\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f\u0002"+
- "\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012\u0002"+
- "\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015\u0002"+
- "\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018\u0002"+
- "\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b\u0002"+
- "\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e\u0002"+
- "\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002#"+
- "\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+
- "(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+
- "-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u00071\u0002"+
- "2\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u00076\u0002"+
- "7\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007;\u0002"+
- "<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007@\u0002"+
- "A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002"+
- "F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002"+
- "K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002"+
- "P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002"+
- "U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002"+
- "Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002"+
- "_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007c\u0002"+
- "d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007h\u0002"+
- "i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007m\u0002"+
- "n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007r\u0002"+
- "s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007w\u0002"+
- "x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007|\u0002"+
- "}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007\u0080"+
- "\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007\u0083"+
- "\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007\u0086"+
- "\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007\u0089"+
- "\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007\u008c"+
- "\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007\u008f"+
- "\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007\u0092"+
- "\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007\u0095"+
- "\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007\u0098"+
- "\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007\u009b"+
- "\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007\u009e"+
- "\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007\u00a1"+
- "\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007\u00a4"+
- "\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007\u00a7"+
- "\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007\u00aa"+
- "\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007\u00ad"+
- "\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007\u00b0"+
- "\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007\u00b3"+
- "\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007\u00b6"+
- "\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007\u00b9"+
- "\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007\u00bc"+
- "\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007\u00bf"+
- "\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007\u00c2"+
- "\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007\u00c5"+
- "\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007\u00c8"+
- "\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007\u00cb"+
- "\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007\u00ce"+
- "\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007\u00d1"+
- "\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007\u00d4"+
- "\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007\u00d7"+
- "\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007\u00da"+
- "\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007\u00dd"+
- "\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007\u00e0"+
- "\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007\u00e3"+
- "\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007\u00e6"+
- "\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007\u00e9"+
- "\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007\u00ec"+
- "\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007\u00ef"+
- "\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
- "\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001"+
- "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002"+
- "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+
- "\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
- "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004"+
- "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
- "\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
+ "\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000"+
+ "\u0007\u0000\u0002\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003"+
+ "\u0007\u0003\u0002\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006"+
+ "\u0007\u0006\u0002\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002"+
+ "\n\u0007\n\u0002\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002"+
+ "\u000e\u0007\u000e\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002"+
+ "\u0011\u0007\u0011\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002"+
+ "\u0014\u0007\u0014\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002"+
+ "\u0017\u0007\u0017\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002"+
+ "\u001a\u0007\u001a\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002"+
+ "\u001d\u0007\u001d\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002"+
+ " \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002"+
+ "%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002"+
+ "*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002"+
+ "/\u0007/\u00020\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u0002"+
+ "4\u00074\u00025\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u0002"+
+ "9\u00079\u0002:\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002"+
+ ">\u0007>\u0002?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002"+
+ "C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002"+
+ "H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002"+
+ "M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002"+
+ "R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002"+
+ "W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002"+
+ "\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002"+
+ "a\u0007a\u0002b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002"+
+ "f\u0007f\u0002g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002"+
+ "k\u0007k\u0002l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002"+
+ "p\u0007p\u0002q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002"+
+ "u\u0007u\u0002v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002"+
+ "z\u0007z\u0002{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002"+
+ "\u007f\u0007\u007f\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002"+
+ "\u0082\u0007\u0082\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002"+
+ "\u0085\u0007\u0085\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002"+
+ "\u0088\u0007\u0088\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002"+
+ "\u008b\u0007\u008b\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002"+
+ "\u008e\u0007\u008e\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002"+
+ "\u0091\u0007\u0091\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002"+
+ "\u0094\u0007\u0094\u0002\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002"+
+ "\u0097\u0007\u0097\u0002\u0098\u0007\u0098\u0002\u0099\u0007\u0099\u0002"+
+ "\u009a\u0007\u009a\u0002\u009b\u0007\u009b\u0002\u009c\u0007\u009c\u0002"+
+ "\u009d\u0007\u009d\u0002\u009e\u0007\u009e\u0002\u009f\u0007\u009f\u0002"+
+ "\u00a0\u0007\u00a0\u0002\u00a1\u0007\u00a1\u0002\u00a2\u0007\u00a2\u0002"+
+ "\u00a3\u0007\u00a3\u0002\u00a4\u0007\u00a4\u0002\u00a5\u0007\u00a5\u0002"+
+ "\u00a6\u0007\u00a6\u0002\u00a7\u0007\u00a7\u0002\u00a8\u0007\u00a8\u0002"+
+ "\u00a9\u0007\u00a9\u0002\u00aa\u0007\u00aa\u0002\u00ab\u0007\u00ab\u0002"+
+ "\u00ac\u0007\u00ac\u0002\u00ad\u0007\u00ad\u0002\u00ae\u0007\u00ae\u0002"+
+ "\u00af\u0007\u00af\u0002\u00b0\u0007\u00b0\u0002\u00b1\u0007\u00b1\u0002"+
+ "\u00b2\u0007\u00b2\u0002\u00b3\u0007\u00b3\u0002\u00b4\u0007\u00b4\u0002"+
+ "\u00b5\u0007\u00b5\u0002\u00b6\u0007\u00b6\u0002\u00b7\u0007\u00b7\u0002"+
+ "\u00b8\u0007\u00b8\u0002\u00b9\u0007\u00b9\u0002\u00ba\u0007\u00ba\u0002"+
+ "\u00bb\u0007\u00bb\u0002\u00bc\u0007\u00bc\u0002\u00bd\u0007\u00bd\u0002"+
+ "\u00be\u0007\u00be\u0002\u00bf\u0007\u00bf\u0002\u00c0\u0007\u00c0\u0002"+
+ "\u00c1\u0007\u00c1\u0002\u00c2\u0007\u00c2\u0002\u00c3\u0007\u00c3\u0002"+
+ "\u00c4\u0007\u00c4\u0002\u00c5\u0007\u00c5\u0002\u00c6\u0007\u00c6\u0002"+
+ "\u00c7\u0007\u00c7\u0002\u00c8\u0007\u00c8\u0002\u00c9\u0007\u00c9\u0002"+
+ "\u00ca\u0007\u00ca\u0002\u00cb\u0007\u00cb\u0002\u00cc\u0007\u00cc\u0002"+
+ "\u00cd\u0007\u00cd\u0002\u00ce\u0007\u00ce\u0002\u00cf\u0007\u00cf\u0002"+
+ "\u00d0\u0007\u00d0\u0002\u00d1\u0007\u00d1\u0002\u00d2\u0007\u00d2\u0002"+
+ "\u00d3\u0007\u00d3\u0002\u00d4\u0007\u00d4\u0002\u00d5\u0007\u00d5\u0002"+
+ "\u00d6\u0007\u00d6\u0002\u00d7\u0007\u00d7\u0002\u00d8\u0007\u00d8\u0002"+
+ "\u00d9\u0007\u00d9\u0002\u00da\u0007\u00da\u0002\u00db\u0007\u00db\u0002"+
+ "\u00dc\u0007\u00dc\u0002\u00dd\u0007\u00dd\u0002\u00de\u0007\u00de\u0002"+
+ "\u00df\u0007\u00df\u0002\u00e0\u0007\u00e0\u0002\u00e1\u0007\u00e1\u0002"+
+ "\u00e2\u0007\u00e2\u0002\u00e3\u0007\u00e3\u0002\u00e4\u0007\u00e4\u0002"+
+ "\u00e5\u0007\u00e5\u0002\u00e6\u0007\u00e6\u0002\u00e7\u0007\u00e7\u0002"+
+ "\u00e8\u0007\u00e8\u0002\u00e9\u0007\u00e9\u0002\u00ea\u0007\u00ea\u0001"+
+ "\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0005\u0000\u01ed\b\u0000\n"+
+ "\u0000\f\u0000\u01f0\t\u0000\u0001\u0000\u0003\u0000\u01f3\b\u0000\u0001"+
+ "\u0000\u0003\u0000\u01f6\b\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0005\u0001\u01ff\b\u0001\n"+
+ "\u0001\f\u0001\u0202\t\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0002\u0004\u0002\u020a\b\u0002\u000b\u0002\f"+
+ "\u0002\u020b\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003"+
+ "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
+ "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
+ "\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
+ "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+
+ "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
"\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
- "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+
- "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001"+
- "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001"+
- "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+
- "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+
- "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+
- "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001"+
+ "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
+ "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
+ "\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001"+
+ "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001"+
+ "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b"+
+ "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001"+
"\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e"+
- "\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f"+
+ "\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+
+ "\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+
"\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+
"\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+
- "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011"+
+ "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011"+
"\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+
- "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+
- "\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+
"\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+
- "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013"+
- "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
- "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014"+
+ "\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
+ "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014"+
"\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
- "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+
+ "\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015"+
"\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015"+
- "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016"+
+ "\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+
"\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+
"\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+
- "\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018"+
- "\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0019"+
- "\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+
- "\u0001\u0019\u0001\u001a\u0004\u001a\u02e2\b\u001a\u000b\u001a\f\u001a"+
- "\u02e3\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+
- "\u001b\u0005\u001b\u02ec\b\u001b\n\u001b\f\u001b\u02ef\t\u001b\u0001\u001b"+
- "\u0003\u001b\u02f2\b\u001b\u0001\u001b\u0003\u001b\u02f5\b\u001b\u0001"+
- "\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+
- "\u001c\u0005\u001c\u02fe\b\u001c\n\u001c\f\u001c\u0301\t\u001c\u0001\u001c"+
- "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0004\u001d"+
- "\u0309\b\u001d\u000b\u001d\f\u001d\u030a\u0001\u001d\u0001\u001d\u0001"+
- "\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001"+
- " \u0001 \u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001#\u0001#\u0003#\u031e"+
- "\b#\u0001#\u0004#\u0321\b#\u000b#\f#\u0322\u0001$\u0001$\u0001%\u0001"+
- "%\u0001&\u0001&\u0001&\u0003&\u032c\b&\u0001\'\u0001\'\u0001(\u0001(\u0001"+
- "(\u0003(\u0333\b(\u0001)\u0001)\u0001)\u0005)\u0338\b)\n)\f)\u033b\t)"+
- "\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0005)\u0343\b)\n)\f)\u0346"+
- "\t)\u0001)\u0001)\u0001)\u0001)\u0001)\u0003)\u034d\b)\u0001)\u0003)\u0350"+
- "\b)\u0003)\u0352\b)\u0001*\u0004*\u0355\b*\u000b*\f*\u0356\u0001+\u0004"+
- "+\u035a\b+\u000b+\f+\u035b\u0001+\u0001+\u0005+\u0360\b+\n+\f+\u0363\t"+
- "+\u0001+\u0001+\u0004+\u0367\b+\u000b+\f+\u0368\u0001+\u0004+\u036c\b"+
- "+\u000b+\f+\u036d\u0001+\u0001+\u0005+\u0372\b+\n+\f+\u0375\t+\u0003+"+
- "\u0377\b+\u0001+\u0001+\u0001+\u0001+\u0004+\u037d\b+\u000b+\f+\u037e"+
- "\u0001+\u0001+\u0003+\u0383\b+\u0001,\u0001,\u0001,\u0001-\u0001-\u0001"+
- "-\u0001-\u0001.\u0001.\u0001.\u0001.\u0001/\u0001/\u00010\u00010\u0001"+
- "0\u00011\u00011\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u0001"+
- "4\u00014\u00015\u00015\u00015\u00015\u00015\u00015\u00016\u00016\u0001"+
- "6\u00016\u00016\u00016\u00017\u00017\u00017\u00018\u00018\u00018\u0001"+
- "9\u00019\u00019\u00019\u00019\u0001:\u0001:\u0001:\u0001:\u0001:\u0001"+
- ";\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001<\u0001<\u0001=\u0001"+
- "=\u0001=\u0001=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001?\u0001?\u0001"+
- "@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001A\u0001A\u0001A\u0001A\u0001"+
- "A\u0001B\u0001B\u0001B\u0001C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001"+
- "E\u0001E\u0001F\u0001F\u0001F\u0001G\u0001G\u0001H\u0001H\u0001H\u0001"+
- "I\u0001I\u0001J\u0001J\u0001K\u0001K\u0001L\u0001L\u0001M\u0001M\u0001"+
- "N\u0001N\u0001O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0001"+
- "Q\u0003Q\u0403\bQ\u0001Q\u0005Q\u0406\bQ\nQ\fQ\u0409\tQ\u0001Q\u0001Q"+
- "\u0004Q\u040d\bQ\u000bQ\fQ\u040e\u0003Q\u0411\bQ\u0001R\u0001R\u0001R"+
- "\u0001R\u0001R\u0001S\u0001S\u0001S\u0001S\u0001S\u0001T\u0001T\u0001"+
- "T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001U\u0001U\u0001V\u0001V\u0005"+
- "V\u0429\bV\nV\fV\u042c\tV\u0001V\u0001V\u0003V\u0430\bV\u0001V\u0004V"+
- "\u0433\bV\u000bV\fV\u0434\u0003V\u0437\bV\u0001W\u0001W\u0004W\u043b\b"+
- "W\u000bW\fW\u043c\u0001W\u0001W\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001"+
- "Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001\\\u0001"+
- "\\\u0001\\\u0001\\\u0001\\\u0001]\u0001]\u0001]\u0001]\u0001]\u0001^\u0001"+
- "^\u0001^\u0001^\u0001_\u0001_\u0001_\u0001_\u0001`\u0001`\u0001`\u0001"+
- "`\u0001a\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001"+
- "c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001"+
- "e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001"+
- "g\u0001g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0003h\u048a\bh\u0001"+
- "i\u0004i\u048d\bi\u000bi\fi\u048e\u0001j\u0001j\u0001j\u0001j\u0001k\u0001"+
- "k\u0001k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001"+
- "m\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+
- "p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001"+
- "r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0003"+
- "t\u04be\bt\u0001u\u0001u\u0003u\u04c2\bu\u0001u\u0005u\u04c5\bu\nu\fu"+
- "\u04c8\tu\u0001u\u0001u\u0003u\u04cc\bu\u0001u\u0004u\u04cf\bu\u000bu"+
- "\fu\u04d0\u0003u\u04d3\bu\u0001v\u0001v\u0004v\u04d7\bv\u000bv\fv\u04d8"+
- "\u0001w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001y\u0001"+
- "y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001{\u0001{\u0001"+
- "{\u0001{\u0001|\u0001|\u0001|\u0001|\u0001}\u0001}\u0001}\u0001}\u0001"+
- "~\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f"+
- "\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0081"+
- "\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0083"+
- "\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084"+
- "\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085"+
- "\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0087"+
- "\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088"+
- "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089"+
- "\u0001\u0089\u0001\u008a\u0004\u008a\u052c\b\u008a\u000b\u008a\f\u008a"+
- "\u052d\u0001\u008a\u0001\u008a\u0003\u008a\u0532\b\u008a\u0001\u008a\u0004"+
- "\u008a\u0535\b\u008a\u000b\u008a\f\u008a\u0536\u0001\u008b\u0001\u008b"+
- "\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c"+
- "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008e\u0001\u008e"+
- "\u0001\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+
- "\u0001\u008f\u0001\u008f\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090"+
- "\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0092\u0001\u0092"+
- "\u0001\u0092\u0001\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093"+
- "\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095"+
- "\u0001\u0095\u0001\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096"+
- "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098\u0001\u0098"+
- "\u0001\u0098\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099"+
+ "\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+
+ "\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018"+
+ "\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+
+ "\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a"+
+ "\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a"+
+ "\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b"+
+ "\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001c"+
+ "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c"+
+ "\u0001\u001d\u0004\u001d\u02fe\b\u001d\u000b\u001d\f\u001d\u02ff\u0001"+
+ "\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001"+
+ "\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001"+
+ " \u0001 \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001"+
+ "#\u0001#\u0001#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001"+
+ "%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001\'\u0001"+
+ "(\u0001(\u0001(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+
+ "*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001+\u0001+\u0001+\u0001+\u0001"+
+ "+\u0001+\u0001,\u0001,\u0001-\u0004-\u0346\b-\u000b-\f-\u0347\u0001-\u0001"+
+ "-\u0003-\u034c\b-\u0001-\u0004-\u034f\b-\u000b-\f-\u0350\u0001.\u0001"+
+ ".\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u00010\u00010\u00010\u0001"+
+ "0\u00011\u00011\u00011\u00011\u00012\u00012\u00012\u00012\u00012\u0001"+
+ "2\u00013\u00013\u00013\u00013\u00014\u00014\u00014\u00014\u00015\u0001"+
+ "5\u00015\u00015\u00016\u00016\u00016\u00016\u00017\u00017\u00017\u0001"+
+ "7\u00018\u00018\u00018\u00018\u00019\u00019\u00019\u00019\u0001:\u0001"+
+ ":\u0001:\u0001:\u0001;\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001"+
+ "<\u0001=\u0001=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+
+ "?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001@\u0001@\u0001@\u0004@\u03a3"+
+ "\b@\u000b@\f@\u03a4\u0001A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001B\u0001"+
+ "B\u0001C\u0001C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001D\u0001D\u0001"+
+ "E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001G\u0001"+
+ "G\u0001G\u0001G\u0001H\u0001H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001"+
+ "I\u0001J\u0001J\u0001K\u0001K\u0001L\u0001L\u0001L\u0001M\u0001M\u0001"+
+ "N\u0001N\u0003N\u03d8\bN\u0001N\u0004N\u03db\bN\u000bN\fN\u03dc\u0001"+
+ "O\u0001O\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0003Q\u03e6\bQ\u0001R\u0001"+
+ "R\u0001S\u0001S\u0001S\u0003S\u03ed\bS\u0001T\u0001T\u0001T\u0005T\u03f2"+
+ "\bT\nT\fT\u03f5\tT\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0005T\u03fd"+
+ "\bT\nT\fT\u0400\tT\u0001T\u0001T\u0001T\u0001T\u0001T\u0003T\u0407\bT"+
+ "\u0001T\u0003T\u040a\bT\u0003T\u040c\bT\u0001U\u0004U\u040f\bU\u000bU"+
+ "\fU\u0410\u0001V\u0004V\u0414\bV\u000bV\fV\u0415\u0001V\u0001V\u0005V"+
+ "\u041a\bV\nV\fV\u041d\tV\u0001V\u0001V\u0004V\u0421\bV\u000bV\fV\u0422"+
+ "\u0001V\u0004V\u0426\bV\u000bV\fV\u0427\u0001V\u0001V\u0005V\u042c\bV"+
+ "\nV\fV\u042f\tV\u0003V\u0431\bV\u0001V\u0001V\u0001V\u0001V\u0004V\u0437"+
+ "\bV\u000bV\fV\u0438\u0001V\u0001V\u0003V\u043d\bV\u0001W\u0001W\u0001"+
+ "W\u0001X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001"+
+ "Z\u0001[\u0001[\u0001[\u0001\\\u0001\\\u0001]\u0001]\u0001^\u0001^\u0001"+
+ "^\u0001^\u0001^\u0001_\u0001_\u0001`\u0001`\u0001`\u0001`\u0001`\u0001"+
+ "`\u0001a\u0001a\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001"+
+ "c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001"+
+ "e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001"+
+ "g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001"+
+ "i\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001l\u0001"+
+ "l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001"+
+ "o\u0001o\u0001o\u0001p\u0001p\u0001q\u0001q\u0001q\u0001r\u0001r\u0001"+
+ "s\u0001s\u0001s\u0001t\u0001t\u0001u\u0001u\u0001v\u0001v\u0001w\u0001"+
+ "w\u0001x\u0001x\u0001y\u0001y\u0001z\u0001z\u0001{\u0001{\u0001{\u0001"+
+ "{\u0001|\u0001|\u0001|\u0003|\u04bd\b|\u0001|\u0005|\u04c0\b|\n|\f|\u04c3"+
+ "\t|\u0001|\u0001|\u0004|\u04c7\b|\u000b|\f|\u04c8\u0003|\u04cb\b|\u0001"+
+ "}\u0001}\u0001}\u0001}\u0001}\u0001~\u0001~\u0001~\u0001~\u0001~\u0001"+
+ "\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001"+
+ "\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0005"+
+ "\u0081\u04e3\b\u0081\n\u0081\f\u0081\u04e6\t\u0081\u0001\u0081\u0001\u0081"+
+ "\u0003\u0081\u04ea\b\u0081\u0001\u0081\u0004\u0081\u04ed\b\u0081\u000b"+
+ "\u0081\f\u0081\u04ee\u0003\u0081\u04f1\b\u0081\u0001\u0082\u0001\u0082"+
+ "\u0004\u0082\u04f5\b\u0082\u000b\u0082\f\u0082\u04f6\u0001\u0082\u0001"+
+ "\u0082\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001"+
+ "\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086\u0001"+
+ "\u0086\u0001\u0086\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001"+
+ "\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001"+
+ "\u0089\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a\u0001"+
+ "\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001"+
+ "\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008d\u0001\u008d\u0001"+
+ "\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001"+
+ "\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0003\u008e\u052e\b\u008e\u0001"+
+ "\u008f\u0004\u008f\u0531\b\u008f\u000b\u008f\f\u008f\u0532\u0001\u0090"+
+ "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091\u0001\u0091"+
+ "\u0001\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0093"+
+ "\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0094\u0001\u0094\u0001\u0094"+
+ "\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095"+
+ "\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0097"+
+ "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098\u0001\u0098\u0001\u0098"+
+ "\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a"+
"\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009b\u0001\u009b"+
"\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009c"+
- "\u0001\u009c\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009e"+
- "\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009f\u0001\u009f\u0001\u009f"+
- "\u0001\u009f\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a1"+
- "\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2\u0001\u00a2"+
- "\u0001\u00a2\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a4"+
+ "\u0001\u009c\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d"+
+ "\u0001\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e"+
+ "\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009f\u0001\u009f"+
+ "\u0001\u009f\u0001\u009f\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0"+
+ "\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2"+
+ "\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3"+
"\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5"+
- "\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001\u00a6\u0001\u00a6"+
- "\u0001\u00a6\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a8"+
+ "\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+
+ "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a8"+
"\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a9\u0001\u00a9\u0001\u00a9"+
- "\u0001\u00a9\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+
- "\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0004\u00ab"+
- "\u05c4\b\u00ab\u000b\u00ab\f\u00ab\u05c5\u0001\u00ac\u0001\u00ac\u0001"+
- "\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001"+
- "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af\u0001"+
- "\u00af\u0001\u00af\u0001\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001"+
- "\u00b0\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b2\u0001"+
- "\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001"+
- "\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001"+
- "\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b6\u0001\u00b6\u0001"+
- "\u00b6\u0001\u00b6\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+
- "\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001\u00b9\u0001"+
- "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00ba\u0001\u00ba\u0001"+
- "\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+
- "\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bd\u0001\u00bd\u0001"+
- "\u00bd\u0001\u00bd\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001"+
- "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00c0\u0001\u00c0\u0001"+
- "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001"+
- "\u00c1\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001"+
- "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001"+
- "\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
- "\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001"+
- "\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001"+
- "\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001"+
- "\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001"+
- "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001"+
- "\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd\u0001"+
- "\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001"+
- "\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001"+
- "\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001"+
- "\u00d0\u0001\u00d0\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001"+
- "\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d3\u0001\u00d3\u0001"+
- "\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d4\u0001\u00d4\u0001"+
- "\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d5\u0001\u00d5\u0001"+
- "\u00d5\u0001\u00d5\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001"+
- "\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001"+
- "\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001\u00d9\u0001"+
- "\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00da\u0001\u00da\u0001"+
- "\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db\u0001"+
- "\u00db\u0001\u00db\u0001\u00db\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+
- "\u00dc\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001"+
- "\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df\u0001\u00df\u0001"+
- "\u00df\u0001\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+
- "\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e2\u0001\u00e2\u0001"+
- "\u00e2\u0001\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001"+
- "\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5\u0001\u00e5\u0001"+
- "\u00e5\u0001\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001"+
- "\u00e6\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e8\u0001"+
- "\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001"+
- "\u00e9\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00eb\u0001"+
- "\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00ec\u0001\u00ec\u0001"+
- "\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001"+
- "\u00ed\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ef\u0001"+
- "\u00ef\u0001\u00ef\u0001\u00ef\u0002\u02ff\u0344\u0000\u00f0\u0013\u0001"+
- "\u0015\u0002\u0017\u0003\u0019\u0004\u001b\u0005\u001d\u0006\u001f\u0007"+
- "!\b#\t%\n\'\u000b)\f+\r-\u000e/\u000f1\u00103\u00115\u00127\u00139\u0014"+
- ";\u0015=\u0016?\u0017A\u0018C\u0019E\u001aG\u001bI\u001cK\u001dM\u001e"+
- "O\u001fQ\u0000S\u0000U\u0000W\u0000Y\u0000[\u0000]\u0000_\u0000a\u0000"+
- "c\u0000e g!i\"k#m$o%q&s\'u(w)y*{+},\u007f-\u0081.\u0083/\u00850\u0087"+
- "1\u00892\u008b3\u008d4\u008f5\u00916\u00937\u00958\u00979\u0099:\u009b"+
- ";\u009d<\u009f=\u00a1>\u00a3?\u00a5@\u00a7A\u00a9B\u00abC\u00adD\u00af"+
- "E\u00b1F\u00b3\u0000\u00b5G\u00b7H\u00b9I\u00bbJ\u00bdK\u00bfL\u00c1\u0000"+
- "\u00c3M\u00c5N\u00c7O\u00c9P\u00cb\u0000\u00cd\u0000\u00cfQ\u00d1R\u00d3"+
- "S\u00d5\u0000\u00d7\u0000\u00d9\u0000\u00db\u0000\u00dd\u0000\u00df\u0000"+
- "\u00e1T\u00e3\u0000\u00e5U\u00e7\u0000\u00e9\u0000\u00ebV\u00edW\u00ef"+
- "X\u00f1\u0000\u00f3\u0000\u00f5\u0000\u00f7\u0000\u00f9\u0000\u00fb\u0000"+
- "\u00fd\u0000\u00ffY\u0101Z\u0103[\u0105\\\u0107\u0000\u0109\u0000\u010b"+
- "\u0000\u010d\u0000\u010f\u0000\u0111\u0000\u0113]\u0115\u0000\u0117^\u0119"+
- "_\u011b`\u011d\u0000\u011f\u0000\u0121a\u0123b\u0125\u0000\u0127c\u0129"+
- "\u0000\u012bd\u012de\u012ff\u0131\u0000\u0133\u0000\u0135\u0000\u0137"+
- "\u0000\u0139\u0000\u013b\u0000\u013d\u0000\u013f\u0000\u0141\u0000\u0143"+
- "g\u0145h\u0147i\u0149\u0000\u014b\u0000\u014d\u0000\u014f\u0000\u0151"+
- "\u0000\u0153\u0000\u0155j\u0157k\u0159l\u015b\u0000\u015dm\u015fn\u0161"+
- "o\u0163p\u0165\u0000\u0167\u0000\u0169q\u016br\u016ds\u016ft\u0171\u0000"+
- "\u0173\u0000\u0175\u0000\u0177\u0000\u0179\u0000\u017b\u0000\u017d\u0000"+
- "\u017fu\u0181v\u0183w\u0185\u0000\u0187\u0000\u0189\u0000\u018b\u0000"+
- "\u018dx\u018fy\u0191z\u0193\u0000\u0195{\u0197\u0000\u0199\u0000\u019b"+
- "|\u019d\u0000\u019f\u0000\u01a1\u0000\u01a3\u0000\u01a5\u0000\u01a7}\u01a9"+
- "~\u01ab\u007f\u01ad\u0000\u01af\u0000\u01b1\u0000\u01b3\u0080\u01b5\u0081"+
- "\u01b7\u0082\u01b9\u0000\u01bb\u0000\u01bd\u0083\u01bf\u0084\u01c1\u0085"+
- "\u01c3\u0000\u01c5\u0000\u01c7\u0000\u01c9\u0000\u01cb\u0000\u01cd\u0000"+
- "\u01cf\u0000\u01d1\u0000\u01d3\u0000\u01d5\u0000\u01d7\u0000\u01d9\u0086"+
- "\u01db\u0087\u01dd\u0088\u01df\u0000\u01e1\u0000\u01e3\u0089\u01e5\u008a"+
- "\u01e7\u008b\u01e9\u0000\u01eb\u0000\u01ed\u008c\u01ef\u008d\u01f1\u008e"+
- "\u0013\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r"+
- "\u000e\u000f\u0010\u0011\u0012$\u0002\u0000DDdd\u0002\u0000IIii\u0002"+
- "\u0000SSss\u0002\u0000EEee\u0002\u0000CCcc\u0002\u0000TTtt\u0002\u0000"+
- "RRrr\u0002\u0000OOoo\u0002\u0000PPpp\u0002\u0000NNnn\u0002\u0000HHhh\u0002"+
- "\u0000VVvv\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000XXxx\u0002\u0000"+
- "FFff\u0002\u0000MMmm\u0002\u0000GGgg\u0002\u0000KKkk\u0002\u0000WWww\u0002"+
- "\u0000UUuu\u0006\u0000\t\n\r\r //[[]]\u0002\u0000\n\n\r\r\u0003\u0000"+
- "\t\n\r\r \u0001\u000009\u0002\u0000AZaz\b\u0000\"\"NNRRTT\\\\nnrrtt\u0004"+
- "\u0000\n\n\r\r\"\"\\\\\u0002\u0000++--\u0001\u0000``\u0002\u0000BBbb\u0002"+
- "\u0000YYyy\u000b\u0000\t\n\r\r \"\",,//::==[[]]||\u0002\u0000**//\u000b"+
- "\u0000\t\n\r\r \"#,,//::<<>?\\\\||\u0002\u0000JJjj\u0710\u0000\u0013"+
- "\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017"+
- "\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b"+
- "\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f"+
- "\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000"+
- "\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000"+
- "\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000"+
- "-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001"+
- "\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000"+
- "\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000"+
- ";\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001"+
- "\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C\u0001\u0000\u0000"+
- "\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000\u0000"+
- "I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000\u0000M\u0001"+
- "\u0000\u0000\u0000\u0001O\u0001\u0000\u0000\u0000\u0001e\u0001\u0000\u0000"+
- "\u0000\u0001g\u0001\u0000\u0000\u0000\u0001i\u0001\u0000\u0000\u0000\u0001"+
- "k\u0001\u0000\u0000\u0000\u0001m\u0001\u0000\u0000\u0000\u0001o\u0001"+
- "\u0000\u0000\u0000\u0001q\u0001\u0000\u0000\u0000\u0001s\u0001\u0000\u0000"+
- "\u0000\u0001u\u0001\u0000\u0000\u0000\u0001w\u0001\u0000\u0000\u0000\u0001"+
- "y\u0001\u0000\u0000\u0000\u0001{\u0001\u0000\u0000\u0000\u0001}\u0001"+
- "\u0000\u0000\u0000\u0001\u007f\u0001\u0000\u0000\u0000\u0001\u0081\u0001"+
- "\u0000\u0000\u0000\u0001\u0083\u0001\u0000\u0000\u0000\u0001\u0085\u0001"+
- "\u0000\u0000\u0000\u0001\u0087\u0001\u0000\u0000\u0000\u0001\u0089\u0001"+
- "\u0000\u0000\u0000\u0001\u008b\u0001\u0000\u0000\u0000\u0001\u008d\u0001"+
- "\u0000\u0000\u0000\u0001\u008f\u0001\u0000\u0000\u0000\u0001\u0091\u0001"+
- "\u0000\u0000\u0000\u0001\u0093\u0001\u0000\u0000\u0000\u0001\u0095\u0001"+
- "\u0000\u0000\u0000\u0001\u0097\u0001\u0000\u0000\u0000\u0001\u0099\u0001"+
- "\u0000\u0000\u0000\u0001\u009b\u0001\u0000\u0000\u0000\u0001\u009d\u0001"+
- "\u0000\u0000\u0000\u0001\u009f\u0001\u0000\u0000\u0000\u0001\u00a1\u0001"+
- "\u0000\u0000\u0000\u0001\u00a3\u0001\u0000\u0000\u0000\u0001\u00a5\u0001"+
- "\u0000\u0000\u0000\u0001\u00a7\u0001\u0000\u0000\u0000\u0001\u00a9\u0001"+
- "\u0000\u0000\u0000\u0001\u00ab\u0001\u0000\u0000\u0000\u0001\u00ad\u0001"+
- "\u0000\u0000\u0000\u0001\u00af\u0001\u0000\u0000\u0000\u0001\u00b1\u0001"+
- "\u0000\u0000\u0000\u0001\u00b3\u0001\u0000\u0000\u0000\u0001\u00b5\u0001"+
- "\u0000\u0000\u0000\u0001\u00b7\u0001\u0000\u0000\u0000\u0001\u00b9\u0001"+
- "\u0000\u0000\u0000\u0001\u00bb\u0001\u0000\u0000\u0000\u0001\u00bd\u0001"+
- "\u0000\u0000\u0000\u0001\u00bf\u0001\u0000\u0000\u0000\u0001\u00c3\u0001"+
- "\u0000\u0000\u0000\u0001\u00c5\u0001\u0000\u0000\u0000\u0001\u00c7\u0001"+
- "\u0000\u0000\u0000\u0001\u00c9\u0001\u0000\u0000\u0000\u0002\u00cb\u0001"+
- "\u0000\u0000\u0000\u0002\u00cd\u0001\u0000\u0000\u0000\u0002\u00cf\u0001"+
- "\u0000\u0000\u0000\u0002\u00d1\u0001\u0000\u0000\u0000\u0002\u00d3\u0001"+
- "\u0000\u0000\u0000\u0003\u00d5\u0001\u0000\u0000\u0000\u0003\u00d7\u0001"+
- "\u0000\u0000\u0000\u0003\u00d9\u0001\u0000\u0000\u0000\u0003\u00db\u0001"+
- "\u0000\u0000\u0000\u0003\u00dd\u0001\u0000\u0000\u0000\u0003\u00df\u0001"+
- "\u0000\u0000\u0000\u0003\u00e1\u0001\u0000\u0000\u0000\u0003\u00e5\u0001"+
- "\u0000\u0000\u0000\u0003\u00e7\u0001\u0000\u0000\u0000\u0003\u00e9\u0001"+
- "\u0000\u0000\u0000\u0003\u00eb\u0001\u0000\u0000\u0000\u0003\u00ed\u0001"+
- "\u0000\u0000\u0000\u0003\u00ef\u0001\u0000\u0000\u0000\u0004\u00f1\u0001"+
- "\u0000\u0000\u0000\u0004\u00f3\u0001\u0000\u0000\u0000\u0004\u00f5\u0001"+
- "\u0000\u0000\u0000\u0004\u00f7\u0001\u0000\u0000\u0000\u0004\u00f9\u0001"+
- "\u0000\u0000\u0000\u0004\u00ff\u0001\u0000\u0000\u0000\u0004\u0101\u0001"+
- "\u0000\u0000\u0000\u0004\u0103\u0001\u0000\u0000\u0000\u0004\u0105\u0001"+
- "\u0000\u0000\u0000\u0005\u0107\u0001\u0000\u0000\u0000\u0005\u0109\u0001"+
- "\u0000\u0000\u0000\u0005\u010b\u0001\u0000\u0000\u0000\u0005\u010d\u0001"+
- "\u0000\u0000\u0000\u0005\u010f\u0001\u0000\u0000\u0000\u0005\u0111\u0001"+
- "\u0000\u0000\u0000\u0005\u0113\u0001\u0000\u0000\u0000\u0005\u0115\u0001"+
- "\u0000\u0000\u0000\u0005\u0117\u0001\u0000\u0000\u0000\u0005\u0119\u0001"+
- "\u0000\u0000\u0000\u0005\u011b\u0001\u0000\u0000\u0000\u0006\u011d\u0001"+
- "\u0000\u0000\u0000\u0006\u011f\u0001\u0000\u0000\u0000\u0006\u0121\u0001"+
- "\u0000\u0000\u0000\u0006\u0123\u0001\u0000\u0000\u0000\u0006\u0127\u0001"+
- "\u0000\u0000\u0000\u0006\u0129\u0001\u0000\u0000\u0000\u0006\u012b\u0001"+
- "\u0000\u0000\u0000\u0006\u012d\u0001\u0000\u0000\u0000\u0006\u012f\u0001"+
- "\u0000\u0000\u0000\u0007\u0131\u0001\u0000\u0000\u0000\u0007\u0133\u0001"+
- "\u0000\u0000\u0000\u0007\u0135\u0001\u0000\u0000\u0000\u0007\u0137\u0001"+
- "\u0000\u0000\u0000\u0007\u0139\u0001\u0000\u0000\u0000\u0007\u013b\u0001"+
- "\u0000\u0000\u0000\u0007\u013d\u0001\u0000\u0000\u0000\u0007\u013f\u0001"+
- "\u0000\u0000\u0000\u0007\u0141\u0001\u0000\u0000\u0000\u0007\u0143\u0001"+
- "\u0000\u0000\u0000\u0007\u0145\u0001\u0000\u0000\u0000\u0007\u0147\u0001"+
- "\u0000\u0000\u0000\b\u0149\u0001\u0000\u0000\u0000\b\u014b\u0001\u0000"+
- "\u0000\u0000\b\u014d\u0001\u0000\u0000\u0000\b\u014f\u0001\u0000\u0000"+
- "\u0000\b\u0151\u0001\u0000\u0000\u0000\b\u0153\u0001\u0000\u0000\u0000"+
- "\b\u0155\u0001\u0000\u0000\u0000\b\u0157\u0001\u0000\u0000\u0000\b\u0159"+
- "\u0001\u0000\u0000\u0000\t\u015b\u0001\u0000\u0000\u0000\t\u015d\u0001"+
- "\u0000\u0000\u0000\t\u015f\u0001\u0000\u0000\u0000\t\u0161\u0001\u0000"+
- "\u0000\u0000\t\u0163\u0001\u0000\u0000\u0000\n\u0165\u0001\u0000\u0000"+
- "\u0000\n\u0167\u0001\u0000\u0000\u0000\n\u0169\u0001\u0000\u0000\u0000"+
- "\n\u016b\u0001\u0000\u0000\u0000\n\u016d\u0001\u0000\u0000\u0000\n\u016f"+
- "\u0001\u0000\u0000\u0000\u000b\u0171\u0001\u0000\u0000\u0000\u000b\u0173"+
- "\u0001\u0000\u0000\u0000\u000b\u0175\u0001\u0000\u0000\u0000\u000b\u0177"+
- "\u0001\u0000\u0000\u0000\u000b\u0179\u0001\u0000\u0000\u0000\u000b\u017b"+
- "\u0001\u0000\u0000\u0000\u000b\u017d\u0001\u0000\u0000\u0000\u000b\u017f"+
- "\u0001\u0000\u0000\u0000\u000b\u0181\u0001\u0000\u0000\u0000\u000b\u0183"+
- "\u0001\u0000\u0000\u0000\f\u0185\u0001\u0000\u0000\u0000\f\u0187\u0001"+
- "\u0000\u0000\u0000\f\u0189\u0001\u0000\u0000\u0000\f\u018b\u0001\u0000"+
- "\u0000\u0000\f\u018d\u0001\u0000\u0000\u0000\f\u018f\u0001\u0000\u0000"+
- "\u0000\f\u0191\u0001\u0000\u0000\u0000\r\u0193\u0001\u0000\u0000\u0000"+
- "\r\u0195\u0001\u0000\u0000\u0000\r\u0197\u0001\u0000\u0000\u0000\r\u0199"+
- "\u0001\u0000\u0000\u0000\r\u019b\u0001\u0000\u0000\u0000\r\u019d\u0001"+
- "\u0000\u0000\u0000\r\u019f\u0001\u0000\u0000\u0000\r\u01a1\u0001\u0000"+
- "\u0000\u0000\r\u01a3\u0001\u0000\u0000\u0000\r\u01a5\u0001\u0000\u0000"+
- "\u0000\r\u01a7\u0001\u0000\u0000\u0000\r\u01a9\u0001\u0000\u0000\u0000"+
- "\r\u01ab\u0001\u0000\u0000\u0000\u000e\u01ad\u0001\u0000\u0000\u0000\u000e"+
- "\u01af\u0001\u0000\u0000\u0000\u000e\u01b1\u0001\u0000\u0000\u0000\u000e"+
- "\u01b3\u0001\u0000\u0000\u0000\u000e\u01b5\u0001\u0000\u0000\u0000\u000e"+
- "\u01b7\u0001\u0000\u0000\u0000\u000f\u01b9\u0001\u0000\u0000\u0000\u000f"+
- "\u01bb\u0001\u0000\u0000\u0000\u000f\u01bd\u0001\u0000\u0000\u0000\u000f"+
- "\u01bf\u0001\u0000\u0000\u0000\u000f\u01c1\u0001\u0000\u0000\u0000\u000f"+
- "\u01c3\u0001\u0000\u0000\u0000\u000f\u01c5\u0001\u0000\u0000\u0000\u000f"+
- "\u01c7\u0001\u0000\u0000\u0000\u000f\u01c9\u0001\u0000\u0000\u0000\u0010"+
- "\u01cb\u0001\u0000\u0000\u0000\u0010\u01cd\u0001\u0000\u0000\u0000\u0010"+
- "\u01cf\u0001\u0000\u0000\u0000\u0010\u01d1\u0001\u0000\u0000\u0000\u0010"+
- "\u01d3\u0001\u0000\u0000\u0000\u0010\u01d5\u0001\u0000\u0000\u0000\u0010"+
- "\u01d7\u0001\u0000\u0000\u0000\u0010\u01d9\u0001\u0000\u0000\u0000\u0010"+
- "\u01db\u0001\u0000\u0000\u0000\u0010\u01dd\u0001\u0000\u0000\u0000\u0011"+
- "\u01df\u0001\u0000\u0000\u0000\u0011\u01e1\u0001\u0000\u0000\u0000\u0011"+
- "\u01e3\u0001\u0000\u0000\u0000\u0011\u01e5\u0001\u0000\u0000\u0000\u0011"+
- "\u01e7\u0001\u0000\u0000\u0000\u0012\u01e9\u0001\u0000\u0000\u0000\u0012"+
- "\u01eb\u0001\u0000\u0000\u0000\u0012\u01ed\u0001\u0000\u0000\u0000\u0012"+
- "\u01ef\u0001\u0000\u0000\u0000\u0012\u01f1\u0001\u0000\u0000\u0000\u0013"+
- "\u01f3\u0001\u0000\u0000\u0000\u0015\u01fd\u0001\u0000\u0000\u0000\u0017"+
- "\u0204\u0001\u0000\u0000\u0000\u0019\u020d\u0001\u0000\u0000\u0000\u001b"+
- "\u0214\u0001\u0000\u0000\u0000\u001d\u021e\u0001\u0000\u0000\u0000\u001f"+
- "\u0225\u0001\u0000\u0000\u0000!\u022c\u0001\u0000\u0000\u0000#\u0233\u0001"+
- "\u0000\u0000\u0000%\u023b\u0001\u0000\u0000\u0000\'\u0247\u0001\u0000"+
- "\u0000\u0000)\u0250\u0001\u0000\u0000\u0000+\u0256\u0001\u0000\u0000\u0000"+
- "-\u025d\u0001\u0000\u0000\u0000/\u0264\u0001\u0000\u0000\u00001\u026c"+
- "\u0001\u0000\u0000\u00003\u0274\u0001\u0000\u0000\u00005\u027d\u0001\u0000"+
- "\u0000\u00007\u028d\u0001\u0000\u0000\u00009\u029c\u0001\u0000\u0000\u0000"+
- ";\u02a8\u0001\u0000\u0000\u0000=\u02b4\u0001\u0000\u0000\u0000?\u02bf"+
- "\u0001\u0000\u0000\u0000A\u02c7\u0001\u0000\u0000\u0000C\u02cf\u0001\u0000"+
- "\u0000\u0000E\u02d8\u0001\u0000\u0000\u0000G\u02e1\u0001\u0000\u0000\u0000"+
- "I\u02e7\u0001\u0000\u0000\u0000K\u02f8\u0001\u0000\u0000\u0000M\u0308"+
- "\u0001\u0000\u0000\u0000O\u030e\u0001\u0000\u0000\u0000Q\u0312\u0001\u0000"+
- "\u0000\u0000S\u0314\u0001\u0000\u0000\u0000U\u0316\u0001\u0000\u0000\u0000"+
- "W\u0319\u0001\u0000\u0000\u0000Y\u031b\u0001\u0000\u0000\u0000[\u0324"+
- "\u0001\u0000\u0000\u0000]\u0326\u0001\u0000\u0000\u0000_\u032b\u0001\u0000"+
- "\u0000\u0000a\u032d\u0001\u0000\u0000\u0000c\u0332\u0001\u0000\u0000\u0000"+
- "e\u0351\u0001\u0000\u0000\u0000g\u0354\u0001\u0000\u0000\u0000i\u0382"+
- "\u0001\u0000\u0000\u0000k\u0384\u0001\u0000\u0000\u0000m\u0387\u0001\u0000"+
- "\u0000\u0000o\u038b\u0001\u0000\u0000\u0000q\u038f\u0001\u0000\u0000\u0000"+
- "s\u0391\u0001\u0000\u0000\u0000u\u0394\u0001\u0000\u0000\u0000w\u0396"+
- "\u0001\u0000\u0000\u0000y\u0398\u0001\u0000\u0000\u0000{\u039d\u0001\u0000"+
- "\u0000\u0000}\u039f\u0001\u0000\u0000\u0000\u007f\u03a5\u0001\u0000\u0000"+
- "\u0000\u0081\u03ab\u0001\u0000\u0000\u0000\u0083\u03ae\u0001\u0000\u0000"+
- "\u0000\u0085\u03b1\u0001\u0000\u0000\u0000\u0087\u03b6\u0001\u0000\u0000"+
- "\u0000\u0089\u03bb\u0001\u0000\u0000\u0000\u008b\u03bf\u0001\u0000\u0000"+
- "\u0000\u008d\u03c4\u0001\u0000\u0000\u0000\u008f\u03ca\u0001\u0000\u0000"+
- "\u0000\u0091\u03cd\u0001\u0000\u0000\u0000\u0093\u03cf\u0001\u0000\u0000"+
- "\u0000\u0095\u03d5\u0001\u0000\u0000\u0000\u0097\u03da\u0001\u0000\u0000"+
- "\u0000\u0099\u03dd\u0001\u0000\u0000\u0000\u009b\u03e0\u0001\u0000\u0000"+
- "\u0000\u009d\u03e3\u0001\u0000\u0000\u0000\u009f\u03e5\u0001\u0000\u0000"+
- "\u0000\u00a1\u03e8\u0001\u0000\u0000\u0000\u00a3\u03ea\u0001\u0000\u0000"+
- "\u0000\u00a5\u03ed\u0001\u0000\u0000\u0000\u00a7\u03ef\u0001\u0000\u0000"+
- "\u0000\u00a9\u03f1\u0001\u0000\u0000\u0000\u00ab\u03f3\u0001\u0000\u0000"+
- "\u0000\u00ad\u03f5\u0001\u0000\u0000\u0000\u00af\u03f7\u0001\u0000\u0000"+
- "\u0000\u00b1\u03f9\u0001\u0000\u0000\u0000\u00b3\u03fb\u0001\u0000\u0000"+
- "\u0000\u00b5\u0410\u0001\u0000\u0000\u0000\u00b7\u0412\u0001\u0000\u0000"+
- "\u0000\u00b9\u0417\u0001\u0000\u0000\u0000\u00bb\u041c\u0001\u0000\u0000"+
- "\u0000\u00bd\u0421\u0001\u0000\u0000\u0000\u00bf\u0436\u0001\u0000\u0000"+
- "\u0000\u00c1\u0438\u0001\u0000\u0000\u0000\u00c3\u0440\u0001\u0000\u0000"+
- "\u0000\u00c5\u0442\u0001\u0000\u0000\u0000\u00c7\u0446\u0001\u0000\u0000"+
- "\u0000\u00c9\u044a\u0001\u0000\u0000\u0000\u00cb\u044e\u0001\u0000\u0000"+
- "\u0000\u00cd\u0453\u0001\u0000\u0000\u0000\u00cf\u0458\u0001\u0000\u0000"+
- "\u0000\u00d1\u045c\u0001\u0000\u0000\u0000\u00d3\u0460\u0001\u0000\u0000"+
- "\u0000\u00d5\u0464\u0001\u0000\u0000\u0000\u00d7\u0469\u0001\u0000\u0000"+
- "\u0000\u00d9\u046d\u0001\u0000\u0000\u0000\u00db\u0471\u0001\u0000\u0000"+
- "\u0000\u00dd\u0475\u0001\u0000\u0000\u0000\u00df\u0479\u0001\u0000\u0000"+
- "\u0000\u00e1\u047d\u0001\u0000\u0000\u0000\u00e3\u0489\u0001\u0000\u0000"+
- "\u0000\u00e5\u048c\u0001\u0000\u0000\u0000\u00e7\u0490\u0001\u0000\u0000"+
- "\u0000\u00e9\u0494\u0001\u0000\u0000\u0000\u00eb\u0498\u0001\u0000\u0000"+
- "\u0000\u00ed\u049c\u0001\u0000\u0000\u0000\u00ef\u04a0\u0001\u0000\u0000"+
- "\u0000\u00f1\u04a4\u0001\u0000\u0000\u0000\u00f3\u04a9\u0001\u0000\u0000"+
- "\u0000\u00f5\u04ad\u0001\u0000\u0000\u0000\u00f7\u04b1\u0001\u0000\u0000"+
- "\u0000\u00f9\u04b5\u0001\u0000\u0000\u0000\u00fb\u04bd\u0001\u0000\u0000"+
- "\u0000\u00fd\u04d2\u0001\u0000\u0000\u0000\u00ff\u04d6\u0001\u0000\u0000"+
- "\u0000\u0101\u04da\u0001\u0000\u0000\u0000\u0103\u04de\u0001\u0000\u0000"+
- "\u0000\u0105\u04e2\u0001\u0000\u0000\u0000\u0107\u04e6\u0001\u0000\u0000"+
- "\u0000\u0109\u04eb\u0001\u0000\u0000\u0000\u010b\u04ef\u0001\u0000\u0000"+
- "\u0000\u010d\u04f3\u0001\u0000\u0000\u0000\u010f\u04f7\u0001\u0000\u0000"+
- "\u0000\u0111\u04fb\u0001\u0000\u0000\u0000\u0113\u04ff\u0001\u0000\u0000"+
- "\u0000\u0115\u0502\u0001\u0000\u0000\u0000\u0117\u0506\u0001\u0000\u0000"+
- "\u0000\u0119\u050a\u0001\u0000\u0000\u0000\u011b\u050e\u0001\u0000\u0000"+
- "\u0000\u011d\u0512\u0001\u0000\u0000\u0000\u011f\u0517\u0001\u0000\u0000"+
- "\u0000\u0121\u051c\u0001\u0000\u0000\u0000\u0123\u0521\u0001\u0000\u0000"+
- "\u0000\u0125\u0528\u0001\u0000\u0000\u0000\u0127\u0531\u0001\u0000\u0000"+
- "\u0000\u0129\u0538\u0001\u0000\u0000\u0000\u012b\u053c\u0001\u0000\u0000"+
- "\u0000\u012d\u0540\u0001\u0000\u0000\u0000\u012f\u0544\u0001\u0000\u0000"+
- "\u0000\u0131\u0548\u0001\u0000\u0000\u0000\u0133\u054e\u0001\u0000\u0000"+
- "\u0000\u0135\u0552\u0001\u0000\u0000\u0000\u0137\u0556\u0001\u0000\u0000"+
- "\u0000\u0139\u055a\u0001\u0000\u0000\u0000\u013b\u055e\u0001\u0000\u0000"+
- "\u0000\u013d\u0562\u0001\u0000\u0000\u0000\u013f\u0566\u0001\u0000\u0000"+
- "\u0000\u0141\u056a\u0001\u0000\u0000\u0000\u0143\u056e\u0001\u0000\u0000"+
- "\u0000\u0145\u0572\u0001\u0000\u0000\u0000\u0147\u0576\u0001\u0000\u0000"+
- "\u0000\u0149\u057a\u0001\u0000\u0000\u0000\u014b\u057f\u0001\u0000\u0000"+
- "\u0000\u014d\u0583\u0001\u0000\u0000\u0000\u014f\u0587\u0001\u0000\u0000"+
- "\u0000\u0151\u058b\u0001\u0000\u0000\u0000\u0153\u058f\u0001\u0000\u0000"+
- "\u0000\u0155\u0593\u0001\u0000\u0000\u0000\u0157\u0597\u0001\u0000\u0000"+
- "\u0000\u0159\u059b\u0001\u0000\u0000\u0000\u015b\u059f\u0001\u0000\u0000"+
- "\u0000\u015d\u05a4\u0001\u0000\u0000\u0000\u015f\u05a9\u0001\u0000\u0000"+
- "\u0000\u0161\u05ad\u0001\u0000\u0000\u0000\u0163\u05b1\u0001\u0000\u0000"+
- "\u0000\u0165\u05b5\u0001\u0000\u0000\u0000\u0167\u05ba\u0001\u0000\u0000"+
- "\u0000\u0169\u05c3\u0001\u0000\u0000\u0000\u016b\u05c7\u0001\u0000\u0000"+
- "\u0000\u016d\u05cb\u0001\u0000\u0000\u0000\u016f\u05cf\u0001\u0000\u0000"+
- "\u0000\u0171\u05d3\u0001\u0000\u0000\u0000\u0173\u05d8\u0001\u0000\u0000"+
- "\u0000\u0175\u05dc\u0001\u0000\u0000\u0000\u0177\u05e0\u0001\u0000\u0000"+
- "\u0000\u0179\u05e4\u0001\u0000\u0000\u0000\u017b\u05e9\u0001\u0000\u0000"+
- "\u0000\u017d\u05ed\u0001\u0000\u0000\u0000\u017f\u05f1\u0001\u0000\u0000"+
- "\u0000\u0181\u05f5\u0001\u0000\u0000\u0000\u0183\u05f9\u0001\u0000\u0000"+
- "\u0000\u0185\u05fd\u0001\u0000\u0000\u0000\u0187\u0603\u0001\u0000\u0000"+
- "\u0000\u0189\u0607\u0001\u0000\u0000\u0000\u018b\u060b\u0001\u0000\u0000"+
- "\u0000\u018d\u060f\u0001\u0000\u0000\u0000\u018f\u0613\u0001\u0000\u0000"+
- "\u0000\u0191\u0617\u0001\u0000\u0000\u0000\u0193\u061b\u0001\u0000\u0000"+
- "\u0000\u0195\u0620\u0001\u0000\u0000\u0000\u0197\u0625\u0001\u0000\u0000"+
- "\u0000\u0199\u0629\u0001\u0000\u0000\u0000\u019b\u062f\u0001\u0000\u0000"+
- "\u0000\u019d\u0638\u0001\u0000\u0000\u0000\u019f\u063c\u0001\u0000\u0000"+
- "\u0000\u01a1\u0640\u0001\u0000\u0000\u0000\u01a3\u0644\u0001\u0000\u0000"+
- "\u0000\u01a5\u0648\u0001\u0000\u0000\u0000\u01a7\u064c\u0001\u0000\u0000"+
- "\u0000\u01a9\u0650\u0001\u0000\u0000\u0000\u01ab\u0654\u0001\u0000\u0000"+
- "\u0000\u01ad\u0658\u0001\u0000\u0000\u0000\u01af\u065d\u0001\u0000\u0000"+
- "\u0000\u01b1\u0663\u0001\u0000\u0000\u0000\u01b3\u0669\u0001\u0000\u0000"+
- "\u0000\u01b5\u066d\u0001\u0000\u0000\u0000\u01b7\u0671\u0001\u0000\u0000"+
- "\u0000\u01b9\u0675\u0001\u0000\u0000\u0000\u01bb\u067b\u0001\u0000\u0000"+
- "\u0000\u01bd\u0681\u0001\u0000\u0000\u0000\u01bf\u0685\u0001\u0000\u0000"+
- "\u0000\u01c1\u0689\u0001\u0000\u0000\u0000\u01c3\u068d\u0001\u0000\u0000"+
- "\u0000\u01c5\u0693\u0001\u0000\u0000\u0000\u01c7\u0699\u0001\u0000\u0000"+
- "\u0000\u01c9\u069f\u0001\u0000\u0000\u0000\u01cb\u06a4\u0001\u0000\u0000"+
- "\u0000\u01cd\u06a9\u0001\u0000\u0000\u0000\u01cf\u06ad\u0001\u0000\u0000"+
- "\u0000\u01d1\u06b1\u0001\u0000\u0000\u0000\u01d3\u06b5\u0001\u0000\u0000"+
- "\u0000\u01d5\u06b9\u0001\u0000\u0000\u0000\u01d7\u06bd\u0001\u0000\u0000"+
- "\u0000\u01d9\u06c1\u0001\u0000\u0000\u0000\u01db\u06c5\u0001\u0000\u0000"+
- "\u0000\u01dd\u06c9\u0001\u0000\u0000\u0000\u01df\u06cd\u0001\u0000\u0000"+
- "\u0000\u01e1\u06d2\u0001\u0000\u0000\u0000\u01e3\u06d6\u0001\u0000\u0000"+
- "\u0000\u01e5\u06da\u0001\u0000\u0000\u0000\u01e7\u06de\u0001\u0000\u0000"+
- "\u0000\u01e9\u06e2\u0001\u0000\u0000\u0000\u01eb\u06e7\u0001\u0000\u0000"+
- "\u0000\u01ed\u06ec\u0001\u0000\u0000\u0000\u01ef\u06f0\u0001\u0000\u0000"+
- "\u0000\u01f1\u06f4\u0001\u0000\u0000\u0000\u01f3\u01f4\u0007\u0000\u0000"+
- "\u0000\u01f4\u01f5\u0007\u0001\u0000\u0000\u01f5\u01f6\u0007\u0002\u0000"+
- "\u0000\u01f6\u01f7\u0007\u0002\u0000\u0000\u01f7\u01f8\u0007\u0003\u0000"+
- "\u0000\u01f8\u01f9\u0007\u0004\u0000\u0000\u01f9\u01fa\u0007\u0005\u0000"+
- "\u0000\u01fa\u01fb\u0001\u0000\u0000\u0000\u01fb\u01fc\u0006\u0000\u0000"+
- "\u0000\u01fc\u0014\u0001\u0000\u0000\u0000\u01fd\u01fe\u0007\u0000\u0000"+
- "\u0000\u01fe\u01ff\u0007\u0006\u0000\u0000\u01ff\u0200\u0007\u0007\u0000"+
- "\u0000\u0200\u0201\u0007\b\u0000\u0000\u0201\u0202\u0001\u0000\u0000\u0000"+
- "\u0202\u0203\u0006\u0001\u0001\u0000\u0203\u0016\u0001\u0000\u0000\u0000"+
- "\u0204\u0205\u0007\u0003\u0000\u0000\u0205\u0206\u0007\t\u0000\u0000\u0206"+
- "\u0207\u0007\u0006\u0000\u0000\u0207\u0208\u0007\u0001\u0000\u0000\u0208"+
- "\u0209\u0007\u0004\u0000\u0000\u0209\u020a\u0007\n\u0000\u0000\u020a\u020b"+
- "\u0001\u0000\u0000\u0000\u020b\u020c\u0006\u0002\u0002\u0000\u020c\u0018"+
- "\u0001\u0000\u0000\u0000\u020d\u020e\u0007\u0003\u0000\u0000\u020e\u020f"+
- "\u0007\u000b\u0000\u0000\u020f\u0210\u0007\f\u0000\u0000\u0210\u0211\u0007"+
- "\r\u0000\u0000\u0211\u0212\u0001\u0000\u0000\u0000\u0212\u0213\u0006\u0003"+
- "\u0000\u0000\u0213\u001a\u0001\u0000\u0000\u0000\u0214\u0215\u0007\u0003"+
- "\u0000\u0000\u0215\u0216\u0007\u000e\u0000\u0000\u0216\u0217\u0007\b\u0000"+
- "\u0000\u0217\u0218\u0007\r\u0000\u0000\u0218\u0219\u0007\f\u0000\u0000"+
- "\u0219\u021a\u0007\u0001\u0000\u0000\u021a\u021b\u0007\t\u0000\u0000\u021b"+
- "\u021c\u0001\u0000\u0000\u0000\u021c\u021d\u0006\u0004\u0003\u0000\u021d"+
- "\u001c\u0001\u0000\u0000\u0000\u021e\u021f\u0007\u000f\u0000\u0000\u021f"+
- "\u0220\u0007\u0006\u0000\u0000\u0220\u0221\u0007\u0007\u0000\u0000\u0221"+
- "\u0222\u0007\u0010\u0000\u0000\u0222\u0223\u0001\u0000\u0000\u0000\u0223"+
- "\u0224\u0006\u0005\u0004\u0000\u0224\u001e\u0001\u0000\u0000\u0000\u0225"+
- "\u0226\u0007\u0011\u0000\u0000\u0226\u0227\u0007\u0006\u0000\u0000\u0227"+
- "\u0228\u0007\u0007\u0000\u0000\u0228\u0229\u0007\u0012\u0000\u0000\u0229"+
- "\u022a\u0001\u0000\u0000\u0000\u022a\u022b\u0006\u0006\u0000\u0000\u022b"+
- " \u0001\u0000\u0000\u0000\u022c\u022d\u0007\u0012\u0000\u0000\u022d\u022e"+
- "\u0007\u0003\u0000\u0000\u022e\u022f\u0007\u0003\u0000\u0000\u022f\u0230"+
- "\u0007\b\u0000\u0000\u0230\u0231\u0001\u0000\u0000\u0000\u0231\u0232\u0006"+
- "\u0007\u0001\u0000\u0232\"\u0001\u0000\u0000\u0000\u0233\u0234\u0007\r"+
- "\u0000\u0000\u0234\u0235\u0007\u0001\u0000\u0000\u0235\u0236\u0007\u0010"+
- "\u0000\u0000\u0236\u0237\u0007\u0001\u0000\u0000\u0237\u0238\u0007\u0005"+
- "\u0000\u0000\u0238\u0239\u0001\u0000\u0000\u0000\u0239\u023a\u0006\b\u0000"+
- "\u0000\u023a$\u0001\u0000\u0000\u0000\u023b\u023c\u0007\u0010\u0000\u0000"+
- "\u023c\u023d\u0007\u000b\u0000\u0000\u023d\u023e\u0005_\u0000\u0000\u023e"+
- "\u023f\u0007\u0003\u0000\u0000\u023f\u0240\u0007\u000e\u0000\u0000\u0240"+
- "\u0241\u0007\b\u0000\u0000\u0241\u0242\u0007\f\u0000\u0000\u0242\u0243"+
- "\u0007\t\u0000\u0000\u0243\u0244\u0007\u0000\u0000\u0000\u0244\u0245\u0001"+
- "\u0000\u0000\u0000\u0245\u0246\u0006\t\u0005\u0000\u0246&\u0001\u0000"+
- "\u0000\u0000\u0247\u0248\u0007\u0006\u0000\u0000\u0248\u0249\u0007\u0003"+
- "\u0000\u0000\u0249\u024a\u0007\t\u0000\u0000\u024a\u024b\u0007\f\u0000"+
- "\u0000\u024b\u024c\u0007\u0010\u0000\u0000\u024c\u024d\u0007\u0003\u0000"+
- "\u0000\u024d\u024e\u0001\u0000\u0000\u0000\u024e\u024f\u0006\n\u0006\u0000"+
- "\u024f(\u0001\u0000\u0000\u0000\u0250\u0251\u0007\u0006\u0000\u0000\u0251"+
- "\u0252\u0007\u0007\u0000\u0000\u0252\u0253\u0007\u0013\u0000\u0000\u0253"+
- "\u0254\u0001\u0000\u0000\u0000\u0254\u0255\u0006\u000b\u0000\u0000\u0255"+
- "*\u0001\u0000\u0000\u0000\u0256\u0257\u0007\u0002\u0000\u0000\u0257\u0258"+
- "\u0007\n\u0000\u0000\u0258\u0259\u0007\u0007\u0000\u0000\u0259\u025a\u0007"+
- "\u0013\u0000\u0000\u025a\u025b\u0001\u0000\u0000\u0000\u025b\u025c\u0006"+
- "\f\u0007\u0000\u025c,\u0001\u0000\u0000\u0000\u025d\u025e\u0007\u0002"+
- "\u0000\u0000\u025e\u025f\u0007\u0007\u0000\u0000\u025f\u0260\u0007\u0006"+
- "\u0000\u0000\u0260\u0261\u0007\u0005\u0000\u0000\u0261\u0262\u0001\u0000"+
- "\u0000\u0000\u0262\u0263\u0006\r\u0000\u0000\u0263.\u0001\u0000\u0000"+
- "\u0000\u0264\u0265\u0007\u0002\u0000\u0000\u0265\u0266\u0007\u0005\u0000"+
- "\u0000\u0266\u0267\u0007\f\u0000\u0000\u0267\u0268\u0007\u0005\u0000\u0000"+
- "\u0268\u0269\u0007\u0002\u0000\u0000\u0269\u026a\u0001\u0000\u0000\u0000"+
- "\u026a\u026b\u0006\u000e\u0000\u0000\u026b0\u0001\u0000\u0000\u0000\u026c"+
- "\u026d\u0007\u0013\u0000\u0000\u026d\u026e\u0007\n\u0000\u0000\u026e\u026f"+
- "\u0007\u0003\u0000\u0000\u026f\u0270\u0007\u0006\u0000\u0000\u0270\u0271"+
- "\u0007\u0003\u0000\u0000\u0271\u0272\u0001\u0000\u0000\u0000\u0272\u0273"+
- "\u0006\u000f\u0000\u0000\u02732\u0001\u0000\u0000\u0000\u0274\u0275\u0007"+
- "\r\u0000\u0000\u0275\u0276\u0007\u0007\u0000\u0000\u0276\u0277\u0007\u0007"+
- "\u0000\u0000\u0277\u0278\u0007\u0012\u0000\u0000\u0278\u0279\u0007\u0014"+
- "\u0000\u0000\u0279\u027a\u0007\b\u0000\u0000\u027a\u027b\u0001\u0000\u0000"+
- "\u0000\u027b\u027c\u0006\u0010\b\u0000\u027c4\u0001\u0000\u0000\u0000"+
- "\u027d\u027e\u0004\u0011\u0000\u0000\u027e\u027f\u0007\u0004\u0000\u0000"+
- "\u027f\u0280\u0007\n\u0000\u0000\u0280\u0281\u0007\f\u0000\u0000\u0281"+
- "\u0282\u0007\t\u0000\u0000\u0282\u0283\u0007\u0011\u0000\u0000\u0283\u0284"+
- "\u0007\u0003\u0000\u0000\u0284\u0285\u0005_\u0000\u0000\u0285\u0286\u0007"+
- "\b\u0000\u0000\u0286\u0287\u0007\u0007\u0000\u0000\u0287\u0288\u0007\u0001"+
- "\u0000\u0000\u0288\u0289\u0007\t\u0000\u0000\u0289\u028a\u0007\u0005\u0000"+
- "\u0000\u028a\u028b\u0001\u0000\u0000\u0000\u028b\u028c\u0006\u0011\t\u0000"+
- "\u028c6\u0001\u0000\u0000\u0000\u028d\u028e\u0004\u0012\u0001\u0000\u028e"+
- "\u028f\u0007\u0001\u0000\u0000\u028f\u0290\u0007\t\u0000\u0000\u0290\u0291"+
- "\u0007\r\u0000\u0000\u0291\u0292\u0007\u0001\u0000\u0000\u0292\u0293\u0007"+
- "\t\u0000\u0000\u0293\u0294\u0007\u0003\u0000\u0000\u0294\u0295\u0007\u0002"+
- "\u0000\u0000\u0295\u0296\u0007\u0005\u0000\u0000\u0296\u0297\u0007\f\u0000"+
- "\u0000\u0297\u0298\u0007\u0005\u0000\u0000\u0298\u0299\u0007\u0002\u0000"+
- "\u0000\u0299\u029a\u0001\u0000\u0000\u0000\u029a\u029b\u0006\u0012\u0000"+
- "\u0000\u029b8\u0001\u0000\u0000\u0000\u029c\u029d\u0004\u0013\u0002\u0000"+
- "\u029d\u029e\u0007\u0001\u0000\u0000\u029e\u029f\u0007\t\u0000\u0000\u029f"+
- "\u02a0\u0007\u0002\u0000\u0000\u02a0\u02a1\u0007\u0001\u0000\u0000\u02a1"+
- "\u02a2\u0007\u0002\u0000\u0000\u02a2\u02a3\u0007\u0005\u0000\u0000\u02a3"+
- "\u02a4\u0005_\u0000\u0000\u02a4\u02a5\u0005\u8001\uf414\u0000\u0000\u02a5"+
- "\u02a6\u0001\u0000\u0000\u0000\u02a6\u02a7\u0006\u0013\u0001\u0000\u02a7"+
- ":\u0001\u0000\u0000\u0000\u02a8\u02a9\u0004\u0014\u0003\u0000\u02a9\u02aa"+
- "\u0007\r\u0000\u0000\u02aa\u02ab\u0007\u0007\u0000\u0000\u02ab\u02ac\u0007"+
- "\u0007\u0000\u0000\u02ac\u02ad\u0007\u0012\u0000\u0000\u02ad\u02ae\u0007"+
- "\u0014\u0000\u0000\u02ae\u02af\u0007\b\u0000\u0000\u02af\u02b0\u0005_"+
- "\u0000\u0000\u02b0\u02b1\u0005\u8001\uf414\u0000\u0000\u02b1\u02b2\u0001"+
- "\u0000\u0000\u0000\u02b2\u02b3\u0006\u0014\n\u0000\u02b3<\u0001\u0000"+
- "\u0000\u0000\u02b4\u02b5\u0004\u0015\u0004\u0000\u02b5\u02b6\u0007\u0010"+
- "\u0000\u0000\u02b6\u02b7\u0007\u0003\u0000\u0000\u02b7\u02b8\u0007\u0005"+
- "\u0000\u0000\u02b8\u02b9\u0007\u0006\u0000\u0000\u02b9\u02ba\u0007\u0001"+
- "\u0000\u0000\u02ba\u02bb\u0007\u0004\u0000\u0000\u02bb\u02bc\u0007\u0002"+
- "\u0000\u0000\u02bc\u02bd\u0001\u0000\u0000\u0000\u02bd\u02be\u0006\u0015"+
- "\u000b\u0000\u02be>\u0001\u0000\u0000\u0000\u02bf\u02c0\u0004\u0016\u0005"+
- "\u0000\u02c0\u02c1\u0007\u000f\u0000\u0000\u02c1\u02c2\u0007\u0014\u0000"+
- "\u0000\u02c2\u02c3\u0007\r\u0000\u0000\u02c3\u02c4\u0007\r\u0000\u0000"+
- "\u02c4\u02c5\u0001\u0000\u0000\u0000\u02c5\u02c6\u0006\u0016\b\u0000\u02c6"+
- "@\u0001\u0000\u0000\u0000\u02c7\u02c8\u0004\u0017\u0006\u0000\u02c8\u02c9"+
- "\u0007\r\u0000\u0000\u02c9\u02ca\u0007\u0003\u0000\u0000\u02ca\u02cb\u0007"+
- "\u000f\u0000\u0000\u02cb\u02cc\u0007\u0005\u0000\u0000\u02cc\u02cd\u0001"+
- "\u0000\u0000\u0000\u02cd\u02ce\u0006\u0017\b\u0000\u02ceB\u0001\u0000"+
- "\u0000\u0000\u02cf\u02d0\u0004\u0018\u0007\u0000\u02d0\u02d1\u0007\u0006"+
- "\u0000\u0000\u02d1\u02d2\u0007\u0001\u0000\u0000\u02d2\u02d3\u0007\u0011"+
- "\u0000\u0000\u02d3\u02d4\u0007\n\u0000\u0000\u02d4\u02d5\u0007\u0005\u0000"+
- "\u0000\u02d5\u02d6\u0001\u0000\u0000\u0000\u02d6\u02d7\u0006\u0018\b\u0000"+
- "\u02d7D\u0001\u0000\u0000\u0000\u02d8\u02d9\u0004\u0019\b\u0000\u02d9"+
- "\u02da\u0007\u000f\u0000\u0000\u02da\u02db\u0007\u0007\u0000\u0000\u02db"+
- "\u02dc\u0007\u0006\u0000\u0000\u02dc\u02dd\u0007\u0012\u0000\u0000\u02dd"+
- "\u02de\u0001\u0000\u0000\u0000\u02de\u02df\u0006\u0019\f\u0000\u02dfF"+
- "\u0001\u0000\u0000\u0000\u02e0\u02e2\b\u0015\u0000\u0000\u02e1\u02e0\u0001"+
- "\u0000\u0000\u0000\u02e2\u02e3\u0001\u0000\u0000\u0000\u02e3\u02e1\u0001"+
- "\u0000\u0000\u0000\u02e3\u02e4\u0001\u0000\u0000\u0000\u02e4\u02e5\u0001"+
- "\u0000\u0000\u0000\u02e5\u02e6\u0006\u001a\u0000\u0000\u02e6H\u0001\u0000"+
- "\u0000\u0000\u02e7\u02e8\u0005/\u0000\u0000\u02e8\u02e9\u0005/\u0000\u0000"+
- "\u02e9\u02ed\u0001\u0000\u0000\u0000\u02ea\u02ec\b\u0016\u0000\u0000\u02eb"+
- "\u02ea\u0001\u0000\u0000\u0000\u02ec\u02ef\u0001\u0000\u0000\u0000\u02ed"+
- "\u02eb\u0001\u0000\u0000\u0000\u02ed\u02ee\u0001\u0000\u0000\u0000\u02ee"+
- "\u02f1\u0001\u0000\u0000\u0000\u02ef\u02ed\u0001\u0000\u0000\u0000\u02f0"+
- "\u02f2\u0005\r\u0000\u0000\u02f1\u02f0\u0001\u0000\u0000\u0000\u02f1\u02f2"+
- "\u0001\u0000\u0000\u0000\u02f2\u02f4\u0001\u0000\u0000\u0000\u02f3\u02f5"+
- "\u0005\n\u0000\u0000\u02f4\u02f3\u0001\u0000\u0000\u0000\u02f4\u02f5\u0001"+
- "\u0000\u0000\u0000\u02f5\u02f6\u0001\u0000\u0000\u0000\u02f6\u02f7\u0006"+
- "\u001b\r\u0000\u02f7J\u0001\u0000\u0000\u0000\u02f8\u02f9\u0005/\u0000"+
- "\u0000\u02f9\u02fa\u0005*\u0000\u0000\u02fa\u02ff\u0001\u0000\u0000\u0000"+
- "\u02fb\u02fe\u0003K\u001c\u0000\u02fc\u02fe\t\u0000\u0000\u0000\u02fd"+
- "\u02fb\u0001\u0000\u0000\u0000\u02fd\u02fc\u0001\u0000\u0000\u0000\u02fe"+
- "\u0301\u0001\u0000\u0000\u0000\u02ff\u0300\u0001\u0000\u0000\u0000\u02ff"+
- "\u02fd\u0001\u0000\u0000\u0000\u0300\u0302\u0001\u0000\u0000\u0000\u0301"+
- "\u02ff\u0001\u0000\u0000\u0000\u0302\u0303\u0005*\u0000\u0000\u0303\u0304"+
- "\u0005/\u0000\u0000\u0304\u0305\u0001\u0000\u0000\u0000\u0305\u0306\u0006"+
- "\u001c\r\u0000\u0306L\u0001\u0000\u0000\u0000\u0307\u0309\u0007\u0017"+
- "\u0000\u0000\u0308\u0307\u0001\u0000\u0000\u0000\u0309\u030a\u0001\u0000"+
- "\u0000\u0000\u030a\u0308\u0001\u0000\u0000\u0000\u030a\u030b\u0001\u0000"+
- "\u0000\u0000\u030b\u030c\u0001\u0000\u0000\u0000\u030c\u030d\u0006\u001d"+
- "\r\u0000\u030dN\u0001\u0000\u0000\u0000\u030e\u030f\u0005|\u0000\u0000"+
- "\u030f\u0310\u0001\u0000\u0000\u0000\u0310\u0311\u0006\u001e\u000e\u0000"+
- "\u0311P\u0001\u0000\u0000\u0000\u0312\u0313\u0007\u0018\u0000\u0000\u0313"+
- "R\u0001\u0000\u0000\u0000\u0314\u0315\u0007\u0019\u0000\u0000\u0315T\u0001"+
- "\u0000\u0000\u0000\u0316\u0317\u0005\\\u0000\u0000\u0317\u0318\u0007\u001a"+
- "\u0000\u0000\u0318V\u0001\u0000\u0000\u0000\u0319\u031a\b\u001b\u0000"+
- "\u0000\u031aX\u0001\u0000\u0000\u0000\u031b\u031d\u0007\u0003\u0000\u0000"+
- "\u031c\u031e\u0007\u001c\u0000\u0000\u031d\u031c\u0001\u0000\u0000\u0000"+
- "\u031d\u031e\u0001\u0000\u0000\u0000\u031e\u0320\u0001\u0000\u0000\u0000"+
- "\u031f\u0321\u0003Q\u001f\u0000\u0320\u031f\u0001\u0000\u0000\u0000\u0321"+
- "\u0322\u0001\u0000\u0000\u0000\u0322\u0320\u0001\u0000\u0000\u0000\u0322"+
- "\u0323\u0001\u0000\u0000\u0000\u0323Z\u0001\u0000\u0000\u0000\u0324\u0325"+
- "\u0005@\u0000\u0000\u0325\\\u0001\u0000\u0000\u0000\u0326\u0327\u0005"+
- "`\u0000\u0000\u0327^\u0001\u0000\u0000\u0000\u0328\u032c\b\u001d\u0000"+
- "\u0000\u0329\u032a\u0005`\u0000\u0000\u032a\u032c\u0005`\u0000\u0000\u032b"+
- "\u0328\u0001\u0000\u0000\u0000\u032b\u0329\u0001\u0000\u0000\u0000\u032c"+
- "`\u0001\u0000\u0000\u0000\u032d\u032e\u0005_\u0000\u0000\u032eb\u0001"+
- "\u0000\u0000\u0000\u032f\u0333\u0003S \u0000\u0330\u0333\u0003Q\u001f"+
- "\u0000\u0331\u0333\u0003a\'\u0000\u0332\u032f\u0001\u0000\u0000\u0000"+
- "\u0332\u0330\u0001\u0000\u0000\u0000\u0332\u0331\u0001\u0000\u0000\u0000"+
- "\u0333d\u0001\u0000\u0000\u0000\u0334\u0339\u0005\"\u0000\u0000\u0335"+
- "\u0338\u0003U!\u0000\u0336\u0338\u0003W\"\u0000\u0337\u0335\u0001\u0000"+
- "\u0000\u0000\u0337\u0336\u0001\u0000\u0000\u0000\u0338\u033b\u0001\u0000"+
- "\u0000\u0000\u0339\u0337\u0001\u0000\u0000\u0000\u0339\u033a\u0001\u0000"+
- "\u0000\u0000\u033a\u033c\u0001\u0000\u0000\u0000\u033b\u0339\u0001\u0000"+
- "\u0000\u0000\u033c\u0352\u0005\"\u0000\u0000\u033d\u033e\u0005\"\u0000"+
- "\u0000\u033e\u033f\u0005\"\u0000\u0000\u033f\u0340\u0005\"\u0000\u0000"+
- "\u0340\u0344\u0001\u0000\u0000\u0000\u0341\u0343\b\u0016\u0000\u0000\u0342"+
- "\u0341\u0001\u0000\u0000\u0000\u0343\u0346\u0001\u0000\u0000\u0000\u0344"+
- "\u0345\u0001\u0000\u0000\u0000\u0344\u0342\u0001\u0000\u0000\u0000\u0345"+
- "\u0347\u0001\u0000\u0000\u0000\u0346\u0344\u0001\u0000\u0000\u0000\u0347"+
- "\u0348\u0005\"\u0000\u0000\u0348\u0349\u0005\"\u0000\u0000\u0349\u034a"+
- "\u0005\"\u0000\u0000\u034a\u034c\u0001\u0000\u0000\u0000\u034b\u034d\u0005"+
- "\"\u0000\u0000\u034c\u034b\u0001\u0000\u0000\u0000\u034c\u034d\u0001\u0000"+
- "\u0000\u0000\u034d\u034f\u0001\u0000\u0000\u0000\u034e\u0350\u0005\"\u0000"+
- "\u0000\u034f\u034e\u0001\u0000\u0000\u0000\u034f\u0350\u0001\u0000\u0000"+
- "\u0000\u0350\u0352\u0001\u0000\u0000\u0000\u0351\u0334\u0001\u0000\u0000"+
- "\u0000\u0351\u033d\u0001\u0000\u0000\u0000\u0352f\u0001\u0000\u0000\u0000"+
- "\u0353\u0355\u0003Q\u001f\u0000\u0354\u0353\u0001\u0000\u0000\u0000\u0355"+
- "\u0356\u0001\u0000\u0000\u0000\u0356\u0354\u0001\u0000\u0000\u0000\u0356"+
- "\u0357\u0001\u0000\u0000\u0000\u0357h\u0001\u0000\u0000\u0000\u0358\u035a"+
- "\u0003Q\u001f\u0000\u0359\u0358\u0001\u0000\u0000\u0000\u035a\u035b\u0001"+
- "\u0000\u0000\u0000\u035b\u0359\u0001\u0000\u0000\u0000\u035b\u035c\u0001"+
- "\u0000\u0000\u0000\u035c\u035d\u0001\u0000\u0000\u0000\u035d\u0361\u0003"+
- "{4\u0000\u035e\u0360\u0003Q\u001f\u0000\u035f\u035e\u0001\u0000\u0000"+
- "\u0000\u0360\u0363\u0001\u0000\u0000\u0000\u0361\u035f\u0001\u0000\u0000"+
- "\u0000\u0361\u0362\u0001\u0000\u0000\u0000\u0362\u0383\u0001\u0000\u0000"+
- "\u0000\u0363\u0361\u0001\u0000\u0000\u0000\u0364\u0366\u0003{4\u0000\u0365"+
- "\u0367\u0003Q\u001f\u0000\u0366\u0365\u0001\u0000\u0000\u0000\u0367\u0368"+
- "\u0001\u0000\u0000\u0000\u0368\u0366\u0001\u0000\u0000\u0000\u0368\u0369"+
- "\u0001\u0000\u0000\u0000\u0369\u0383\u0001\u0000\u0000\u0000\u036a\u036c"+
- "\u0003Q\u001f\u0000\u036b\u036a\u0001\u0000\u0000\u0000\u036c\u036d\u0001"+
- "\u0000\u0000\u0000\u036d\u036b\u0001\u0000\u0000\u0000\u036d\u036e\u0001"+
- "\u0000\u0000\u0000\u036e\u0376\u0001\u0000\u0000\u0000\u036f\u0373\u0003"+
- "{4\u0000\u0370\u0372\u0003Q\u001f\u0000\u0371\u0370\u0001\u0000\u0000"+
- "\u0000\u0372\u0375\u0001\u0000\u0000\u0000\u0373\u0371\u0001\u0000\u0000"+
- "\u0000\u0373\u0374\u0001\u0000\u0000\u0000\u0374\u0377\u0001\u0000\u0000"+
- "\u0000\u0375\u0373\u0001\u0000\u0000\u0000\u0376\u036f\u0001\u0000\u0000"+
- "\u0000\u0376\u0377\u0001\u0000\u0000\u0000\u0377\u0378\u0001\u0000\u0000"+
- "\u0000\u0378\u0379\u0003Y#\u0000\u0379\u0383\u0001\u0000\u0000\u0000\u037a"+
- "\u037c\u0003{4\u0000\u037b\u037d\u0003Q\u001f\u0000\u037c\u037b\u0001"+
- "\u0000\u0000\u0000\u037d\u037e\u0001\u0000\u0000\u0000\u037e\u037c\u0001"+
- "\u0000\u0000\u0000\u037e\u037f\u0001\u0000\u0000\u0000\u037f\u0380\u0001"+
- "\u0000\u0000\u0000\u0380\u0381\u0003Y#\u0000\u0381\u0383\u0001\u0000\u0000"+
- "\u0000\u0382\u0359\u0001\u0000\u0000\u0000\u0382\u0364\u0001\u0000\u0000"+
- "\u0000\u0382\u036b\u0001\u0000\u0000\u0000\u0382\u037a\u0001\u0000\u0000"+
- "\u0000\u0383j\u0001\u0000\u0000\u0000\u0384\u0385\u0007\u001e\u0000\u0000"+
- "\u0385\u0386\u0007\u001f\u0000\u0000\u0386l\u0001\u0000\u0000\u0000\u0387"+
- "\u0388\u0007\f\u0000\u0000\u0388\u0389\u0007\t\u0000\u0000\u0389\u038a"+
- "\u0007\u0000\u0000\u0000\u038an\u0001\u0000\u0000\u0000\u038b\u038c\u0007"+
- "\f\u0000\u0000\u038c\u038d\u0007\u0002\u0000\u0000\u038d\u038e\u0007\u0004"+
- "\u0000\u0000\u038ep\u0001\u0000\u0000\u0000\u038f\u0390\u0005=\u0000\u0000"+
- "\u0390r\u0001\u0000\u0000\u0000\u0391\u0392\u0005:\u0000\u0000\u0392\u0393"+
- "\u0005:\u0000\u0000\u0393t\u0001\u0000\u0000\u0000\u0394\u0395\u0005:"+
- "\u0000\u0000\u0395v\u0001\u0000\u0000\u0000\u0396\u0397\u0005,\u0000\u0000"+
- "\u0397x\u0001\u0000\u0000\u0000\u0398\u0399\u0007\u0000\u0000\u0000\u0399"+
- "\u039a\u0007\u0003\u0000\u0000\u039a\u039b\u0007\u0002\u0000\u0000\u039b"+
- "\u039c\u0007\u0004\u0000\u0000\u039cz\u0001\u0000\u0000\u0000\u039d\u039e"+
- "\u0005.\u0000\u0000\u039e|\u0001\u0000\u0000\u0000\u039f\u03a0\u0007\u000f"+
- "\u0000\u0000\u03a0\u03a1\u0007\f\u0000\u0000\u03a1\u03a2\u0007\r\u0000"+
- "\u0000\u03a2\u03a3\u0007\u0002\u0000\u0000\u03a3\u03a4\u0007\u0003\u0000"+
- "\u0000\u03a4~\u0001\u0000\u0000\u0000\u03a5\u03a6\u0007\u000f\u0000\u0000"+
- "\u03a6\u03a7\u0007\u0001\u0000\u0000\u03a7\u03a8\u0007\u0006\u0000\u0000"+
- "\u03a8\u03a9\u0007\u0002\u0000\u0000\u03a9\u03aa\u0007\u0005\u0000\u0000"+
- "\u03aa\u0080\u0001\u0000\u0000\u0000\u03ab\u03ac\u0007\u0001\u0000\u0000"+
- "\u03ac\u03ad\u0007\t\u0000\u0000\u03ad\u0082\u0001\u0000\u0000\u0000\u03ae"+
- "\u03af\u0007\u0001\u0000\u0000\u03af\u03b0\u0007\u0002\u0000\u0000\u03b0"+
- "\u0084\u0001\u0000\u0000\u0000\u03b1\u03b2\u0007\r\u0000\u0000\u03b2\u03b3"+
- "\u0007\f\u0000\u0000\u03b3\u03b4\u0007\u0002\u0000\u0000\u03b4\u03b5\u0007"+
- "\u0005\u0000\u0000\u03b5\u0086\u0001\u0000\u0000\u0000\u03b6\u03b7\u0007"+
- "\r\u0000\u0000\u03b7\u03b8\u0007\u0001\u0000\u0000\u03b8\u03b9\u0007\u0012"+
- "\u0000\u0000\u03b9\u03ba\u0007\u0003\u0000\u0000\u03ba\u0088\u0001\u0000"+
- "\u0000\u0000\u03bb\u03bc\u0007\t\u0000\u0000\u03bc\u03bd\u0007\u0007\u0000"+
- "\u0000\u03bd\u03be\u0007\u0005\u0000\u0000\u03be\u008a\u0001\u0000\u0000"+
- "\u0000\u03bf\u03c0\u0007\t\u0000\u0000\u03c0\u03c1\u0007\u0014\u0000\u0000"+
- "\u03c1\u03c2\u0007\r\u0000\u0000\u03c2\u03c3\u0007\r\u0000\u0000\u03c3"+
- "\u008c\u0001\u0000\u0000\u0000\u03c4\u03c5\u0007\t\u0000\u0000\u03c5\u03c6"+
- "\u0007\u0014\u0000\u0000\u03c6\u03c7\u0007\r\u0000\u0000\u03c7\u03c8\u0007"+
- "\r\u0000\u0000\u03c8\u03c9\u0007\u0002\u0000\u0000\u03c9\u008e\u0001\u0000"+
- "\u0000\u0000\u03ca\u03cb\u0007\u0007\u0000\u0000\u03cb\u03cc\u0007\u0006"+
- "\u0000\u0000\u03cc\u0090\u0001\u0000\u0000\u0000\u03cd\u03ce\u0005?\u0000"+
- "\u0000\u03ce\u0092\u0001\u0000\u0000\u0000\u03cf\u03d0\u0007\u0006\u0000"+
- "\u0000\u03d0\u03d1\u0007\r\u0000\u0000\u03d1\u03d2\u0007\u0001\u0000\u0000"+
- "\u03d2\u03d3\u0007\u0012\u0000\u0000\u03d3\u03d4\u0007\u0003\u0000\u0000"+
- "\u03d4\u0094\u0001\u0000\u0000\u0000\u03d5\u03d6\u0007\u0005\u0000\u0000"+
- "\u03d6\u03d7\u0007\u0006\u0000\u0000\u03d7\u03d8\u0007\u0014\u0000\u0000"+
- "\u03d8\u03d9\u0007\u0003\u0000\u0000\u03d9\u0096\u0001\u0000\u0000\u0000"+
- "\u03da\u03db\u0005=\u0000\u0000\u03db\u03dc\u0005=\u0000\u0000\u03dc\u0098"+
- "\u0001\u0000\u0000\u0000\u03dd\u03de\u0005=\u0000\u0000\u03de\u03df\u0005"+
- "~\u0000\u0000\u03df\u009a\u0001\u0000\u0000\u0000\u03e0\u03e1\u0005!\u0000"+
- "\u0000\u03e1\u03e2\u0005=\u0000\u0000\u03e2\u009c\u0001\u0000\u0000\u0000"+
- "\u03e3\u03e4\u0005<\u0000\u0000\u03e4\u009e\u0001\u0000\u0000\u0000\u03e5"+
- "\u03e6\u0005<\u0000\u0000\u03e6\u03e7\u0005=\u0000\u0000\u03e7\u00a0\u0001"+
- "\u0000\u0000\u0000\u03e8\u03e9\u0005>\u0000\u0000\u03e9\u00a2\u0001\u0000"+
- "\u0000\u0000\u03ea\u03eb\u0005>\u0000\u0000\u03eb\u03ec\u0005=\u0000\u0000"+
- "\u03ec\u00a4\u0001\u0000\u0000\u0000\u03ed\u03ee\u0005+\u0000\u0000\u03ee"+
- "\u00a6\u0001\u0000\u0000\u0000\u03ef\u03f0\u0005-\u0000\u0000\u03f0\u00a8"+
- "\u0001\u0000\u0000\u0000\u03f1\u03f2\u0005*\u0000\u0000\u03f2\u00aa\u0001"+
- "\u0000\u0000\u0000\u03f3\u03f4\u0005/\u0000\u0000\u03f4\u00ac\u0001\u0000"+
- "\u0000\u0000\u03f5\u03f6\u0005%\u0000\u0000\u03f6\u00ae\u0001\u0000\u0000"+
- "\u0000\u03f7\u03f8\u0005{\u0000\u0000\u03f8\u00b0\u0001\u0000\u0000\u0000"+
- "\u03f9\u03fa\u0005}\u0000\u0000\u03fa\u00b2\u0001\u0000\u0000\u0000\u03fb"+
- "\u03fc\u00031\u000f\u0000\u03fc\u03fd\u0001\u0000\u0000\u0000\u03fd\u03fe"+
- "\u0006P\u000f\u0000\u03fe\u00b4\u0001\u0000\u0000\u0000\u03ff\u0402\u0003"+
- "\u0091?\u0000\u0400\u0403\u0003S \u0000\u0401\u0403\u0003a\'\u0000\u0402"+
- "\u0400\u0001\u0000\u0000\u0000\u0402\u0401\u0001\u0000\u0000\u0000\u0403"+
- "\u0407\u0001\u0000\u0000\u0000\u0404\u0406\u0003c(\u0000\u0405\u0404\u0001"+
- "\u0000\u0000\u0000\u0406\u0409\u0001\u0000\u0000\u0000\u0407\u0405\u0001"+
- "\u0000\u0000\u0000\u0407\u0408\u0001\u0000\u0000\u0000\u0408\u0411\u0001"+
- "\u0000\u0000\u0000\u0409\u0407\u0001\u0000\u0000\u0000\u040a\u040c\u0003"+
- "\u0091?\u0000\u040b\u040d\u0003Q\u001f\u0000\u040c\u040b\u0001\u0000\u0000"+
- "\u0000\u040d\u040e\u0001\u0000\u0000\u0000\u040e\u040c\u0001\u0000\u0000"+
- "\u0000\u040e\u040f\u0001\u0000\u0000\u0000\u040f\u0411\u0001\u0000\u0000"+
- "\u0000\u0410\u03ff\u0001\u0000\u0000\u0000\u0410\u040a\u0001\u0000\u0000"+
- "\u0000\u0411\u00b6\u0001\u0000\u0000\u0000\u0412\u0413\u0005[\u0000\u0000"+
- "\u0413\u0414\u0001\u0000\u0000\u0000\u0414\u0415\u0006R\u0000\u0000\u0415"+
- "\u0416\u0006R\u0000\u0000\u0416\u00b8\u0001\u0000\u0000\u0000\u0417\u0418"+
- "\u0005]\u0000\u0000\u0418\u0419\u0001\u0000\u0000\u0000\u0419\u041a\u0006"+
- "S\u000e\u0000\u041a\u041b\u0006S\u000e\u0000\u041b\u00ba\u0001\u0000\u0000"+
- "\u0000\u041c\u041d\u0005(\u0000\u0000\u041d\u041e\u0001\u0000\u0000\u0000"+
- "\u041e\u041f\u0006T\u0000\u0000\u041f\u0420\u0006T\u0000\u0000\u0420\u00bc"+
- "\u0001\u0000\u0000\u0000\u0421\u0422\u0005)\u0000\u0000\u0422\u0423\u0001"+
- "\u0000\u0000\u0000\u0423\u0424\u0006U\u000e\u0000\u0424\u0425\u0006U\u000e"+
- "\u0000\u0425\u00be\u0001\u0000\u0000\u0000\u0426\u042a\u0003S \u0000\u0427"+
- "\u0429\u0003c(\u0000\u0428\u0427\u0001\u0000\u0000\u0000\u0429\u042c\u0001"+
- "\u0000\u0000\u0000\u042a\u0428\u0001\u0000\u0000\u0000\u042a\u042b\u0001"+
- "\u0000\u0000\u0000\u042b\u0437\u0001\u0000\u0000\u0000\u042c\u042a\u0001"+
- "\u0000\u0000\u0000\u042d\u0430\u0003a\'\u0000\u042e\u0430\u0003[$\u0000"+
- "\u042f\u042d\u0001\u0000\u0000\u0000\u042f\u042e\u0001\u0000\u0000\u0000"+
- "\u0430\u0432\u0001\u0000\u0000\u0000\u0431\u0433\u0003c(\u0000\u0432\u0431"+
- "\u0001\u0000\u0000\u0000\u0433\u0434\u0001\u0000\u0000\u0000\u0434\u0432"+
- "\u0001\u0000\u0000\u0000\u0434\u0435\u0001\u0000\u0000\u0000\u0435\u0437"+
- "\u0001\u0000\u0000\u0000\u0436\u0426\u0001\u0000\u0000\u0000\u0436\u042f"+
- "\u0001\u0000\u0000\u0000\u0437\u00c0\u0001\u0000\u0000\u0000\u0438\u043a"+
- "\u0003]%\u0000\u0439\u043b\u0003_&\u0000\u043a\u0439\u0001\u0000\u0000"+
- "\u0000\u043b\u043c\u0001\u0000\u0000\u0000\u043c\u043a\u0001\u0000\u0000"+
- "\u0000\u043c\u043d\u0001\u0000\u0000\u0000\u043d\u043e\u0001\u0000\u0000"+
- "\u0000\u043e\u043f\u0003]%\u0000\u043f\u00c2\u0001\u0000\u0000\u0000\u0440"+
- "\u0441\u0003\u00c1W\u0000\u0441\u00c4\u0001\u0000\u0000\u0000\u0442\u0443"+
- "\u0003I\u001b\u0000\u0443\u0444\u0001\u0000\u0000\u0000\u0444\u0445\u0006"+
- "Y\r\u0000\u0445\u00c6\u0001\u0000\u0000\u0000\u0446\u0447\u0003K\u001c"+
- "\u0000\u0447\u0448\u0001\u0000\u0000\u0000\u0448\u0449\u0006Z\r\u0000"+
- "\u0449\u00c8\u0001\u0000\u0000\u0000\u044a\u044b\u0003M\u001d\u0000\u044b"+
- "\u044c\u0001\u0000\u0000\u0000\u044c\u044d\u0006[\r\u0000\u044d\u00ca"+
- "\u0001\u0000\u0000\u0000\u044e\u044f\u0003\u00b7R\u0000\u044f\u0450\u0001"+
- "\u0000\u0000\u0000\u0450\u0451\u0006\\\u0010\u0000\u0451\u0452\u0006\\"+
- "\u0011\u0000\u0452\u00cc\u0001\u0000\u0000\u0000\u0453\u0454\u0003O\u001e"+
- "\u0000\u0454\u0455\u0001\u0000\u0000\u0000\u0455\u0456\u0006]\u0012\u0000"+
- "\u0456\u0457\u0006]\u000e\u0000\u0457\u00ce\u0001\u0000\u0000\u0000\u0458"+
- "\u0459\u0003M\u001d\u0000\u0459\u045a\u0001\u0000\u0000\u0000\u045a\u045b"+
- "\u0006^\r\u0000\u045b\u00d0\u0001\u0000\u0000\u0000\u045c\u045d\u0003"+
- "I\u001b\u0000\u045d\u045e\u0001\u0000\u0000\u0000\u045e\u045f\u0006_\r"+
- "\u0000\u045f\u00d2\u0001\u0000\u0000\u0000\u0460\u0461\u0003K\u001c\u0000"+
- "\u0461\u0462\u0001\u0000\u0000\u0000\u0462\u0463\u0006`\r\u0000\u0463"+
- "\u00d4\u0001\u0000\u0000\u0000\u0464\u0465\u0003O\u001e\u0000\u0465\u0466"+
- "\u0001\u0000\u0000\u0000\u0466\u0467\u0006a\u0012\u0000\u0467\u0468\u0006"+
- "a\u000e\u0000\u0468\u00d6\u0001\u0000\u0000\u0000\u0469\u046a\u0003\u00b7"+
- "R\u0000\u046a\u046b\u0001\u0000\u0000\u0000\u046b\u046c\u0006b\u0010\u0000"+
- "\u046c\u00d8\u0001\u0000\u0000\u0000\u046d\u046e\u0003\u00b9S\u0000\u046e"+
- "\u046f\u0001\u0000\u0000\u0000\u046f\u0470\u0006c\u0013\u0000\u0470\u00da"+
- "\u0001\u0000\u0000\u0000\u0471\u0472\u0003u1\u0000\u0472\u0473\u0001\u0000"+
- "\u0000\u0000\u0473\u0474\u0006d\u0014\u0000\u0474\u00dc\u0001\u0000\u0000"+
- "\u0000\u0475\u0476\u0003w2\u0000\u0476\u0477\u0001\u0000\u0000\u0000\u0477"+
- "\u0478\u0006e\u0015\u0000\u0478\u00de\u0001\u0000\u0000\u0000\u0479\u047a"+
- "\u0003q/\u0000\u047a\u047b\u0001\u0000\u0000\u0000\u047b\u047c\u0006f"+
- "\u0016\u0000\u047c\u00e0\u0001\u0000\u0000\u0000\u047d\u047e\u0007\u0010"+
- "\u0000\u0000\u047e\u047f\u0007\u0003\u0000\u0000\u047f\u0480\u0007\u0005"+
- "\u0000\u0000\u0480\u0481\u0007\f\u0000\u0000\u0481\u0482\u0007\u0000\u0000"+
- "\u0000\u0482\u0483\u0007\f\u0000\u0000\u0483\u0484\u0007\u0005\u0000\u0000"+
- "\u0484\u0485\u0007\f\u0000\u0000\u0485\u00e2\u0001\u0000\u0000\u0000\u0486"+
- "\u048a\b \u0000\u0000\u0487\u0488\u0005/\u0000\u0000\u0488\u048a\b!\u0000"+
- "\u0000\u0489\u0486\u0001\u0000\u0000\u0000\u0489\u0487\u0001\u0000\u0000"+
- "\u0000\u048a\u00e4\u0001\u0000\u0000\u0000\u048b\u048d\u0003\u00e3h\u0000"+
- "\u048c\u048b\u0001\u0000\u0000\u0000\u048d\u048e\u0001\u0000\u0000\u0000"+
- "\u048e\u048c\u0001\u0000\u0000\u0000\u048e\u048f\u0001\u0000\u0000\u0000"+
- "\u048f\u00e6\u0001\u0000\u0000\u0000\u0490\u0491\u0003\u00e5i\u0000\u0491"+
- "\u0492\u0001\u0000\u0000\u0000\u0492\u0493\u0006j\u0017\u0000\u0493\u00e8"+
- "\u0001\u0000\u0000\u0000\u0494\u0495\u0003e)\u0000\u0495\u0496\u0001\u0000"+
- "\u0000\u0000\u0496\u0497\u0006k\u0018\u0000\u0497\u00ea\u0001\u0000\u0000"+
- "\u0000\u0498\u0499\u0003I\u001b\u0000\u0499\u049a\u0001\u0000\u0000\u0000"+
- "\u049a\u049b\u0006l\r\u0000\u049b\u00ec\u0001\u0000\u0000\u0000\u049c"+
- "\u049d\u0003K\u001c\u0000\u049d\u049e\u0001\u0000\u0000\u0000\u049e\u049f"+
- "\u0006m\r\u0000\u049f\u00ee\u0001\u0000\u0000\u0000\u04a0\u04a1\u0003"+
- "M\u001d\u0000\u04a1\u04a2\u0001\u0000\u0000\u0000\u04a2\u04a3\u0006n\r"+
- "\u0000\u04a3\u00f0\u0001\u0000\u0000\u0000\u04a4\u04a5\u0003O\u001e\u0000"+
- "\u04a5\u04a6\u0001\u0000\u0000\u0000\u04a6\u04a7\u0006o\u0012\u0000\u04a7"+
- "\u04a8\u0006o\u000e\u0000\u04a8\u00f2\u0001\u0000\u0000\u0000\u04a9\u04aa"+
- "\u0003{4\u0000\u04aa\u04ab\u0001\u0000\u0000\u0000\u04ab\u04ac\u0006p"+
- "\u0019\u0000\u04ac\u00f4\u0001\u0000\u0000\u0000\u04ad\u04ae\u0003w2\u0000"+
- "\u04ae\u04af\u0001\u0000\u0000\u0000\u04af\u04b0\u0006q\u0015\u0000\u04b0"+
- "\u00f6\u0001\u0000\u0000\u0000\u04b1\u04b2\u0003\u0091?\u0000\u04b2\u04b3"+
- "\u0001\u0000\u0000\u0000\u04b3\u04b4\u0006r\u001a\u0000\u04b4\u00f8\u0001"+
- "\u0000\u0000\u0000\u04b5\u04b6\u0003\u00b5Q\u0000\u04b6\u04b7\u0001\u0000"+
- "\u0000\u0000\u04b7\u04b8\u0006s\u001b\u0000\u04b8\u00fa\u0001\u0000\u0000"+
- "\u0000\u04b9\u04be\u0003S \u0000\u04ba\u04be\u0003Q\u001f\u0000\u04bb"+
- "\u04be\u0003a\'\u0000\u04bc\u04be\u0003\u00a9K\u0000\u04bd\u04b9\u0001"+
- "\u0000\u0000\u0000\u04bd\u04ba\u0001\u0000\u0000\u0000\u04bd\u04bb\u0001"+
- "\u0000\u0000\u0000\u04bd\u04bc\u0001\u0000\u0000\u0000\u04be\u00fc\u0001"+
- "\u0000\u0000\u0000\u04bf\u04c2\u0003S \u0000\u04c0\u04c2\u0003\u00a9K"+
- "\u0000\u04c1\u04bf\u0001\u0000\u0000\u0000\u04c1\u04c0\u0001\u0000\u0000"+
- "\u0000\u04c2\u04c6\u0001\u0000\u0000\u0000\u04c3\u04c5\u0003\u00fbt\u0000"+
- "\u04c4\u04c3\u0001\u0000\u0000\u0000\u04c5\u04c8\u0001\u0000\u0000\u0000"+
- "\u04c6\u04c4\u0001\u0000\u0000\u0000\u04c6\u04c7\u0001\u0000\u0000\u0000"+
- "\u04c7\u04d3\u0001\u0000\u0000\u0000\u04c8\u04c6\u0001\u0000\u0000\u0000"+
- "\u04c9\u04cc\u0003a\'\u0000\u04ca\u04cc\u0003[$\u0000\u04cb\u04c9\u0001"+
- "\u0000\u0000\u0000\u04cb\u04ca\u0001\u0000\u0000\u0000\u04cc\u04ce\u0001"+
- "\u0000\u0000\u0000\u04cd\u04cf\u0003\u00fbt\u0000\u04ce\u04cd\u0001\u0000"+
- "\u0000\u0000\u04cf\u04d0\u0001\u0000\u0000\u0000\u04d0\u04ce\u0001\u0000"+
- "\u0000\u0000\u04d0\u04d1\u0001\u0000\u0000\u0000\u04d1\u04d3\u0001\u0000"+
- "\u0000\u0000\u04d2\u04c1\u0001\u0000\u0000\u0000\u04d2\u04cb\u0001\u0000"+
- "\u0000\u0000\u04d3\u00fe\u0001\u0000\u0000\u0000\u04d4\u04d7\u0003\u00fd"+
- "u\u0000\u04d5\u04d7\u0003\u00c1W\u0000\u04d6\u04d4\u0001\u0000\u0000\u0000"+
- "\u04d6\u04d5\u0001\u0000\u0000\u0000\u04d7\u04d8\u0001\u0000\u0000\u0000"+
- "\u04d8\u04d6\u0001\u0000\u0000\u0000\u04d8\u04d9\u0001\u0000\u0000\u0000"+
- "\u04d9\u0100\u0001\u0000\u0000\u0000\u04da\u04db\u0003I\u001b\u0000\u04db"+
- "\u04dc\u0001\u0000\u0000\u0000\u04dc\u04dd\u0006w\r\u0000\u04dd\u0102"+
- "\u0001\u0000\u0000\u0000\u04de\u04df\u0003K\u001c\u0000\u04df\u04e0\u0001"+
- "\u0000\u0000\u0000\u04e0\u04e1\u0006x\r\u0000\u04e1\u0104\u0001\u0000"+
- "\u0000\u0000\u04e2\u04e3\u0003M\u001d\u0000\u04e3\u04e4\u0001\u0000\u0000"+
- "\u0000\u04e4\u04e5\u0006y\r\u0000\u04e5\u0106\u0001\u0000\u0000\u0000"+
- "\u04e6\u04e7\u0003O\u001e\u0000\u04e7\u04e8\u0001\u0000\u0000\u0000\u04e8"+
- "\u04e9\u0006z\u0012\u0000\u04e9\u04ea\u0006z\u000e\u0000\u04ea\u0108\u0001"+
- "\u0000\u0000\u0000\u04eb\u04ec\u0003q/\u0000\u04ec\u04ed\u0001\u0000\u0000"+
- "\u0000\u04ed\u04ee\u0006{\u0016\u0000\u04ee\u010a\u0001\u0000\u0000\u0000"+
- "\u04ef\u04f0\u0003w2\u0000\u04f0\u04f1\u0001\u0000\u0000\u0000\u04f1\u04f2"+
- "\u0006|\u0015\u0000\u04f2\u010c\u0001\u0000\u0000\u0000\u04f3\u04f4\u0003"+
- "{4\u0000\u04f4\u04f5\u0001\u0000\u0000\u0000\u04f5\u04f6\u0006}\u0019"+
- "\u0000\u04f6\u010e\u0001\u0000\u0000\u0000\u04f7\u04f8\u0003\u0091?\u0000"+
- "\u04f8\u04f9\u0001\u0000\u0000\u0000\u04f9\u04fa\u0006~\u001a\u0000\u04fa"+
- "\u0110\u0001\u0000\u0000\u0000\u04fb\u04fc\u0003\u00b5Q\u0000\u04fc\u04fd"+
- "\u0001\u0000\u0000\u0000\u04fd\u04fe\u0006\u007f\u001b\u0000\u04fe\u0112"+
- "\u0001\u0000\u0000\u0000\u04ff\u0500\u0007\f\u0000\u0000\u0500\u0501\u0007"+
- "\u0002\u0000\u0000\u0501\u0114\u0001\u0000\u0000\u0000\u0502\u0503\u0003"+
- "\u00ffv\u0000\u0503\u0504\u0001\u0000\u0000\u0000\u0504\u0505\u0006\u0081"+
- "\u001c\u0000\u0505\u0116\u0001\u0000\u0000\u0000\u0506\u0507\u0003I\u001b"+
- "\u0000\u0507\u0508\u0001\u0000\u0000\u0000\u0508\u0509\u0006\u0082\r\u0000"+
- "\u0509\u0118\u0001\u0000\u0000\u0000\u050a\u050b\u0003K\u001c\u0000\u050b"+
- "\u050c\u0001\u0000\u0000\u0000\u050c\u050d\u0006\u0083\r\u0000\u050d\u011a"+
- "\u0001\u0000\u0000\u0000\u050e\u050f\u0003M\u001d\u0000\u050f\u0510\u0001"+
- "\u0000\u0000\u0000\u0510\u0511\u0006\u0084\r\u0000\u0511\u011c\u0001\u0000"+
- "\u0000\u0000\u0512\u0513\u0003O\u001e\u0000\u0513\u0514\u0001\u0000\u0000"+
- "\u0000\u0514\u0515\u0006\u0085\u0012\u0000\u0515\u0516\u0006\u0085\u000e"+
- "\u0000\u0516\u011e\u0001\u0000\u0000\u0000\u0517\u0518\u0003\u00b7R\u0000"+
- "\u0518\u0519\u0001\u0000\u0000\u0000\u0519\u051a\u0006\u0086\u0010\u0000"+
- "\u051a\u051b\u0006\u0086\u001d\u0000\u051b\u0120\u0001\u0000\u0000\u0000"+
- "\u051c\u051d\u0007\u0007\u0000\u0000\u051d\u051e\u0007\t\u0000\u0000\u051e"+
- "\u051f\u0001\u0000\u0000\u0000\u051f\u0520\u0006\u0087\u001e\u0000\u0520"+
- "\u0122\u0001\u0000\u0000\u0000\u0521\u0522\u0007\u0013\u0000\u0000\u0522"+
- "\u0523\u0007\u0001\u0000\u0000\u0523\u0524\u0007\u0005\u0000\u0000\u0524"+
- "\u0525\u0007\n\u0000\u0000\u0525\u0526\u0001\u0000\u0000\u0000\u0526\u0527"+
- "\u0006\u0088\u001e\u0000\u0527\u0124\u0001\u0000\u0000\u0000\u0528\u0529"+
- "\b\"\u0000\u0000\u0529\u0126\u0001\u0000\u0000\u0000\u052a\u052c\u0003"+
- "\u0125\u0089\u0000\u052b\u052a\u0001\u0000\u0000\u0000\u052c\u052d\u0001"+
- "\u0000\u0000\u0000\u052d\u052b\u0001\u0000\u0000\u0000\u052d\u052e\u0001"+
- "\u0000\u0000\u0000\u052e\u052f\u0001\u0000\u0000\u0000\u052f\u0530\u0003"+
- "u1\u0000\u0530\u0532\u0001\u0000\u0000\u0000\u0531\u052b\u0001\u0000\u0000"+
- "\u0000\u0531\u0532\u0001\u0000\u0000\u0000\u0532\u0534\u0001\u0000\u0000"+
- "\u0000\u0533\u0535\u0003\u0125\u0089\u0000\u0534\u0533\u0001\u0000\u0000"+
- "\u0000\u0535\u0536\u0001\u0000\u0000\u0000\u0536\u0534\u0001\u0000\u0000"+
- "\u0000\u0536\u0537\u0001\u0000\u0000\u0000\u0537\u0128\u0001\u0000\u0000"+
- "\u0000\u0538\u0539\u0003\u0127\u008a\u0000\u0539\u053a\u0001\u0000\u0000"+
- "\u0000\u053a\u053b\u0006\u008b\u001f\u0000\u053b\u012a\u0001\u0000\u0000"+
- "\u0000\u053c\u053d\u0003I\u001b\u0000\u053d\u053e\u0001\u0000\u0000\u0000"+
- "\u053e\u053f\u0006\u008c\r\u0000\u053f\u012c\u0001\u0000\u0000\u0000\u0540"+
- "\u0541\u0003K\u001c\u0000\u0541\u0542\u0001\u0000\u0000\u0000\u0542\u0543"+
- "\u0006\u008d\r\u0000\u0543\u012e\u0001\u0000\u0000\u0000\u0544\u0545\u0003"+
- "M\u001d\u0000\u0545\u0546\u0001\u0000\u0000\u0000\u0546\u0547\u0006\u008e"+
- "\r\u0000\u0547\u0130\u0001\u0000\u0000\u0000\u0548\u0549\u0003O\u001e"+
- "\u0000\u0549\u054a\u0001\u0000\u0000\u0000\u054a\u054b\u0006\u008f\u0012"+
- "\u0000\u054b\u054c\u0006\u008f\u000e\u0000\u054c\u054d\u0006\u008f\u000e"+
- "\u0000\u054d\u0132\u0001\u0000\u0000\u0000\u054e\u054f\u0003q/\u0000\u054f"+
- "\u0550\u0001\u0000\u0000\u0000\u0550\u0551\u0006\u0090\u0016\u0000\u0551"+
- "\u0134\u0001\u0000\u0000\u0000\u0552\u0553\u0003w2\u0000\u0553\u0554\u0001"+
- "\u0000\u0000\u0000\u0554\u0555\u0006\u0091\u0015\u0000\u0555\u0136\u0001"+
- "\u0000\u0000\u0000\u0556\u0557\u0003{4\u0000\u0557\u0558\u0001\u0000\u0000"+
- "\u0000\u0558\u0559\u0006\u0092\u0019\u0000\u0559\u0138\u0001\u0000\u0000"+
- "\u0000\u055a\u055b\u0003\u0123\u0088\u0000\u055b\u055c\u0001\u0000\u0000"+
- "\u0000\u055c\u055d\u0006\u0093 \u0000\u055d\u013a\u0001\u0000\u0000\u0000"+
- "\u055e\u055f\u0003\u00ffv\u0000\u055f\u0560\u0001\u0000\u0000\u0000\u0560"+
- "\u0561\u0006\u0094\u001c\u0000\u0561\u013c\u0001\u0000\u0000\u0000\u0562"+
- "\u0563\u0003\u00c3X\u0000\u0563\u0564\u0001\u0000\u0000\u0000\u0564\u0565"+
- "\u0006\u0095!\u0000\u0565\u013e\u0001\u0000\u0000\u0000\u0566\u0567\u0003"+
- "\u0091?\u0000\u0567\u0568\u0001\u0000\u0000\u0000\u0568\u0569\u0006\u0096"+
- "\u001a\u0000\u0569\u0140\u0001\u0000\u0000\u0000\u056a\u056b\u0003\u00b5"+
- "Q\u0000\u056b\u056c\u0001\u0000\u0000\u0000\u056c\u056d\u0006\u0097\u001b"+
- "\u0000\u056d\u0142\u0001\u0000\u0000\u0000\u056e\u056f\u0003I\u001b\u0000"+
- "\u056f\u0570\u0001\u0000\u0000\u0000\u0570\u0571\u0006\u0098\r\u0000\u0571"+
- "\u0144\u0001\u0000\u0000\u0000\u0572\u0573\u0003K\u001c\u0000\u0573\u0574"+
- "\u0001\u0000\u0000\u0000\u0574\u0575\u0006\u0099\r\u0000\u0575\u0146\u0001"+
- "\u0000\u0000\u0000\u0576\u0577\u0003M\u001d\u0000\u0577\u0578\u0001\u0000"+
- "\u0000\u0000\u0578\u0579\u0006\u009a\r\u0000\u0579\u0148\u0001\u0000\u0000"+
- "\u0000\u057a\u057b\u0003O\u001e\u0000\u057b\u057c\u0001\u0000\u0000\u0000"+
- "\u057c\u057d\u0006\u009b\u0012\u0000\u057d\u057e\u0006\u009b\u000e\u0000"+
- "\u057e\u014a\u0001\u0000\u0000\u0000\u057f\u0580\u0003{4\u0000\u0580\u0581"+
- "\u0001\u0000\u0000\u0000\u0581\u0582\u0006\u009c\u0019\u0000\u0582\u014c"+
- "\u0001\u0000\u0000\u0000\u0583\u0584\u0003\u0091?\u0000\u0584\u0585\u0001"+
- "\u0000\u0000\u0000\u0585\u0586\u0006\u009d\u001a\u0000\u0586\u014e\u0001"+
- "\u0000\u0000\u0000\u0587\u0588\u0003\u00b5Q\u0000\u0588\u0589\u0001\u0000"+
- "\u0000\u0000\u0589\u058a\u0006\u009e\u001b\u0000\u058a\u0150\u0001\u0000"+
- "\u0000\u0000\u058b\u058c\u0003\u00c3X\u0000\u058c\u058d\u0001\u0000\u0000"+
- "\u0000\u058d\u058e\u0006\u009f!\u0000\u058e\u0152\u0001\u0000\u0000\u0000"+
- "\u058f\u0590\u0003\u00bfV\u0000\u0590\u0591\u0001\u0000\u0000\u0000\u0591"+
- "\u0592\u0006\u00a0\"\u0000\u0592\u0154\u0001\u0000\u0000\u0000\u0593\u0594"+
- "\u0003I\u001b\u0000\u0594\u0595\u0001\u0000\u0000\u0000\u0595\u0596\u0006"+
- "\u00a1\r\u0000\u0596\u0156\u0001\u0000\u0000\u0000\u0597\u0598\u0003K"+
- "\u001c\u0000\u0598\u0599\u0001\u0000\u0000\u0000\u0599\u059a\u0006\u00a2"+
- "\r\u0000\u059a\u0158\u0001\u0000\u0000\u0000\u059b\u059c\u0003M\u001d"+
- "\u0000\u059c\u059d\u0001\u0000\u0000\u0000\u059d\u059e\u0006\u00a3\r\u0000"+
- "\u059e\u015a\u0001\u0000\u0000\u0000\u059f\u05a0\u0003O\u001e\u0000\u05a0"+
- "\u05a1\u0001\u0000\u0000\u0000\u05a1\u05a2\u0006\u00a4\u0012\u0000\u05a2"+
- "\u05a3\u0006\u00a4\u000e\u0000\u05a3\u015c\u0001\u0000\u0000\u0000\u05a4"+
- "\u05a5\u0007\u0001\u0000\u0000\u05a5\u05a6\u0007\t\u0000\u0000\u05a6\u05a7"+
- "\u0007\u000f\u0000\u0000\u05a7\u05a8\u0007\u0007\u0000\u0000\u05a8\u015e"+
- "\u0001\u0000\u0000\u0000\u05a9\u05aa\u0003I\u001b\u0000\u05aa\u05ab\u0001"+
- "\u0000\u0000\u0000\u05ab\u05ac\u0006\u00a6\r\u0000\u05ac\u0160\u0001\u0000"+
- "\u0000\u0000\u05ad\u05ae\u0003K\u001c\u0000\u05ae\u05af\u0001\u0000\u0000"+
- "\u0000\u05af\u05b0\u0006\u00a7\r\u0000\u05b0\u0162\u0001\u0000\u0000\u0000"+
- "\u05b1\u05b2\u0003M\u001d\u0000\u05b2\u05b3\u0001\u0000\u0000\u0000\u05b3"+
- "\u05b4\u0006\u00a8\r\u0000\u05b4\u0164\u0001\u0000\u0000\u0000\u05b5\u05b6"+
- "\u0003\u00b9S\u0000\u05b6\u05b7\u0001\u0000\u0000\u0000\u05b7\u05b8\u0006"+
- "\u00a9\u0013\u0000\u05b8\u05b9\u0006\u00a9\u000e\u0000\u05b9\u0166\u0001"+
- "\u0000\u0000\u0000\u05ba\u05bb\u0003u1\u0000\u05bb\u05bc\u0001\u0000\u0000"+
- "\u0000\u05bc\u05bd\u0006\u00aa\u0014\u0000\u05bd\u0168\u0001\u0000\u0000"+
- "\u0000\u05be\u05c4\u0003[$\u0000\u05bf\u05c4\u0003Q\u001f\u0000\u05c0"+
- "\u05c4\u0003{4\u0000\u05c1\u05c4\u0003S \u0000\u05c2\u05c4\u0003a\'\u0000"+
- "\u05c3\u05be\u0001\u0000\u0000\u0000\u05c3\u05bf\u0001\u0000\u0000\u0000"+
- "\u05c3\u05c0\u0001\u0000\u0000\u0000\u05c3\u05c1\u0001\u0000\u0000\u0000"+
- "\u05c3\u05c2\u0001\u0000\u0000\u0000\u05c4\u05c5\u0001\u0000\u0000\u0000"+
- "\u05c5\u05c3\u0001\u0000\u0000\u0000\u05c5\u05c6\u0001\u0000\u0000\u0000"+
- "\u05c6\u016a\u0001\u0000\u0000\u0000\u05c7\u05c8\u0003I\u001b\u0000\u05c8"+
- "\u05c9\u0001\u0000\u0000\u0000\u05c9\u05ca\u0006\u00ac\r\u0000\u05ca\u016c"+
- "\u0001\u0000\u0000\u0000\u05cb\u05cc\u0003K\u001c\u0000\u05cc\u05cd\u0001"+
- "\u0000\u0000\u0000\u05cd\u05ce\u0006\u00ad\r\u0000\u05ce\u016e\u0001\u0000"+
- "\u0000\u0000\u05cf\u05d0\u0003M\u001d\u0000\u05d0\u05d1\u0001\u0000\u0000"+
- "\u0000\u05d1\u05d2\u0006\u00ae\r\u0000\u05d2\u0170\u0001\u0000\u0000\u0000"+
- "\u05d3\u05d4\u0003O\u001e\u0000\u05d4\u05d5\u0001\u0000\u0000\u0000\u05d5"+
- "\u05d6\u0006\u00af\u0012\u0000\u05d6\u05d7\u0006\u00af\u000e\u0000\u05d7"+
- "\u0172\u0001\u0000\u0000\u0000\u05d8\u05d9\u0003u1\u0000\u05d9\u05da\u0001"+
- "\u0000\u0000\u0000\u05da\u05db\u0006\u00b0\u0014\u0000\u05db\u0174\u0001"+
- "\u0000\u0000\u0000\u05dc\u05dd\u0003w2\u0000\u05dd\u05de\u0001\u0000\u0000"+
- "\u0000\u05de\u05df\u0006\u00b1\u0015\u0000\u05df\u0176\u0001\u0000\u0000"+
- "\u0000\u05e0\u05e1\u0003{4\u0000\u05e1\u05e2\u0001\u0000\u0000\u0000\u05e2"+
- "\u05e3\u0006\u00b2\u0019\u0000\u05e3\u0178\u0001\u0000\u0000\u0000\u05e4"+
- "\u05e5\u0003\u0121\u0087\u0000\u05e5\u05e6\u0001\u0000\u0000\u0000\u05e6"+
- "\u05e7\u0006\u00b3#\u0000\u05e7\u05e8\u0006\u00b3$\u0000\u05e8\u017a\u0001"+
- "\u0000\u0000\u0000\u05e9\u05ea\u0003\u00e5i\u0000\u05ea\u05eb\u0001\u0000"+
- "\u0000\u0000\u05eb\u05ec\u0006\u00b4\u0017\u0000\u05ec\u017c\u0001\u0000"+
- "\u0000\u0000\u05ed\u05ee\u0003e)\u0000\u05ee\u05ef\u0001\u0000\u0000\u0000"+
- "\u05ef\u05f0\u0006\u00b5\u0018\u0000\u05f0\u017e\u0001\u0000\u0000\u0000"+
- "\u05f1\u05f2\u0003I\u001b\u0000\u05f2\u05f3\u0001\u0000\u0000\u0000\u05f3"+
- "\u05f4\u0006\u00b6\r\u0000\u05f4\u0180\u0001\u0000\u0000\u0000\u05f5\u05f6"+
- "\u0003K\u001c\u0000\u05f6\u05f7\u0001\u0000\u0000\u0000\u05f7\u05f8\u0006"+
- "\u00b7\r\u0000\u05f8\u0182\u0001\u0000\u0000\u0000\u05f9\u05fa\u0003M"+
- "\u001d\u0000\u05fa\u05fb\u0001\u0000\u0000\u0000\u05fb\u05fc\u0006\u00b8"+
- "\r\u0000\u05fc\u0184\u0001\u0000\u0000\u0000\u05fd\u05fe\u0003O\u001e"+
- "\u0000\u05fe\u05ff\u0001\u0000\u0000\u0000\u05ff\u0600\u0006\u00b9\u0012"+
- "\u0000\u0600\u0601\u0006\u00b9\u000e\u0000\u0601\u0602\u0006\u00b9\u000e"+
- "\u0000\u0602\u0186\u0001\u0000\u0000\u0000\u0603\u0604\u0003w2\u0000\u0604"+
- "\u0605\u0001\u0000\u0000\u0000\u0605\u0606\u0006\u00ba\u0015\u0000\u0606"+
- "\u0188\u0001\u0000\u0000\u0000\u0607\u0608\u0003{4\u0000\u0608\u0609\u0001"+
- "\u0000\u0000\u0000\u0609\u060a\u0006\u00bb\u0019\u0000\u060a\u018a\u0001"+
- "\u0000\u0000\u0000\u060b\u060c\u0003\u00ffv\u0000\u060c\u060d\u0001\u0000"+
- "\u0000\u0000\u060d\u060e\u0006\u00bc\u001c\u0000\u060e\u018c\u0001\u0000"+
- "\u0000\u0000\u060f\u0610\u0003I\u001b\u0000\u0610\u0611\u0001\u0000\u0000"+
- "\u0000\u0611\u0612\u0006\u00bd\r\u0000\u0612\u018e\u0001\u0000\u0000\u0000"+
- "\u0613\u0614\u0003K\u001c\u0000\u0614\u0615\u0001\u0000\u0000\u0000\u0615"+
- "\u0616\u0006\u00be\r\u0000\u0616\u0190\u0001\u0000\u0000\u0000\u0617\u0618"+
- "\u0003M\u001d\u0000\u0618\u0619\u0001\u0000\u0000\u0000\u0619\u061a\u0006"+
- "\u00bf\r\u0000\u061a\u0192\u0001\u0000\u0000\u0000\u061b\u061c\u0003O"+
- "\u001e\u0000\u061c\u061d\u0001\u0000\u0000\u0000\u061d\u061e\u0006\u00c0"+
- "\u0012\u0000\u061e\u061f\u0006\u00c0\u000e\u0000\u061f\u0194\u0001\u0000"+
- "\u0000\u0000\u0620\u0621\u0007#\u0000\u0000\u0621\u0622\u0007\u0007\u0000"+
- "\u0000\u0622\u0623\u0007\u0001\u0000\u0000\u0623\u0624\u0007\t\u0000\u0000"+
- "\u0624\u0196\u0001\u0000\u0000\u0000\u0625\u0626\u0003\u0113\u0080\u0000"+
- "\u0626\u0627\u0001\u0000\u0000\u0000\u0627\u0628\u0006\u00c2%\u0000\u0628"+
- "\u0198\u0001\u0000\u0000\u0000\u0629\u062a\u0003\u0121\u0087\u0000\u062a"+
- "\u062b\u0001\u0000\u0000\u0000\u062b\u062c\u0006\u00c3#\u0000\u062c\u062d"+
- "\u0006\u00c3\u000e\u0000\u062d\u062e\u0006\u00c3\u0000\u0000\u062e\u019a"+
- "\u0001\u0000\u0000\u0000\u062f\u0630\u0007\u0014\u0000\u0000\u0630\u0631"+
- "\u0007\u0002\u0000\u0000\u0631\u0632\u0007\u0001\u0000\u0000\u0632\u0633"+
- "\u0007\t\u0000\u0000\u0633\u0634\u0007\u0011\u0000\u0000\u0634\u0635\u0001"+
- "\u0000\u0000\u0000\u0635\u0636\u0006\u00c4\u000e\u0000\u0636\u0637\u0006"+
- "\u00c4\u0000\u0000\u0637\u019c\u0001\u0000\u0000\u0000\u0638\u0639\u0003"+
- "\u00e5i\u0000\u0639\u063a\u0001\u0000\u0000\u0000\u063a\u063b\u0006\u00c5"+
- "\u0017\u0000\u063b\u019e\u0001\u0000\u0000\u0000\u063c\u063d\u0003e)\u0000"+
- "\u063d\u063e\u0001\u0000\u0000\u0000\u063e\u063f\u0006\u00c6\u0018\u0000"+
- "\u063f\u01a0\u0001\u0000\u0000\u0000\u0640\u0641\u0003u1\u0000\u0641\u0642"+
- "\u0001\u0000\u0000\u0000\u0642\u0643\u0006\u00c7\u0014\u0000\u0643\u01a2"+
- "\u0001\u0000\u0000\u0000\u0644\u0645\u0003\u00bfV\u0000\u0645\u0646\u0001"+
- "\u0000\u0000\u0000\u0646\u0647\u0006\u00c8\"\u0000\u0647\u01a4\u0001\u0000"+
- "\u0000\u0000\u0648\u0649\u0003\u00c3X\u0000\u0649\u064a\u0001\u0000\u0000"+
- "\u0000\u064a\u064b\u0006\u00c9!\u0000\u064b\u01a6\u0001\u0000\u0000\u0000"+
- "\u064c\u064d\u0003I\u001b\u0000\u064d\u064e\u0001\u0000\u0000\u0000\u064e"+
- "\u064f\u0006\u00ca\r\u0000\u064f\u01a8\u0001\u0000\u0000\u0000\u0650\u0651"+
- "\u0003K\u001c\u0000\u0651\u0652\u0001\u0000\u0000\u0000\u0652\u0653\u0006"+
- "\u00cb\r\u0000\u0653\u01aa\u0001\u0000\u0000\u0000\u0654\u0655\u0003M"+
- "\u001d\u0000\u0655\u0656\u0001\u0000\u0000\u0000\u0656\u0657\u0006\u00cc"+
- "\r\u0000\u0657\u01ac\u0001\u0000\u0000\u0000\u0658\u0659\u0003O\u001e"+
- "\u0000\u0659\u065a\u0001\u0000\u0000\u0000\u065a\u065b\u0006\u00cd\u0012"+
- "\u0000\u065b\u065c\u0006\u00cd\u000e\u0000\u065c\u01ae\u0001\u0000\u0000"+
- "\u0000\u065d\u065e\u0003\u00e5i\u0000\u065e\u065f\u0001\u0000\u0000\u0000"+
- "\u065f\u0660\u0006\u00ce\u0017\u0000\u0660\u0661\u0006\u00ce\u000e\u0000"+
- "\u0661\u0662\u0006\u00ce&\u0000\u0662\u01b0\u0001\u0000\u0000\u0000\u0663"+
- "\u0664\u0003e)\u0000\u0664\u0665\u0001\u0000\u0000\u0000\u0665\u0666\u0006"+
- "\u00cf\u0018\u0000\u0666\u0667\u0006\u00cf\u000e\u0000\u0667\u0668\u0006"+
- "\u00cf&\u0000\u0668\u01b2\u0001\u0000\u0000\u0000\u0669\u066a\u0003I\u001b"+
- "\u0000\u066a\u066b\u0001\u0000\u0000\u0000\u066b\u066c\u0006\u00d0\r\u0000"+
- "\u066c\u01b4\u0001\u0000\u0000\u0000\u066d\u066e\u0003K\u001c\u0000\u066e"+
- "\u066f\u0001\u0000\u0000\u0000\u066f\u0670\u0006\u00d1\r\u0000\u0670\u01b6"+
- "\u0001\u0000\u0000\u0000\u0671\u0672\u0003M\u001d\u0000\u0672\u0673\u0001"+
- "\u0000\u0000\u0000\u0673\u0674\u0006\u00d2\r\u0000\u0674\u01b8\u0001\u0000"+
- "\u0000\u0000\u0675\u0676\u0003u1\u0000\u0676\u0677\u0001\u0000\u0000\u0000"+
- "\u0677\u0678\u0006\u00d3\u0014\u0000\u0678\u0679\u0006\u00d3\u000e\u0000"+
- "\u0679\u067a\u0006\u00d3\u000b\u0000\u067a\u01ba\u0001\u0000\u0000\u0000"+
- "\u067b\u067c\u0003w2\u0000\u067c\u067d\u0001\u0000\u0000\u0000\u067d\u067e"+
- "\u0006\u00d4\u0015\u0000\u067e\u067f\u0006\u00d4\u000e\u0000\u067f\u0680"+
- "\u0006\u00d4\u000b\u0000\u0680\u01bc\u0001\u0000\u0000\u0000\u0681\u0682"+
- "\u0003I\u001b\u0000\u0682\u0683\u0001\u0000\u0000\u0000\u0683\u0684\u0006"+
- "\u00d5\r\u0000\u0684\u01be\u0001\u0000\u0000\u0000\u0685\u0686\u0003K"+
- "\u001c\u0000\u0686\u0687\u0001\u0000\u0000\u0000\u0687\u0688\u0006\u00d6"+
- "\r\u0000\u0688\u01c0\u0001\u0000\u0000\u0000\u0689\u068a\u0003M\u001d"+
- "\u0000\u068a\u068b\u0001\u0000\u0000\u0000\u068b\u068c\u0006\u00d7\r\u0000"+
- "\u068c\u01c2\u0001\u0000\u0000\u0000\u068d\u068e\u0003\u00c3X\u0000\u068e"+
- "\u068f\u0001\u0000\u0000\u0000\u068f\u0690\u0006\u00d8\u000e\u0000\u0690"+
- "\u0691\u0006\u00d8\u0000\u0000\u0691\u0692\u0006\u00d8!\u0000\u0692\u01c4"+
- "\u0001\u0000\u0000\u0000\u0693\u0694\u0003\u00bfV\u0000\u0694\u0695\u0001"+
- "\u0000\u0000\u0000\u0695\u0696\u0006\u00d9\u000e\u0000\u0696\u0697\u0006"+
- "\u00d9\u0000\u0000\u0697\u0698\u0006\u00d9\"\u0000\u0698\u01c6\u0001\u0000"+
- "\u0000\u0000\u0699\u069a\u0003k,\u0000\u069a\u069b\u0001\u0000\u0000\u0000"+
- "\u069b\u069c\u0006\u00da\u000e\u0000\u069c\u069d\u0006\u00da\u0000\u0000"+
- "\u069d\u069e\u0006\u00da\'\u0000\u069e\u01c8\u0001\u0000\u0000\u0000\u069f"+
- "\u06a0\u0003O\u001e\u0000\u06a0\u06a1\u0001\u0000\u0000\u0000\u06a1\u06a2"+
- "\u0006\u00db\u0012\u0000\u06a2\u06a3\u0006\u00db\u000e\u0000\u06a3\u01ca"+
- "\u0001\u0000\u0000\u0000\u06a4\u06a5\u0003O\u001e\u0000\u06a5\u06a6\u0001"+
- "\u0000\u0000\u0000\u06a6\u06a7\u0006\u00dc\u0012\u0000\u06a7\u06a8\u0006"+
- "\u00dc\u000e\u0000\u06a8\u01cc\u0001\u0000\u0000\u0000\u06a9\u06aa\u0003"+
- "\u0121\u0087\u0000\u06aa\u06ab\u0001\u0000\u0000\u0000\u06ab\u06ac\u0006"+
- "\u00dd#\u0000\u06ac\u01ce\u0001\u0000\u0000\u0000\u06ad\u06ae\u0003\u0113"+
- "\u0080\u0000\u06ae\u06af\u0001\u0000\u0000\u0000\u06af\u06b0\u0006\u00de"+
- "%\u0000\u06b0\u01d0\u0001\u0000\u0000\u0000\u06b1\u06b2\u0003{4\u0000"+
- "\u06b2\u06b3\u0001\u0000\u0000\u0000\u06b3\u06b4\u0006\u00df\u0019\u0000"+
- "\u06b4\u01d2\u0001\u0000\u0000\u0000\u06b5\u06b6\u0003w2\u0000\u06b6\u06b7"+
- "\u0001\u0000\u0000\u0000\u06b7\u06b8\u0006\u00e0\u0015\u0000\u06b8\u01d4"+
- "\u0001\u0000\u0000\u0000\u06b9\u06ba\u0003\u00c3X\u0000\u06ba\u06bb\u0001"+
- "\u0000\u0000\u0000\u06bb\u06bc\u0006\u00e1!\u0000\u06bc\u01d6\u0001\u0000"+
- "\u0000\u0000\u06bd\u06be\u0003\u00bfV\u0000\u06be\u06bf\u0001\u0000\u0000"+
- "\u0000\u06bf\u06c0\u0006\u00e2\"\u0000\u06c0\u01d8\u0001\u0000\u0000\u0000"+
- "\u06c1\u06c2\u0003I\u001b\u0000\u06c2\u06c3\u0001\u0000\u0000\u0000\u06c3"+
- "\u06c4\u0006\u00e3\r\u0000\u06c4\u01da\u0001\u0000\u0000\u0000\u06c5\u06c6"+
- "\u0003K\u001c\u0000\u06c6\u06c7\u0001\u0000\u0000\u0000\u06c7\u06c8\u0006"+
- "\u00e4\r\u0000\u06c8\u01dc\u0001\u0000\u0000\u0000\u06c9\u06ca\u0003M"+
- "\u001d\u0000\u06ca\u06cb\u0001\u0000\u0000\u0000\u06cb\u06cc\u0006\u00e5"+
- "\r\u0000\u06cc\u01de\u0001\u0000\u0000\u0000\u06cd\u06ce\u0003O\u001e"+
- "\u0000\u06ce\u06cf\u0001\u0000\u0000\u0000\u06cf\u06d0\u0006\u00e6\u0012"+
- "\u0000\u06d0\u06d1\u0006\u00e6\u000e\u0000\u06d1\u01e0\u0001\u0000\u0000"+
- "\u0000\u06d2\u06d3\u0003\u00bfV\u0000\u06d3\u06d4\u0001\u0000\u0000\u0000"+
- "\u06d4\u06d5\u0006\u00e7\"\u0000\u06d5\u01e2\u0001\u0000\u0000\u0000\u06d6"+
- "\u06d7\u0003M\u001d\u0000\u06d7\u06d8\u0001\u0000\u0000\u0000\u06d8\u06d9"+
- "\u0006\u00e8\r\u0000\u06d9\u01e4\u0001\u0000\u0000\u0000\u06da\u06db\u0003"+
- "I\u001b\u0000\u06db\u06dc\u0001\u0000\u0000\u0000\u06dc\u06dd\u0006\u00e9"+
- "\r\u0000\u06dd\u01e6\u0001\u0000\u0000\u0000\u06de\u06df\u0003K\u001c"+
- "\u0000\u06df\u06e0\u0001\u0000\u0000\u0000\u06e0\u06e1\u0006\u00ea\r\u0000"+
- "\u06e1\u01e8\u0001\u0000\u0000\u0000\u06e2\u06e3\u0003\u00bbT\u0000\u06e3"+
- "\u06e4\u0001\u0000\u0000\u0000\u06e4\u06e5\u0006\u00eb(\u0000\u06e5\u06e6"+
- "\u0006\u00eb\u0011\u0000\u06e6\u01ea\u0001\u0000\u0000\u0000\u06e7\u06e8"+
- "\u0003O\u001e\u0000\u06e8\u06e9\u0001\u0000\u0000\u0000\u06e9\u06ea\u0006"+
- "\u00ec\u0012\u0000\u06ea\u06eb\u0006\u00ec\u000e\u0000\u06eb\u01ec\u0001"+
- "\u0000\u0000\u0000\u06ec\u06ed\u0003M\u001d\u0000\u06ed\u06ee\u0001\u0000"+
- "\u0000\u0000\u06ee\u06ef\u0006\u00ed\r\u0000\u06ef\u01ee\u0001\u0000\u0000"+
- "\u0000\u06f0\u06f1\u0003I\u001b\u0000\u06f1\u06f2\u0001\u0000\u0000\u0000"+
- "\u06f2\u06f3\u0006\u00ee\r\u0000\u06f3\u01f0\u0001\u0000\u0000\u0000\u06f4"+
- "\u06f5\u0003K\u001c\u0000\u06f5\u06f6\u0001\u0000\u0000\u0000\u06f6\u06f7"+
- "\u0006\u00ef\r\u0000\u06f7\u01f2\u0001\u0000\u0000\u0000E\u0000\u0001"+
- "\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010"+
- "\u0011\u0012\u02e3\u02ed\u02f1\u02f4\u02fd\u02ff\u030a\u031d\u0322\u032b"+
- "\u0332\u0337\u0339\u0344\u034c\u034f\u0351\u0356\u035b\u0361\u0368\u036d"+
- "\u0373\u0376\u037e\u0382\u0402\u0407\u040e\u0410\u042a\u042f\u0434\u0436"+
- "\u043c\u0489\u048e\u04bd\u04c1\u04c6\u04cb\u04d0\u04d2\u04d6\u04d8\u052d"+
- "\u0531\u0536\u05c3\u05c5)\u0005\u0001\u0000\u0005\u0004\u0000\u0005\u0006"+
- "\u0000\u0005\u0002\u0000\u0005\u0003\u0000\u0005\b\u0000\u0005\u0005\u0000"+
- "\u0005\t\u0000\u0005\r\u0000\u0005\u0010\u0000\u0005\u000b\u0000\u0005"+
- "\u000e\u0000\u0005\u0012\u0000\u0000\u0001\u0000\u0004\u0000\u0000\u0007"+
- "\u0010\u0000\u0007H\u0000\u0005\u0000\u0000\u0007\u001f\u0000\u0007I\u0000"+
- "\u0007(\u0000\u0007)\u0000\u0007&\u0000\u0007U\u0000\u0007 \u0000\u0007"+
- "+\u0000\u00076\u0000\u0007G\u0000\u0007Y\u0000\u0005\n\u0000\u0005\u0007"+
- "\u0000\u0007c\u0000\u0007b\u0000\u0007M\u0000\u0007L\u0000\u0007a\u0000"+
- "\u0005\f\u0000\u0007]\u0000\u0005\u000f\u0000\u0007#\u0000\u0007J\u0000";
+ "\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00ab"+
+ "\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ac\u0001\u00ac"+
+ "\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad"+
+ "\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00af\u0001\u00af"+
+ "\u0001\u00af\u0001\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
+ "\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1"+
+ "\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3"+
+ "\u0001\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4"+
+ "\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b6\u0001\u00b6"+
+ "\u0001\u00b6\u0001\u00b6\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+
+ "\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b9"+
+ "\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00ba"+
+ "\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00bb"+
+ "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc\u0001\u00bc"+
+ "\u0001\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00be"+
+ "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00bf"+
+ "\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00c0"+
+ "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1\u0001\u00c1"+
+ "\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c3"+
+ "\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4"+
+ "\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5"+
+ "\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c6"+
+ "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001\u00c7"+
+ "\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c8\u0001\u00c8\u0001\u00c8"+
+ "\u0001\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca"+
+ "\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb"+
+ "\u0001\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd"+
+ "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce"+
+ "\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0"+
+ "\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d1\u0001\u00d1"+
+ "\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+
+ "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d4\u0001\u00d4"+
+ "\u0001\u00d4\u0001\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+
+ "\u0003\u00d5\u066e\b\u00d5\u0001\u00d6\u0001\u00d6\u0003\u00d6\u0672\b"+
+ "\u00d6\u0001\u00d6\u0005\u00d6\u0675\b\u00d6\n\u00d6\f\u00d6\u0678\t\u00d6"+
+ "\u0001\u00d6\u0001\u00d6\u0003\u00d6\u067c\b\u00d6\u0001\u00d6\u0004\u00d6"+
+ "\u067f\b\u00d6\u000b\u00d6\f\u00d6\u0680\u0003\u00d6\u0683\b\u00d6\u0001"+
+ "\u00d7\u0001\u00d7\u0004\u00d7\u0687\b\u00d7\u000b\u00d7\f\u00d7\u0688"+
+ "\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001\u00d9"+
+ "\u0001\u00d9\u0001\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da"+
+ "\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00dc"+
+ "\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd"+
+ "\u0001\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df"+
+ "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0"+
+ "\u0001\u00e0\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e2\u0001\u00e2"+
+ "\u0001\u00e2\u0001\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3"+
+ "\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5\u0001\u00e5"+
+ "\u0001\u00e5\u0001\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6"+
+ "\u0001\u00e6\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7"+
+ "\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e9\u0001\u00e9"+
+ "\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea"+
+ "\u0002\u0200\u03fe\u0000\u00eb\u0012\u0001\u0014\u0002\u0016\u0003\u0018"+
+ "\u0004\u001a\u0005\u001c\u0006\u001e\u0007 \b\"\t$\n&\u000b(\f*\r,\u000e"+
+ ".\u000f0\u00102\u00114\u00126\u00138\u0014:\u0015<\u0016>\u0017@\u0018"+
+ "B\u0019D\u001aF\u001bH\u001cJ\u001dL\u001eN\u0000P\u0000R\u0000T\u0000"+
+ "V\u0000X\u0000Z\u0000\\\u001f^ `!b\u0000d\u0000f\"h#j\u0000l$n\u0000p"+
+ "%r&t\'v\u0000x\u0000z\u0000|\u0000~\u0000\u0080\u0000\u0082\u0000\u0084"+
+ "\u0000\u0086\u0000\u0088(\u008a)\u008c*\u008e\u0000\u0090\u0000\u0092"+
+ "+\u0094,\u0096-\u0098.\u009a\u0000\u009c\u0000\u009e/\u00a00\u00a21\u00a4"+
+ "2\u00a6\u0000\u00a8\u0000\u00aa\u0000\u00ac\u0000\u00ae\u0000\u00b0\u0000"+
+ "\u00b2\u0000\u00b4\u0000\u00b6\u0000\u00b8\u0000\u00ba3\u00bc4\u00be5"+
+ "\u00c06\u00c27\u00c48\u00c69\u00c8:\u00ca;\u00cc<\u00ce=\u00d0>\u00d2"+
+ "?\u00d4@\u00d6A\u00d8B\u00daC\u00dcD\u00deE\u00e0F\u00e2G\u00e4H\u00e6"+
+ "I\u00e8J\u00eaK\u00ecL\u00eeM\u00f0N\u00f2O\u00f4P\u00f6Q\u00f8R\u00fa"+
+ "S\u00fcT\u00feU\u0100V\u0102W\u0104X\u0106Y\u0108\u0000\u010aZ\u010c["+
+ "\u010e\\\u0110]\u0112^\u0114_\u0116\u0000\u0118`\u011aa\u011cb\u011ec"+
+ "\u0120\u0000\u0122\u0000\u0124\u0000\u0126\u0000\u0128\u0000\u012a\u0000"+
+ "\u012cd\u012e\u0000\u0130e\u0132\u0000\u0134\u0000\u0136f\u0138g\u013a"+
+ "h\u013c\u0000\u013e\u0000\u0140i\u0142j\u0144k\u0146\u0000\u0148l\u014a"+
+ "\u0000\u014c\u0000\u014em\u0150\u0000\u0152\u0000\u0154\u0000\u0156\u0000"+
+ "\u0158\u0000\u015an\u015co\u015ep\u0160\u0000\u0162\u0000\u0164\u0000"+
+ "\u0166\u0000\u0168\u0000\u016a\u0000\u016c\u0000\u016eq\u0170r\u0172s"+
+ "\u0174\u0000\u0176\u0000\u0178\u0000\u017a\u0000\u017ct\u017eu\u0180v"+
+ "\u0182\u0000\u0184\u0000\u0186\u0000\u0188w\u018ax\u018cy\u018e\u0000"+
+ "\u0190\u0000\u0192z\u0194{\u0196|\u0198\u0000\u019a\u0000\u019c\u0000"+
+ "\u019e\u0000\u01a0\u0000\u01a2\u0000\u01a4\u0000\u01a6\u0000\u01a8\u0000"+
+ "\u01aa\u0000\u01ac}\u01ae~\u01b0\u007f\u01b2\u0000\u01b4\u0000\u01b6\u0000"+
+ "\u01b8\u0000\u01ba\u0000\u01bc\u0000\u01be\u0000\u01c0\u0080\u01c2\u0081"+
+ "\u01c4\u0082\u01c6\u0083\u01c8\u0000\u01ca\u0000\u01cc\u0000\u01ce\u0000"+
+ "\u01d0\u0000\u01d2\u0000\u01d4\u0084\u01d6\u0000\u01d8\u0085\u01da\u0086"+
+ "\u01dc\u0087\u01de\u0000\u01e0\u0088\u01e2\u0089\u01e4\u008a\u01e6\u008b"+
+ "\u0012\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r"+
+ "\u000e\u000f\u0010\u0011$\u0002\u0000\n\n\r\r\u0003\u0000\t\n\r\r \u0002"+
+ "\u0000CCcc\u0002\u0000HHhh\u0002\u0000AAaa\u0002\u0000NNnn\u0002\u0000"+
+ "GGgg\u0002\u0000EEee\u0002\u0000PPpp\u0002\u0000OOoo\u0002\u0000IIii\u0002"+
+ "\u0000TTtt\u0002\u0000RRrr\u0002\u0000XXxx\u0002\u0000LLll\u0002\u0000"+
+ "DDdd\u0002\u0000SSss\u0002\u0000VVvv\u0002\u0000KKkk\u0002\u0000MMmm\u0002"+
+ "\u0000WWww\u0002\u0000FFff\u0002\u0000UUuu\u0006\u0000\t\n\r\r //[[]"+
+ "]\u000b\u0000\t\n\r\r \"#,,//::<<>?\\\\||\u0001\u000009\u0002\u0000A"+
+ "Zaz\b\u0000\"\"NNRRTT\\\\nnrrtt\u0004\u0000\n\n\r\r\"\"\\\\\u0002\u0000"+
+ "++--\u0001\u0000``\u0002\u0000BBbb\u0002\u0000YYyy\u000b\u0000\t\n\r\r"+
+ " \"\",,//::==[[]]||\u0002\u0000**//\u0002\u0000JJjj\u06f1\u0000\u0012"+
+ "\u0001\u0000\u0000\u0000\u0000\u0014\u0001\u0000\u0000\u0000\u0000\u0016"+
+ "\u0001\u0000\u0000\u0000\u0000\u0018\u0001\u0000\u0000\u0000\u0000\u001a"+
+ "\u0001\u0000\u0000\u0000\u0000\u001c\u0001\u0000\u0000\u0000\u0000\u001e"+
+ "\u0001\u0000\u0000\u0000\u0000 \u0001\u0000\u0000\u0000\u0000\"\u0001"+
+ "\u0000\u0000\u0000\u0000$\u0001\u0000\u0000\u0000\u0000&\u0001\u0000\u0000"+
+ "\u0000\u0000(\u0001\u0000\u0000\u0000\u0000*\u0001\u0000\u0000\u0000\u0000"+
+ ",\u0001\u0000\u0000\u0000\u0000.\u0001\u0000\u0000\u0000\u00000\u0001"+
+ "\u0000\u0000\u0000\u00002\u0001\u0000\u0000\u0000\u00004\u0001\u0000\u0000"+
+ "\u0000\u00006\u0001\u0000\u0000\u0000\u00008\u0001\u0000\u0000\u0000\u0000"+
+ ":\u0001\u0000\u0000\u0000\u0000<\u0001\u0000\u0000\u0000\u0000>\u0001"+
+ "\u0000\u0000\u0000\u0000@\u0001\u0000\u0000\u0000\u0000B\u0001\u0000\u0000"+
+ "\u0000\u0000D\u0001\u0000\u0000\u0000\u0000F\u0001\u0000\u0000\u0000\u0000"+
+ "H\u0001\u0000\u0000\u0000\u0000J\u0001\u0000\u0000\u0000\u0000L\u0001"+
+ "\u0000\u0000\u0000\u0001N\u0001\u0000\u0000\u0000\u0001P\u0001\u0000\u0000"+
+ "\u0000\u0001R\u0001\u0000\u0000\u0000\u0001T\u0001\u0000\u0000\u0000\u0001"+
+ "V\u0001\u0000\u0000\u0000\u0001X\u0001\u0000\u0000\u0000\u0001Z\u0001"+
+ "\u0000\u0000\u0000\u0001\\\u0001\u0000\u0000\u0000\u0001^\u0001\u0000"+
+ "\u0000\u0000\u0001`\u0001\u0000\u0000\u0000\u0002b\u0001\u0000\u0000\u0000"+
+ "\u0002d\u0001\u0000\u0000\u0000\u0002f\u0001\u0000\u0000\u0000\u0002h"+
+ "\u0001\u0000\u0000\u0000\u0002l\u0001\u0000\u0000\u0000\u0002n\u0001\u0000"+
+ "\u0000\u0000\u0002p\u0001\u0000\u0000\u0000\u0002r\u0001\u0000\u0000\u0000"+
+ "\u0002t\u0001\u0000\u0000\u0000\u0003v\u0001\u0000\u0000\u0000\u0003x"+
+ "\u0001\u0000\u0000\u0000\u0003z\u0001\u0000\u0000\u0000\u0003|\u0001\u0000"+
+ "\u0000\u0000\u0003~\u0001\u0000\u0000\u0000\u0003\u0080\u0001\u0000\u0000"+
+ "\u0000\u0003\u0082\u0001\u0000\u0000\u0000\u0003\u0084\u0001\u0000\u0000"+
+ "\u0000\u0003\u0086\u0001\u0000\u0000\u0000\u0003\u0088\u0001\u0000\u0000"+
+ "\u0000\u0003\u008a\u0001\u0000\u0000\u0000\u0003\u008c\u0001\u0000\u0000"+
+ "\u0000\u0004\u008e\u0001\u0000\u0000\u0000\u0004\u0090\u0001\u0000\u0000"+
+ "\u0000\u0004\u0092\u0001\u0000\u0000\u0000\u0004\u0094\u0001\u0000\u0000"+
+ "\u0000\u0004\u0096\u0001\u0000\u0000\u0000\u0004\u0098\u0001\u0000\u0000"+
+ "\u0000\u0005\u009a\u0001\u0000\u0000\u0000\u0005\u009c\u0001\u0000\u0000"+
+ "\u0000\u0005\u009e\u0001\u0000\u0000\u0000\u0005\u00a0\u0001\u0000\u0000"+
+ "\u0000\u0005\u00a2\u0001\u0000\u0000\u0000\u0006\u00a4\u0001\u0000\u0000"+
+ "\u0000\u0006\u00ba\u0001\u0000\u0000\u0000\u0006\u00bc\u0001\u0000\u0000"+
+ "\u0000\u0006\u00be\u0001\u0000\u0000\u0000\u0006\u00c0\u0001\u0000\u0000"+
+ "\u0000\u0006\u00c2\u0001\u0000\u0000\u0000\u0006\u00c4\u0001\u0000\u0000"+
+ "\u0000\u0006\u00c6\u0001\u0000\u0000\u0000\u0006\u00c8\u0001\u0000\u0000"+
+ "\u0000\u0006\u00ca\u0001\u0000\u0000\u0000\u0006\u00cc\u0001\u0000\u0000"+
+ "\u0000\u0006\u00ce\u0001\u0000\u0000\u0000\u0006\u00d0\u0001\u0000\u0000"+
+ "\u0000\u0006\u00d2\u0001\u0000\u0000\u0000\u0006\u00d4\u0001\u0000\u0000"+
+ "\u0000\u0006\u00d6\u0001\u0000\u0000\u0000\u0006\u00d8\u0001\u0000\u0000"+
+ "\u0000\u0006\u00da\u0001\u0000\u0000\u0000\u0006\u00dc\u0001\u0000\u0000"+
+ "\u0000\u0006\u00de\u0001\u0000\u0000\u0000\u0006\u00e0\u0001\u0000\u0000"+
+ "\u0000\u0006\u00e2\u0001\u0000\u0000\u0000\u0006\u00e4\u0001\u0000\u0000"+
+ "\u0000\u0006\u00e6\u0001\u0000\u0000\u0000\u0006\u00e8\u0001\u0000\u0000"+
+ "\u0000\u0006\u00ea\u0001\u0000\u0000\u0000\u0006\u00ec\u0001\u0000\u0000"+
+ "\u0000\u0006\u00ee\u0001\u0000\u0000\u0000\u0006\u00f0\u0001\u0000\u0000"+
+ "\u0000\u0006\u00f2\u0001\u0000\u0000\u0000\u0006\u00f4\u0001\u0000\u0000"+
+ "\u0000\u0006\u00f6\u0001\u0000\u0000\u0000\u0006\u00f8\u0001\u0000\u0000"+
+ "\u0000\u0006\u00fa\u0001\u0000\u0000\u0000\u0006\u00fc\u0001\u0000\u0000"+
+ "\u0000\u0006\u00fe\u0001\u0000\u0000\u0000\u0006\u0100\u0001\u0000\u0000"+
+ "\u0000\u0006\u0102\u0001\u0000\u0000\u0000\u0006\u0104\u0001\u0000\u0000"+
+ "\u0000\u0006\u0106\u0001\u0000\u0000\u0000\u0006\u0108\u0001\u0000\u0000"+
+ "\u0000\u0006\u010a\u0001\u0000\u0000\u0000\u0006\u010c\u0001\u0000\u0000"+
+ "\u0000\u0006\u010e\u0001\u0000\u0000\u0000\u0006\u0110\u0001\u0000\u0000"+
+ "\u0000\u0006\u0112\u0001\u0000\u0000\u0000\u0006\u0114\u0001\u0000\u0000"+
+ "\u0000\u0006\u0118\u0001\u0000\u0000\u0000\u0006\u011a\u0001\u0000\u0000"+
+ "\u0000\u0006\u011c\u0001\u0000\u0000\u0000\u0006\u011e\u0001\u0000\u0000"+
+ "\u0000\u0007\u0120\u0001\u0000\u0000\u0000\u0007\u0122\u0001\u0000\u0000"+
+ "\u0000\u0007\u0124\u0001\u0000\u0000\u0000\u0007\u0126\u0001\u0000\u0000"+
+ "\u0000\u0007\u0128\u0001\u0000\u0000\u0000\u0007\u012a\u0001\u0000\u0000"+
+ "\u0000\u0007\u012c\u0001\u0000\u0000\u0000\u0007\u0130\u0001\u0000\u0000"+
+ "\u0000\u0007\u0132\u0001\u0000\u0000\u0000\u0007\u0134\u0001\u0000\u0000"+
+ "\u0000\u0007\u0136\u0001\u0000\u0000\u0000\u0007\u0138\u0001\u0000\u0000"+
+ "\u0000\u0007\u013a\u0001\u0000\u0000\u0000\b\u013c\u0001\u0000\u0000\u0000"+
+ "\b\u013e\u0001\u0000\u0000\u0000\b\u0140\u0001\u0000\u0000\u0000\b\u0142"+
+ "\u0001\u0000\u0000\u0000\b\u0144\u0001\u0000\u0000\u0000\t\u0146\u0001"+
+ "\u0000\u0000\u0000\t\u0148\u0001\u0000\u0000\u0000\t\u014a\u0001\u0000"+
+ "\u0000\u0000\t\u014c\u0001\u0000\u0000\u0000\t\u014e\u0001\u0000\u0000"+
+ "\u0000\t\u0150\u0001\u0000\u0000\u0000\t\u0152\u0001\u0000\u0000\u0000"+
+ "\t\u0154\u0001\u0000\u0000\u0000\t\u0156\u0001\u0000\u0000\u0000\t\u0158"+
+ "\u0001\u0000\u0000\u0000\t\u015a\u0001\u0000\u0000\u0000\t\u015c\u0001"+
+ "\u0000\u0000\u0000\t\u015e\u0001\u0000\u0000\u0000\n\u0160\u0001\u0000"+
+ "\u0000\u0000\n\u0162\u0001\u0000\u0000\u0000\n\u0164\u0001\u0000\u0000"+
+ "\u0000\n\u0166\u0001\u0000\u0000\u0000\n\u0168\u0001\u0000\u0000\u0000"+
+ "\n\u016a\u0001\u0000\u0000\u0000\n\u016c\u0001\u0000\u0000\u0000\n\u016e"+
+ "\u0001\u0000\u0000\u0000\n\u0170\u0001\u0000\u0000\u0000\n\u0172\u0001"+
+ "\u0000\u0000\u0000\u000b\u0174\u0001\u0000\u0000\u0000\u000b\u0176\u0001"+
+ "\u0000\u0000\u0000\u000b\u0178\u0001\u0000\u0000\u0000\u000b\u017a\u0001"+
+ "\u0000\u0000\u0000\u000b\u017c\u0001\u0000\u0000\u0000\u000b\u017e\u0001"+
+ "\u0000\u0000\u0000\u000b\u0180\u0001\u0000\u0000\u0000\f\u0182\u0001\u0000"+
+ "\u0000\u0000\f\u0184\u0001\u0000\u0000\u0000\f\u0186\u0001\u0000\u0000"+
+ "\u0000\f\u0188\u0001\u0000\u0000\u0000\f\u018a\u0001\u0000\u0000\u0000"+
+ "\f\u018c\u0001\u0000\u0000\u0000\r\u018e\u0001\u0000\u0000\u0000\r\u0190"+
+ "\u0001\u0000\u0000\u0000\r\u0192\u0001\u0000\u0000\u0000\r\u0194\u0001"+
+ "\u0000\u0000\u0000\r\u0196\u0001\u0000\u0000\u0000\r\u0198\u0001\u0000"+
+ "\u0000\u0000\r\u019a\u0001\u0000\u0000\u0000\r\u019c\u0001\u0000\u0000"+
+ "\u0000\r\u019e\u0001\u0000\u0000\u0000\u000e\u01a0\u0001\u0000\u0000\u0000"+
+ "\u000e\u01a2\u0001\u0000\u0000\u0000\u000e\u01a4\u0001\u0000\u0000\u0000"+
+ "\u000e\u01a6\u0001\u0000\u0000\u0000\u000e\u01a8\u0001\u0000\u0000\u0000"+
+ "\u000e\u01aa\u0001\u0000\u0000\u0000\u000e\u01ac\u0001\u0000\u0000\u0000"+
+ "\u000e\u01ae\u0001\u0000\u0000\u0000\u000e\u01b0\u0001\u0000\u0000\u0000"+
+ "\u000f\u01b2\u0001\u0000\u0000\u0000\u000f\u01b4\u0001\u0000\u0000\u0000"+
+ "\u000f\u01b6\u0001\u0000\u0000\u0000\u000f\u01b8\u0001\u0000\u0000\u0000"+
+ "\u000f\u01ba\u0001\u0000\u0000\u0000\u000f\u01c0\u0001\u0000\u0000\u0000"+
+ "\u000f\u01c2\u0001\u0000\u0000\u0000\u000f\u01c4\u0001\u0000\u0000\u0000"+
+ "\u000f\u01c6\u0001\u0000\u0000\u0000\u0010\u01c8\u0001\u0000\u0000\u0000"+
+ "\u0010\u01ca\u0001\u0000\u0000\u0000\u0010\u01cc\u0001\u0000\u0000\u0000"+
+ "\u0010\u01ce\u0001\u0000\u0000\u0000\u0010\u01d0\u0001\u0000\u0000\u0000"+
+ "\u0010\u01d2\u0001\u0000\u0000\u0000\u0010\u01d4\u0001\u0000\u0000\u0000"+
+ "\u0010\u01d6\u0001\u0000\u0000\u0000\u0010\u01d8\u0001\u0000\u0000\u0000"+
+ "\u0010\u01da\u0001\u0000\u0000\u0000\u0010\u01dc\u0001\u0000\u0000\u0000"+
+ "\u0011\u01de\u0001\u0000\u0000\u0000\u0011\u01e0\u0001\u0000\u0000\u0000"+
+ "\u0011\u01e2\u0001\u0000\u0000\u0000\u0011\u01e4\u0001\u0000\u0000\u0000"+
+ "\u0011\u01e6\u0001\u0000\u0000\u0000\u0012\u01e8\u0001\u0000\u0000\u0000"+
+ "\u0014\u01f9\u0001\u0000\u0000\u0000\u0016\u0209\u0001\u0000\u0000\u0000"+
+ "\u0018\u020f\u0001\u0000\u0000\u0000\u001a\u021f\u0001\u0000\u0000\u0000"+
+ "\u001c\u0228\u0001\u0000\u0000\u0000\u001e\u0232\u0001\u0000\u0000\u0000"+
+ " \u023c\u0001\u0000\u0000\u0000\"\u0243\u0001\u0000\u0000\u0000$\u024a"+
+ "\u0001\u0000\u0000\u0000&\u0252\u0001\u0000\u0000\u0000(\u0258\u0001\u0000"+
+ "\u0000\u0000*\u025f\u0001\u0000\u0000\u0000,\u0267\u0001\u0000\u0000\u0000"+
+ ".\u026f\u0001\u0000\u0000\u00000\u027e\u0001\u0000\u0000\u00002\u0285"+
+ "\u0001\u0000\u0000\u00004\u028d\u0001\u0000\u0000\u00006\u0296\u0001\u0000"+
+ "\u0000\u00008\u029e\u0001\u0000\u0000\u0000:\u02a6\u0001\u0000\u0000\u0000"+
+ "<\u02af\u0001\u0000\u0000\u0000>\u02bb\u0001\u0000\u0000\u0000@\u02c6"+
+ "\u0001\u0000\u0000\u0000B\u02d2\u0001\u0000\u0000\u0000D\u02d9\u0001\u0000"+
+ "\u0000\u0000F\u02e0\u0001\u0000\u0000\u0000H\u02ec\u0001\u0000\u0000\u0000"+
+ "J\u02f5\u0001\u0000\u0000\u0000L\u02fd\u0001\u0000\u0000\u0000N\u0303"+
+ "\u0001\u0000\u0000\u0000P\u0308\u0001\u0000\u0000\u0000R\u030c\u0001\u0000"+
+ "\u0000\u0000T\u0310\u0001\u0000\u0000\u0000V\u0314\u0001\u0000\u0000\u0000"+
+ "X\u0318\u0001\u0000\u0000\u0000Z\u031c\u0001\u0000\u0000\u0000\\\u0320"+
+ "\u0001\u0000\u0000\u0000^\u0324\u0001\u0000\u0000\u0000`\u0328\u0001\u0000"+
+ "\u0000\u0000b\u032c\u0001\u0000\u0000\u0000d\u0331\u0001\u0000\u0000\u0000"+
+ "f\u0336\u0001\u0000\u0000\u0000h\u033b\u0001\u0000\u0000\u0000j\u0342"+
+ "\u0001\u0000\u0000\u0000l\u034b\u0001\u0000\u0000\u0000n\u0352\u0001\u0000"+
+ "\u0000\u0000p\u0356\u0001\u0000\u0000\u0000r\u035a\u0001\u0000\u0000\u0000"+
+ "t\u035e\u0001\u0000\u0000\u0000v\u0362\u0001\u0000\u0000\u0000x\u0368"+
+ "\u0001\u0000\u0000\u0000z\u036c\u0001\u0000\u0000\u0000|\u0370\u0001\u0000"+
+ "\u0000\u0000~\u0374\u0001\u0000\u0000\u0000\u0080\u0378\u0001\u0000\u0000"+
+ "\u0000\u0082\u037c\u0001\u0000\u0000\u0000\u0084\u0380\u0001\u0000\u0000"+
+ "\u0000\u0086\u0384\u0001\u0000\u0000\u0000\u0088\u0388\u0001\u0000\u0000"+
+ "\u0000\u008a\u038c\u0001\u0000\u0000\u0000\u008c\u0390\u0001\u0000\u0000"+
+ "\u0000\u008e\u0394\u0001\u0000\u0000\u0000\u0090\u0399\u0001\u0000\u0000"+
+ "\u0000\u0092\u03a2\u0001\u0000\u0000\u0000\u0094\u03a6\u0001\u0000\u0000"+
+ "\u0000\u0096\u03aa\u0001\u0000\u0000\u0000\u0098\u03ae\u0001\u0000\u0000"+
+ "\u0000\u009a\u03b2\u0001\u0000\u0000\u0000\u009c\u03b7\u0001\u0000\u0000"+
+ "\u0000\u009e\u03bc\u0001\u0000\u0000\u0000\u00a0\u03c0\u0001\u0000\u0000"+
+ "\u0000\u00a2\u03c4\u0001\u0000\u0000\u0000\u00a4\u03c8\u0001\u0000\u0000"+
+ "\u0000\u00a6\u03cc\u0001\u0000\u0000\u0000\u00a8\u03ce\u0001\u0000\u0000"+
+ "\u0000\u00aa\u03d0\u0001\u0000\u0000\u0000\u00ac\u03d3\u0001\u0000\u0000"+
+ "\u0000\u00ae\u03d5\u0001\u0000\u0000\u0000\u00b0\u03de\u0001\u0000\u0000"+
+ "\u0000\u00b2\u03e0\u0001\u0000\u0000\u0000\u00b4\u03e5\u0001\u0000\u0000"+
+ "\u0000\u00b6\u03e7\u0001\u0000\u0000\u0000\u00b8\u03ec\u0001\u0000\u0000"+
+ "\u0000\u00ba\u040b\u0001\u0000\u0000\u0000\u00bc\u040e\u0001\u0000\u0000"+
+ "\u0000\u00be\u043c\u0001\u0000\u0000\u0000\u00c0\u043e\u0001\u0000\u0000"+
+ "\u0000\u00c2\u0441\u0001\u0000\u0000\u0000\u00c4\u0445\u0001\u0000\u0000"+
+ "\u0000\u00c6\u0449\u0001\u0000\u0000\u0000\u00c8\u044b\u0001\u0000\u0000"+
+ "\u0000\u00ca\u044e\u0001\u0000\u0000\u0000\u00cc\u0450\u0001\u0000\u0000"+
+ "\u0000\u00ce\u0452\u0001\u0000\u0000\u0000\u00d0\u0457\u0001\u0000\u0000"+
+ "\u0000\u00d2\u0459\u0001\u0000\u0000\u0000\u00d4\u045f\u0001\u0000\u0000"+
+ "\u0000\u00d6\u0465\u0001\u0000\u0000\u0000\u00d8\u0468\u0001\u0000\u0000"+
+ "\u0000\u00da\u046b\u0001\u0000\u0000\u0000\u00dc\u0470\u0001\u0000\u0000"+
+ "\u0000\u00de\u0475\u0001\u0000\u0000\u0000\u00e0\u0479\u0001\u0000\u0000"+
+ "\u0000\u00e2\u047e\u0001\u0000\u0000\u0000\u00e4\u0484\u0001\u0000\u0000"+
+ "\u0000\u00e6\u0487\u0001\u0000\u0000\u0000\u00e8\u0489\u0001\u0000\u0000"+
+ "\u0000\u00ea\u048f\u0001\u0000\u0000\u0000\u00ec\u0494\u0001\u0000\u0000"+
+ "\u0000\u00ee\u0497\u0001\u0000\u0000\u0000\u00f0\u049a\u0001\u0000\u0000"+
+ "\u0000\u00f2\u049d\u0001\u0000\u0000\u0000\u00f4\u049f\u0001\u0000\u0000"+
+ "\u0000\u00f6\u04a2\u0001\u0000\u0000\u0000\u00f8\u04a4\u0001\u0000\u0000"+
+ "\u0000\u00fa\u04a7\u0001\u0000\u0000\u0000\u00fc\u04a9\u0001\u0000\u0000"+
+ "\u0000\u00fe\u04ab\u0001\u0000\u0000\u0000\u0100\u04ad\u0001\u0000\u0000"+
+ "\u0000\u0102\u04af\u0001\u0000\u0000\u0000\u0104\u04b1\u0001\u0000\u0000"+
+ "\u0000\u0106\u04b3\u0001\u0000\u0000\u0000\u0108\u04b5\u0001\u0000\u0000"+
+ "\u0000\u010a\u04ca\u0001\u0000\u0000\u0000\u010c\u04cc\u0001\u0000\u0000"+
+ "\u0000\u010e\u04d1\u0001\u0000\u0000\u0000\u0110\u04d6\u0001\u0000\u0000"+
+ "\u0000\u0112\u04db\u0001\u0000\u0000\u0000\u0114\u04f0\u0001\u0000\u0000"+
+ "\u0000\u0116\u04f2\u0001\u0000\u0000\u0000\u0118\u04fa\u0001\u0000\u0000"+
+ "\u0000\u011a\u04fc\u0001\u0000\u0000\u0000\u011c\u0500\u0001\u0000\u0000"+
+ "\u0000\u011e\u0504\u0001\u0000\u0000\u0000\u0120\u0508\u0001\u0000\u0000"+
+ "\u0000\u0122\u050d\u0001\u0000\u0000\u0000\u0124\u0511\u0001\u0000\u0000"+
+ "\u0000\u0126\u0515\u0001\u0000\u0000\u0000\u0128\u0519\u0001\u0000\u0000"+
+ "\u0000\u012a\u051d\u0001\u0000\u0000\u0000\u012c\u0521\u0001\u0000\u0000"+
+ "\u0000\u012e\u052d\u0001\u0000\u0000\u0000\u0130\u0530\u0001\u0000\u0000"+
+ "\u0000\u0132\u0534\u0001\u0000\u0000\u0000\u0134\u0538\u0001\u0000\u0000"+
+ "\u0000\u0136\u053c\u0001\u0000\u0000\u0000\u0138\u0540\u0001\u0000\u0000"+
+ "\u0000\u013a\u0544\u0001\u0000\u0000\u0000\u013c\u0548\u0001\u0000\u0000"+
+ "\u0000\u013e\u054d\u0001\u0000\u0000\u0000\u0140\u0552\u0001\u0000\u0000"+
+ "\u0000\u0142\u0556\u0001\u0000\u0000\u0000\u0144\u055a\u0001\u0000\u0000"+
+ "\u0000\u0146\u055e\u0001\u0000\u0000\u0000\u0148\u0563\u0001\u0000\u0000"+
+ "\u0000\u014a\u0568\u0001\u0000\u0000\u0000\u014c\u056c\u0001\u0000\u0000"+
+ "\u0000\u014e\u0572\u0001\u0000\u0000\u0000\u0150\u057b\u0001\u0000\u0000"+
+ "\u0000\u0152\u057f\u0001\u0000\u0000\u0000\u0154\u0583\u0001\u0000\u0000"+
+ "\u0000\u0156\u0587\u0001\u0000\u0000\u0000\u0158\u058b\u0001\u0000\u0000"+
+ "\u0000\u015a\u058f\u0001\u0000\u0000\u0000\u015c\u0593\u0001\u0000\u0000"+
+ "\u0000\u015e\u0597\u0001\u0000\u0000\u0000\u0160\u059b\u0001\u0000\u0000"+
+ "\u0000\u0162\u05a0\u0001\u0000\u0000\u0000\u0164\u05a4\u0001\u0000\u0000"+
+ "\u0000\u0166\u05a8\u0001\u0000\u0000\u0000\u0168\u05ac\u0001\u0000\u0000"+
+ "\u0000\u016a\u05b1\u0001\u0000\u0000\u0000\u016c\u05b5\u0001\u0000\u0000"+
+ "\u0000\u016e\u05b9\u0001\u0000\u0000\u0000\u0170\u05bd\u0001\u0000\u0000"+
+ "\u0000\u0172\u05c1\u0001\u0000\u0000\u0000\u0174\u05c5\u0001\u0000\u0000"+
+ "\u0000\u0176\u05cb\u0001\u0000\u0000\u0000\u0178\u05cf\u0001\u0000\u0000"+
+ "\u0000\u017a\u05d3\u0001\u0000\u0000\u0000\u017c\u05d7\u0001\u0000\u0000"+
+ "\u0000\u017e\u05db\u0001\u0000\u0000\u0000\u0180\u05df\u0001\u0000\u0000"+
+ "\u0000\u0182\u05e3\u0001\u0000\u0000\u0000\u0184\u05e8\u0001\u0000\u0000"+
+ "\u0000\u0186\u05ee\u0001\u0000\u0000\u0000\u0188\u05f4\u0001\u0000\u0000"+
+ "\u0000\u018a\u05f8\u0001\u0000\u0000\u0000\u018c\u05fc\u0001\u0000\u0000"+
+ "\u0000\u018e\u0600\u0001\u0000\u0000\u0000\u0190\u0606\u0001\u0000\u0000"+
+ "\u0000\u0192\u060c\u0001\u0000\u0000\u0000\u0194\u0610\u0001\u0000\u0000"+
+ "\u0000\u0196\u0614\u0001\u0000\u0000\u0000\u0198\u0618\u0001\u0000\u0000"+
+ "\u0000\u019a\u061e\u0001\u0000\u0000\u0000\u019c\u0624\u0001\u0000\u0000"+
+ "\u0000\u019e\u062a\u0001\u0000\u0000\u0000\u01a0\u062f\u0001\u0000\u0000"+
+ "\u0000\u01a2\u0634\u0001\u0000\u0000\u0000\u01a4\u0638\u0001\u0000\u0000"+
+ "\u0000\u01a6\u063c\u0001\u0000\u0000\u0000\u01a8\u0640\u0001\u0000\u0000"+
+ "\u0000\u01aa\u0644\u0001\u0000\u0000\u0000\u01ac\u0648\u0001\u0000\u0000"+
+ "\u0000\u01ae\u064c\u0001\u0000\u0000\u0000\u01b0\u0650\u0001\u0000\u0000"+
+ "\u0000\u01b2\u0654\u0001\u0000\u0000\u0000\u01b4\u0659\u0001\u0000\u0000"+
+ "\u0000\u01b6\u065d\u0001\u0000\u0000\u0000\u01b8\u0661\u0001\u0000\u0000"+
+ "\u0000\u01ba\u0665\u0001\u0000\u0000\u0000\u01bc\u066d\u0001\u0000\u0000"+
+ "\u0000\u01be\u0682\u0001\u0000\u0000\u0000\u01c0\u0686\u0001\u0000\u0000"+
+ "\u0000\u01c2\u068a\u0001\u0000\u0000\u0000\u01c4\u068e\u0001\u0000\u0000"+
+ "\u0000\u01c6\u0692\u0001\u0000\u0000\u0000\u01c8\u0696\u0001\u0000\u0000"+
+ "\u0000\u01ca\u069b\u0001\u0000\u0000\u0000\u01cc\u069f\u0001\u0000\u0000"+
+ "\u0000\u01ce\u06a3\u0001\u0000\u0000\u0000\u01d0\u06a7\u0001\u0000\u0000"+
+ "\u0000\u01d2\u06ab\u0001\u0000\u0000\u0000\u01d4\u06af\u0001\u0000\u0000"+
+ "\u0000\u01d6\u06b2\u0001\u0000\u0000\u0000\u01d8\u06b6\u0001\u0000\u0000"+
+ "\u0000\u01da\u06ba\u0001\u0000\u0000\u0000\u01dc\u06be\u0001\u0000\u0000"+
+ "\u0000\u01de\u06c2\u0001\u0000\u0000\u0000\u01e0\u06c7\u0001\u0000\u0000"+
+ "\u0000\u01e2\u06cc\u0001\u0000\u0000\u0000\u01e4\u06d0\u0001\u0000\u0000"+
+ "\u0000\u01e6\u06d4\u0001\u0000\u0000\u0000\u01e8\u01e9\u0005/\u0000\u0000"+
+ "\u01e9\u01ea\u0005/\u0000\u0000\u01ea\u01ee\u0001\u0000\u0000\u0000\u01eb"+
+ "\u01ed\b\u0000\u0000\u0000\u01ec\u01eb\u0001\u0000\u0000\u0000\u01ed\u01f0"+
+ "\u0001\u0000\u0000\u0000\u01ee\u01ec\u0001\u0000\u0000\u0000\u01ee\u01ef"+
+ "\u0001\u0000\u0000\u0000\u01ef\u01f2\u0001\u0000\u0000\u0000\u01f0\u01ee"+
+ "\u0001\u0000\u0000\u0000\u01f1\u01f3\u0005\r\u0000\u0000\u01f2\u01f1\u0001"+
+ "\u0000\u0000\u0000\u01f2\u01f3\u0001\u0000\u0000\u0000\u01f3\u01f5\u0001"+
+ "\u0000\u0000\u0000\u01f4\u01f6\u0005\n\u0000\u0000\u01f5\u01f4\u0001\u0000"+
+ "\u0000\u0000\u01f5\u01f6\u0001\u0000\u0000\u0000\u01f6\u01f7\u0001\u0000"+
+ "\u0000\u0000\u01f7\u01f8\u0006\u0000\u0000\u0000\u01f8\u0013\u0001\u0000"+
+ "\u0000\u0000\u01f9\u01fa\u0005/\u0000\u0000\u01fa\u01fb\u0005*\u0000\u0000"+
+ "\u01fb\u0200\u0001\u0000\u0000\u0000\u01fc\u01ff\u0003\u0014\u0001\u0000"+
+ "\u01fd\u01ff\t\u0000\u0000\u0000\u01fe\u01fc\u0001\u0000\u0000\u0000\u01fe"+
+ "\u01fd\u0001\u0000\u0000\u0000\u01ff\u0202\u0001\u0000\u0000\u0000\u0200"+
+ "\u0201\u0001\u0000\u0000\u0000\u0200\u01fe\u0001\u0000\u0000\u0000\u0201"+
+ "\u0203\u0001\u0000\u0000\u0000\u0202\u0200\u0001\u0000\u0000\u0000\u0203"+
+ "\u0204\u0005*\u0000\u0000\u0204\u0205\u0005/\u0000\u0000\u0205\u0206\u0001"+
+ "\u0000\u0000\u0000\u0206\u0207\u0006\u0001\u0000\u0000\u0207\u0015\u0001"+
+ "\u0000\u0000\u0000\u0208\u020a\u0007\u0001\u0000\u0000\u0209\u0208\u0001"+
+ "\u0000\u0000\u0000\u020a\u020b\u0001\u0000\u0000\u0000\u020b\u0209\u0001"+
+ "\u0000\u0000\u0000\u020b\u020c\u0001\u0000\u0000\u0000\u020c\u020d\u0001"+
+ "\u0000\u0000\u0000\u020d\u020e\u0006\u0002\u0000\u0000\u020e\u0017\u0001"+
+ "\u0000\u0000\u0000\u020f\u0210\u0004\u0003\u0000\u0000\u0210\u0211\u0007"+
+ "\u0002\u0000\u0000\u0211\u0212\u0007\u0003\u0000\u0000\u0212\u0213\u0007"+
+ "\u0004\u0000\u0000\u0213\u0214\u0007\u0005\u0000\u0000\u0214\u0215\u0007"+
+ "\u0006\u0000\u0000\u0215\u0216\u0007\u0007\u0000\u0000\u0216\u0217\u0005"+
+ "_\u0000\u0000\u0217\u0218\u0007\b\u0000\u0000\u0218\u0219\u0007\t\u0000"+
+ "\u0000\u0219\u021a\u0007\n\u0000\u0000\u021a\u021b\u0007\u0005\u0000\u0000"+
+ "\u021b\u021c\u0007\u000b\u0000\u0000\u021c\u021d\u0001\u0000\u0000\u0000"+
+ "\u021d\u021e\u0006\u0003\u0001\u0000\u021e\u0019\u0001\u0000\u0000\u0000"+
+ "\u021f\u0220\u0007\u0007\u0000\u0000\u0220\u0221\u0007\u0005\u0000\u0000"+
+ "\u0221\u0222\u0007\f\u0000\u0000\u0222\u0223\u0007\n\u0000\u0000\u0223"+
+ "\u0224\u0007\u0002\u0000\u0000\u0224\u0225\u0007\u0003\u0000\u0000\u0225"+
+ "\u0226\u0001\u0000\u0000\u0000\u0226\u0227\u0006\u0004\u0002\u0000\u0227"+
+ "\u001b\u0001\u0000\u0000\u0000\u0228\u0229\u0007\u0007\u0000\u0000\u0229"+
+ "\u022a\u0007\r\u0000\u0000\u022a\u022b\u0007\b\u0000\u0000\u022b\u022c"+
+ "\u0007\u000e\u0000\u0000\u022c\u022d\u0007\u0004\u0000\u0000\u022d\u022e"+
+ "\u0007\n\u0000\u0000\u022e\u022f\u0007\u0005\u0000\u0000\u022f\u0230\u0001"+
+ "\u0000\u0000\u0000\u0230\u0231\u0006\u0005\u0003\u0000\u0231\u001d\u0001"+
+ "\u0000\u0000\u0000\u0232\u0233\u0007\u000f\u0000\u0000\u0233\u0234\u0007"+
+ "\n\u0000\u0000\u0234\u0235\u0007\u0010\u0000\u0000\u0235\u0236\u0007\u0010"+
+ "\u0000\u0000\u0236\u0237\u0007\u0007\u0000\u0000\u0237\u0238\u0007\u0002"+
+ "\u0000\u0000\u0238\u0239\u0007\u000b\u0000\u0000\u0239\u023a\u0001\u0000"+
+ "\u0000\u0000\u023a\u023b\u0006\u0006\u0004\u0000\u023b\u001f\u0001\u0000"+
+ "\u0000\u0000\u023c\u023d\u0007\u0007\u0000\u0000\u023d\u023e\u0007\u0011"+
+ "\u0000\u0000\u023e\u023f\u0007\u0004\u0000\u0000\u023f\u0240\u0007\u000e"+
+ "\u0000\u0000\u0240\u0241\u0001\u0000\u0000\u0000\u0241\u0242\u0006\u0007"+
+ "\u0004\u0000\u0242!\u0001\u0000\u0000\u0000\u0243\u0244\u0007\u0006\u0000"+
+ "\u0000\u0244\u0245\u0007\f\u0000\u0000\u0245\u0246\u0007\t\u0000\u0000"+
+ "\u0246\u0247\u0007\u0012\u0000\u0000\u0247\u0248\u0001\u0000\u0000\u0000"+
+ "\u0248\u0249\u0006\b\u0004\u0000\u0249#\u0001\u0000\u0000\u0000\u024a"+
+ "\u024b\u0007\u000e\u0000\u0000\u024b\u024c\u0007\n\u0000\u0000\u024c\u024d"+
+ "\u0007\u0013\u0000\u0000\u024d\u024e\u0007\n\u0000\u0000\u024e\u024f\u0007"+
+ "\u000b\u0000\u0000\u024f\u0250\u0001\u0000\u0000\u0000\u0250\u0251\u0006"+
+ "\t\u0004\u0000\u0251%\u0001\u0000\u0000\u0000\u0252\u0253\u0007\f\u0000"+
+ "\u0000\u0253\u0254\u0007\t\u0000\u0000\u0254\u0255\u0007\u0014\u0000\u0000"+
+ "\u0255\u0256\u0001\u0000\u0000\u0000\u0256\u0257\u0006\n\u0004\u0000\u0257"+
+ "\'\u0001\u0000\u0000\u0000\u0258\u0259\u0007\u0010\u0000\u0000\u0259\u025a"+
+ "\u0007\t\u0000\u0000\u025a\u025b\u0007\f\u0000\u0000\u025b\u025c\u0007"+
+ "\u000b\u0000\u0000\u025c\u025d\u0001\u0000\u0000\u0000\u025d\u025e\u0006"+
+ "\u000b\u0004\u0000\u025e)\u0001\u0000\u0000\u0000\u025f\u0260\u0007\u0010"+
+ "\u0000\u0000\u0260\u0261\u0007\u000b\u0000\u0000\u0261\u0262\u0007\u0004"+
+ "\u0000\u0000\u0262\u0263\u0007\u000b\u0000\u0000\u0263\u0264\u0007\u0010"+
+ "\u0000\u0000\u0264\u0265\u0001\u0000\u0000\u0000\u0265\u0266\u0006\f\u0004"+
+ "\u0000\u0266+\u0001\u0000\u0000\u0000\u0267\u0268\u0007\u0014\u0000\u0000"+
+ "\u0268\u0269\u0007\u0003\u0000\u0000\u0269\u026a\u0007\u0007\u0000\u0000"+
+ "\u026a\u026b\u0007\f\u0000\u0000\u026b\u026c\u0007\u0007\u0000\u0000\u026c"+
+ "\u026d\u0001\u0000\u0000\u0000\u026d\u026e\u0006\r\u0004\u0000\u026e-"+
+ "\u0001\u0000\u0000\u0000\u026f\u0270\u0004\u000e\u0001\u0000\u0270\u0271"+
+ "\u0007\n\u0000\u0000\u0271\u0272\u0007\u0005\u0000\u0000\u0272\u0273\u0007"+
+ "\u000e\u0000\u0000\u0273\u0274\u0007\n\u0000\u0000\u0274\u0275\u0007\u0005"+
+ "\u0000\u0000\u0275\u0276\u0007\u0007\u0000\u0000\u0276\u0277\u0007\u0010"+
+ "\u0000\u0000\u0277\u0278\u0007\u000b\u0000\u0000\u0278\u0279\u0007\u0004"+
+ "\u0000\u0000\u0279\u027a\u0007\u000b\u0000\u0000\u027a\u027b\u0007\u0010"+
+ "\u0000\u0000\u027b\u027c\u0001\u0000\u0000\u0000\u027c\u027d\u0006\u000e"+
+ "\u0004\u0000\u027d/\u0001\u0000\u0000\u0000\u027e\u027f\u0007\u0015\u0000"+
+ "\u0000\u027f\u0280\u0007\f\u0000\u0000\u0280\u0281\u0007\t\u0000\u0000"+
+ "\u0281\u0282\u0007\u0013\u0000\u0000\u0282\u0283\u0001\u0000\u0000\u0000"+
+ "\u0283\u0284\u0006\u000f\u0005\u0000\u02841\u0001\u0000\u0000\u0000\u0285"+
+ "\u0286\u0004\u0010\u0002\u0000\u0286\u0287\u0007\u0015\u0000\u0000\u0287"+
+ "\u0288\u0007\t\u0000\u0000\u0288\u0289\u0007\f\u0000\u0000\u0289\u028a"+
+ "\u0007\u0012\u0000\u0000\u028a\u028b\u0001\u0000\u0000\u0000\u028b\u028c"+
+ "\u0006\u0010\u0006\u0000\u028c3\u0001\u0000\u0000\u0000\u028d\u028e\u0007"+
+ "\u000e\u0000\u0000\u028e\u028f\u0007\t\u0000\u0000\u028f\u0290\u0007\t"+
+ "\u0000\u0000\u0290\u0291\u0007\u0012\u0000\u0000\u0291\u0292\u0007\u0016"+
+ "\u0000\u0000\u0292\u0293\u0007\b\u0000\u0000\u0293\u0294\u0001\u0000\u0000"+
+ "\u0000\u0294\u0295\u0006\u0011\u0007\u0000\u02955\u0001\u0000\u0000\u0000"+
+ "\u0296\u0297\u0004\u0012\u0003\u0000\u0297\u0298\u0007\u0015\u0000\u0000"+
+ "\u0298\u0299\u0007\u0016\u0000\u0000\u0299\u029a\u0007\u000e\u0000\u0000"+
+ "\u029a\u029b\u0007\u000e\u0000\u0000\u029b\u029c\u0001\u0000\u0000\u0000"+
+ "\u029c\u029d\u0006\u0012\u0007\u0000\u029d7\u0001\u0000\u0000\u0000\u029e"+
+ "\u029f\u0004\u0013\u0004\u0000\u029f\u02a0\u0007\u000e\u0000\u0000\u02a0"+
+ "\u02a1\u0007\u0007\u0000\u0000\u02a1\u02a2\u0007\u0015\u0000\u0000\u02a2"+
+ "\u02a3\u0007\u000b\u0000\u0000\u02a3\u02a4\u0001\u0000\u0000\u0000\u02a4"+
+ "\u02a5\u0006\u0013\u0007\u0000\u02a59\u0001\u0000\u0000\u0000\u02a6\u02a7"+
+ "\u0004\u0014\u0005\u0000\u02a7\u02a8\u0007\f\u0000\u0000\u02a8\u02a9\u0007"+
+ "\n\u0000\u0000\u02a9\u02aa\u0007\u0006\u0000\u0000\u02aa\u02ab\u0007\u0003"+
+ "\u0000\u0000\u02ab\u02ac\u0007\u000b\u0000\u0000\u02ac\u02ad\u0001\u0000"+
+ "\u0000\u0000\u02ad\u02ae\u0006\u0014\u0007\u0000\u02ae;\u0001\u0000\u0000"+
+ "\u0000\u02af\u02b0\u0004\u0015\u0006\u0000\u02b0\u02b1\u0007\u000e\u0000"+
+ "\u0000\u02b1\u02b2\u0007\t\u0000\u0000\u02b2\u02b3\u0007\t\u0000\u0000"+
+ "\u02b3\u02b4\u0007\u0012\u0000\u0000\u02b4\u02b5\u0007\u0016\u0000\u0000"+
+ "\u02b5\u02b6\u0007\b\u0000\u0000\u02b6\u02b7\u0005_\u0000\u0000\u02b7"+
+ "\u02b8\u0005\u8001\uf414\u0000\u0000\u02b8\u02b9\u0001\u0000\u0000\u0000"+
+ "\u02b9\u02ba\u0006\u0015\b\u0000\u02ba=\u0001\u0000\u0000\u0000\u02bb"+
+ "\u02bc\u0004\u0016\u0007\u0000\u02bc\u02bd\u0007\u0013\u0000\u0000\u02bd"+
+ "\u02be\u0007\u0007\u0000\u0000\u02be\u02bf\u0007\u000b\u0000\u0000\u02bf"+
+ "\u02c0\u0007\f\u0000\u0000\u02c0\u02c1\u0007\n\u0000\u0000\u02c1\u02c2"+
+ "\u0007\u0002\u0000\u0000\u02c2\u02c3\u0007\u0010\u0000\u0000\u02c3\u02c4"+
+ "\u0001\u0000\u0000\u0000\u02c4\u02c5\u0006\u0016\t\u0000\u02c5?\u0001"+
+ "\u0000\u0000\u0000\u02c6\u02c7\u0007\u0013\u0000\u0000\u02c7\u02c8\u0007"+
+ "\u0011\u0000\u0000\u02c8\u02c9\u0005_\u0000\u0000\u02c9\u02ca\u0007\u0007"+
+ "\u0000\u0000\u02ca\u02cb\u0007\r\u0000\u0000\u02cb\u02cc\u0007\b\u0000"+
+ "\u0000\u02cc\u02cd\u0007\u0004\u0000\u0000\u02cd\u02ce\u0007\u0005\u0000"+
+ "\u0000\u02ce\u02cf\u0007\u000f\u0000\u0000\u02cf\u02d0\u0001\u0000\u0000"+
+ "\u0000\u02d0\u02d1\u0006\u0017\n\u0000\u02d1A\u0001\u0000\u0000\u0000"+
+ "\u02d2\u02d3\u0007\u000f\u0000\u0000\u02d3\u02d4\u0007\f\u0000\u0000\u02d4"+
+ "\u02d5\u0007\t\u0000\u0000\u02d5\u02d6\u0007\b\u0000\u0000\u02d6\u02d7"+
+ "\u0001\u0000\u0000\u0000\u02d7\u02d8\u0006\u0018\u000b\u0000\u02d8C\u0001"+
+ "\u0000\u0000\u0000\u02d9\u02da\u0007\u0012\u0000\u0000\u02da\u02db\u0007"+
+ "\u0007\u0000\u0000\u02db\u02dc\u0007\u0007\u0000\u0000\u02dc\u02dd\u0007"+
+ "\b\u0000\u0000\u02dd\u02de\u0001\u0000\u0000\u0000\u02de\u02df\u0006\u0019"+
+ "\u000b\u0000\u02dfE\u0001\u0000\u0000\u0000\u02e0\u02e1\u0004\u001a\b"+
+ "\u0000\u02e1\u02e2\u0007\n\u0000\u0000\u02e2\u02e3\u0007\u0005\u0000\u0000"+
+ "\u02e3\u02e4\u0007\u0010\u0000\u0000\u02e4\u02e5\u0007\n\u0000\u0000\u02e5"+
+ "\u02e6\u0007\u0010\u0000\u0000\u02e6\u02e7\u0007\u000b\u0000\u0000\u02e7"+
+ "\u02e8\u0005_\u0000\u0000\u02e8\u02e9\u0005\u8001\uf414\u0000\u0000\u02e9"+
+ "\u02ea\u0001\u0000\u0000\u0000\u02ea\u02eb\u0006\u001a\u000b\u0000\u02eb"+
+ "G\u0001\u0000\u0000\u0000\u02ec\u02ed\u0007\f\u0000\u0000\u02ed\u02ee"+
+ "\u0007\u0007\u0000\u0000\u02ee\u02ef\u0007\u0005\u0000\u0000\u02ef\u02f0"+
+ "\u0007\u0004\u0000\u0000\u02f0\u02f1\u0007\u0013\u0000\u0000\u02f1\u02f2"+
+ "\u0007\u0007\u0000\u0000\u02f2\u02f3\u0001\u0000\u0000\u0000\u02f3\u02f4"+
+ "\u0006\u001b\f\u0000\u02f4I\u0001\u0000\u0000\u0000\u02f5\u02f6\u0007"+
+ "\u0010\u0000\u0000\u02f6\u02f7\u0007\u0003\u0000\u0000\u02f7\u02f8\u0007"+
+ "\t\u0000\u0000\u02f8\u02f9\u0007\u0014\u0000\u0000\u02f9\u02fa\u0001\u0000"+
+ "\u0000\u0000\u02fa\u02fb\u0006\u001c\r\u0000\u02fbK\u0001\u0000\u0000"+
+ "\u0000\u02fc\u02fe\b\u0017\u0000\u0000\u02fd\u02fc\u0001\u0000\u0000\u0000"+
+ "\u02fe\u02ff\u0001\u0000\u0000\u0000\u02ff\u02fd\u0001\u0000\u0000\u0000"+
+ "\u02ff\u0300\u0001\u0000\u0000\u0000\u0300\u0301\u0001\u0000\u0000\u0000"+
+ "\u0301\u0302\u0006\u001d\u0004\u0000\u0302M\u0001\u0000\u0000\u0000\u0303"+
+ "\u0304\u0003\u00a4I\u0000\u0304\u0305\u0001\u0000\u0000\u0000\u0305\u0306"+
+ "\u0006\u001e\u000e\u0000\u0306\u0307\u0006\u001e\u000f\u0000\u0307O\u0001"+
+ "\u0000\u0000\u0000\u0308\u0309\u0003f*\u0000\u0309\u030a\u0001\u0000\u0000"+
+ "\u0000\u030a\u030b\u0006\u001f\u0010\u0000\u030bQ\u0001\u0000\u0000\u0000"+
+ "\u030c\u030d\u0003\u01d4\u00e1\u0000\u030d\u030e\u0001\u0000\u0000\u0000"+
+ "\u030e\u030f\u0006 \u0011\u0000\u030fS\u0001\u0000\u0000\u0000\u0310\u0311"+
+ "\u0003\u00d0_\u0000\u0311\u0312\u0001\u0000\u0000\u0000\u0312\u0313\u0006"+
+ "!\u0012\u0000\u0313U\u0001\u0000\u0000\u0000\u0314\u0315\u0003\u00cc]"+
+ "\u0000\u0315\u0316\u0001\u0000\u0000\u0000\u0316\u0317\u0006\"\u0013\u0000"+
+ "\u0317W\u0001\u0000\u0000\u0000\u0318\u0319\u0003\u0118\u0083\u0000\u0319"+
+ "\u031a\u0001\u0000\u0000\u0000\u031a\u031b\u0006#\u0014\u0000\u031bY\u0001"+
+ "\u0000\u0000\u0000\u031c\u031d\u0003\u0114\u0081\u0000\u031d\u031e\u0001"+
+ "\u0000\u0000\u0000\u031e\u031f\u0006$\u0015\u0000\u031f[\u0001\u0000\u0000"+
+ "\u0000\u0320\u0321\u0003\u0012\u0000\u0000\u0321\u0322\u0001\u0000\u0000"+
+ "\u0000\u0322\u0323\u0006%\u0000\u0000\u0323]\u0001\u0000\u0000\u0000\u0324"+
+ "\u0325\u0003\u0014\u0001\u0000\u0325\u0326\u0001\u0000\u0000\u0000\u0326"+
+ "\u0327\u0006&\u0000\u0000\u0327_\u0001\u0000\u0000\u0000\u0328\u0329\u0003"+
+ "\u0016\u0002\u0000\u0329\u032a\u0001\u0000\u0000\u0000\u032a\u032b\u0006"+
+ "\'\u0000\u0000\u032ba\u0001\u0000\u0000\u0000\u032c\u032d\u0003\u00a4"+
+ "I\u0000\u032d\u032e\u0001\u0000\u0000\u0000\u032e\u032f\u0006(\u000e\u0000"+
+ "\u032f\u0330\u0006(\u000f\u0000\u0330c\u0001\u0000\u0000\u0000\u0331\u0332"+
+ "\u0003\u010c}\u0000\u0332\u0333\u0001\u0000\u0000\u0000\u0333\u0334\u0006"+
+ ")\u0016\u0000\u0334\u0335\u0006)\u0017\u0000\u0335e\u0001\u0000\u0000"+
+ "\u0000\u0336\u0337\u0007\t\u0000\u0000\u0337\u0338\u0007\u0005\u0000\u0000"+
+ "\u0338\u0339\u0001\u0000\u0000\u0000\u0339\u033a\u0006*\u0018\u0000\u033a"+
+ "g\u0001\u0000\u0000\u0000\u033b\u033c\u0007\u0014\u0000\u0000\u033c\u033d"+
+ "\u0007\n\u0000\u0000\u033d\u033e\u0007\u000b\u0000\u0000\u033e\u033f\u0007"+
+ "\u0003\u0000\u0000\u033f\u0340\u0001\u0000\u0000\u0000\u0340\u0341\u0006"+
+ "+\u0018\u0000\u0341i\u0001\u0000\u0000\u0000\u0342\u0343\b\u0018\u0000"+
+ "\u0000\u0343k\u0001\u0000\u0000\u0000\u0344\u0346\u0003j,\u0000\u0345"+
+ "\u0344\u0001\u0000\u0000\u0000\u0346\u0347\u0001\u0000\u0000\u0000\u0347"+
+ "\u0345\u0001\u0000\u0000\u0000\u0347\u0348\u0001\u0000\u0000\u0000\u0348"+
+ "\u0349\u0001\u0000\u0000\u0000\u0349\u034a\u0003\u00ca\\\u0000\u034a\u034c"+
+ "\u0001\u0000\u0000\u0000\u034b\u0345\u0001\u0000\u0000\u0000\u034b\u034c"+
+ "\u0001\u0000\u0000\u0000\u034c\u034e\u0001\u0000\u0000\u0000\u034d\u034f"+
+ "\u0003j,\u0000\u034e\u034d\u0001\u0000\u0000\u0000\u034f\u0350\u0001\u0000"+
+ "\u0000\u0000\u0350\u034e\u0001\u0000\u0000\u0000\u0350\u0351\u0001\u0000"+
+ "\u0000\u0000\u0351m\u0001\u0000\u0000\u0000\u0352\u0353\u0003l-\u0000"+
+ "\u0353\u0354\u0001\u0000\u0000\u0000\u0354\u0355\u0006.\u0019\u0000\u0355"+
+ "o\u0001\u0000\u0000\u0000\u0356\u0357\u0003\u0012\u0000\u0000\u0357\u0358"+
+ "\u0001\u0000\u0000\u0000\u0358\u0359\u0006/\u0000\u0000\u0359q\u0001\u0000"+
+ "\u0000\u0000\u035a\u035b\u0003\u0014\u0001\u0000\u035b\u035c\u0001\u0000"+
+ "\u0000\u0000\u035c\u035d\u00060\u0000\u0000\u035ds\u0001\u0000\u0000\u0000"+
+ "\u035e\u035f\u0003\u0016\u0002\u0000\u035f\u0360\u0001\u0000\u0000\u0000"+
+ "\u0360\u0361\u00061\u0000\u0000\u0361u\u0001\u0000\u0000\u0000\u0362\u0363"+
+ "\u0003\u00a4I\u0000\u0363\u0364\u0001\u0000\u0000\u0000\u0364\u0365\u0006"+
+ "2\u000e\u0000\u0365\u0366\u00062\u000f\u0000\u0366\u0367\u00062\u000f"+
+ "\u0000\u0367w\u0001\u0000\u0000\u0000\u0368\u0369\u0003\u00c6Z\u0000\u0369"+
+ "\u036a\u0001\u0000\u0000\u0000\u036a\u036b\u00063\u001a\u0000\u036by\u0001"+
+ "\u0000\u0000\u0000\u036c\u036d\u0003\u00cc]\u0000\u036d\u036e\u0001\u0000"+
+ "\u0000\u0000\u036e\u036f\u00064\u0013\u0000\u036f{\u0001\u0000\u0000\u0000"+
+ "\u0370\u0371\u0003\u00d0_\u0000\u0371\u0372\u0001\u0000\u0000\u0000\u0372"+
+ "\u0373\u00065\u0012\u0000\u0373}\u0001\u0000\u0000\u0000\u0374\u0375\u0003"+
+ "h+\u0000\u0375\u0376\u0001\u0000\u0000\u0000\u0376\u0377\u00066\u001b"+
+ "\u0000\u0377\u007f\u0001\u0000\u0000\u0000\u0378\u0379\u0003\u01c0\u00d7"+
+ "\u0000\u0379\u037a\u0001\u0000\u0000\u0000\u037a\u037b\u00067\u001c\u0000"+
+ "\u037b\u0081\u0001\u0000\u0000\u0000\u037c\u037d\u0003\u0118\u0083\u0000"+
+ "\u037d\u037e\u0001\u0000\u0000\u0000\u037e\u037f\u00068\u0014\u0000\u037f"+
+ "\u0083\u0001\u0000\u0000\u0000\u0380\u0381\u0003\u00e6j\u0000\u0381\u0382"+
+ "\u0001\u0000\u0000\u0000\u0382\u0383\u00069\u001d\u0000\u0383\u0085\u0001"+
+ "\u0000\u0000\u0000\u0384\u0385\u0003\u010a|\u0000\u0385\u0386\u0001\u0000"+
+ "\u0000\u0000\u0386\u0387\u0006:\u001e\u0000\u0387\u0087\u0001\u0000\u0000"+
+ "\u0000\u0388\u0389\u0003\u0012\u0000\u0000\u0389\u038a\u0001\u0000\u0000"+
+ "\u0000\u038a\u038b\u0006;\u0000\u0000\u038b\u0089\u0001\u0000\u0000\u0000"+
+ "\u038c\u038d\u0003\u0014\u0001\u0000\u038d\u038e\u0001\u0000\u0000\u0000"+
+ "\u038e\u038f\u0006<\u0000\u0000\u038f\u008b\u0001\u0000\u0000\u0000\u0390"+
+ "\u0391\u0003\u0016\u0002\u0000\u0391\u0392\u0001\u0000\u0000\u0000\u0392"+
+ "\u0393\u0006=\u0000\u0000\u0393\u008d\u0001\u0000\u0000\u0000\u0394\u0395"+
+ "\u0003\u010e~\u0000\u0395\u0396\u0001\u0000\u0000\u0000\u0396\u0397\u0006"+
+ ">\u001f\u0000\u0397\u0398\u0006>\u000f\u0000\u0398\u008f\u0001\u0000\u0000"+
+ "\u0000\u0399\u039a\u0003\u00ca\\\u0000\u039a\u039b\u0001\u0000\u0000\u0000"+
+ "\u039b\u039c\u0006? \u0000\u039c\u0091\u0001\u0000\u0000\u0000\u039d\u03a3"+
+ "\u0003\u00b0O\u0000\u039e\u03a3\u0003\u00a6J\u0000\u039f\u03a3\u0003\u00d0"+
+ "_\u0000\u03a0\u03a3\u0003\u00a8K\u0000\u03a1\u03a3\u0003\u00b6R\u0000"+
+ "\u03a2\u039d\u0001\u0000\u0000\u0000\u03a2\u039e\u0001\u0000\u0000\u0000"+
+ "\u03a2\u039f\u0001\u0000\u0000\u0000\u03a2\u03a0\u0001\u0000\u0000\u0000"+
+ "\u03a2\u03a1\u0001\u0000\u0000\u0000\u03a3\u03a4\u0001\u0000\u0000\u0000"+
+ "\u03a4\u03a2\u0001\u0000\u0000\u0000\u03a4\u03a5\u0001\u0000\u0000\u0000"+
+ "\u03a5\u0093\u0001\u0000\u0000\u0000\u03a6\u03a7\u0003\u0012\u0000\u0000"+
+ "\u03a7\u03a8\u0001\u0000\u0000\u0000\u03a8\u03a9\u0006A\u0000\u0000\u03a9"+
+ "\u0095\u0001\u0000\u0000\u0000\u03aa\u03ab\u0003\u0014\u0001\u0000\u03ab"+
+ "\u03ac\u0001\u0000\u0000\u0000\u03ac\u03ad\u0006B\u0000\u0000\u03ad\u0097"+
+ "\u0001\u0000\u0000\u0000\u03ae\u03af\u0003\u0016\u0002\u0000\u03af\u03b0"+
+ "\u0001\u0000\u0000\u0000\u03b0\u03b1\u0006C\u0000\u0000\u03b1\u0099\u0001"+
+ "\u0000\u0000\u0000\u03b2\u03b3\u0003\u010c}\u0000\u03b3\u03b4\u0001\u0000"+
+ "\u0000\u0000\u03b4\u03b5\u0006D\u0016\u0000\u03b5\u03b6\u0006D!\u0000"+
+ "\u03b6\u009b\u0001\u0000\u0000\u0000\u03b7\u03b8\u0003\u00a4I\u0000\u03b8"+
+ "\u03b9\u0001\u0000\u0000\u0000\u03b9\u03ba\u0006E\u000e\u0000\u03ba\u03bb"+
+ "\u0006E\u000f\u0000\u03bb\u009d\u0001\u0000\u0000\u0000\u03bc\u03bd\u0003"+
+ "\u0016\u0002\u0000\u03bd\u03be\u0001\u0000\u0000\u0000\u03be\u03bf\u0006"+
+ "F\u0000\u0000\u03bf\u009f\u0001\u0000\u0000\u0000\u03c0\u03c1\u0003\u0012"+
+ "\u0000\u0000\u03c1\u03c2\u0001\u0000\u0000\u0000\u03c2\u03c3\u0006G\u0000"+
+ "\u0000\u03c3\u00a1\u0001\u0000\u0000\u0000\u03c4\u03c5\u0003\u0014\u0001"+
+ "\u0000\u03c5\u03c6\u0001\u0000\u0000\u0000\u03c6\u03c7\u0006H\u0000\u0000"+
+ "\u03c7\u00a3\u0001\u0000\u0000\u0000\u03c8\u03c9\u0005|\u0000\u0000\u03c9"+
+ "\u03ca\u0001\u0000\u0000\u0000\u03ca\u03cb\u0006I\u000f\u0000\u03cb\u00a5"+
+ "\u0001\u0000\u0000\u0000\u03cc\u03cd\u0007\u0019\u0000\u0000\u03cd\u00a7"+
+ "\u0001\u0000\u0000\u0000\u03ce\u03cf\u0007\u001a\u0000\u0000\u03cf\u00a9"+
+ "\u0001\u0000\u0000\u0000\u03d0\u03d1\u0005\\\u0000\u0000\u03d1\u03d2\u0007"+
+ "\u001b\u0000\u0000\u03d2\u00ab\u0001\u0000\u0000\u0000\u03d3\u03d4\b\u001c"+
+ "\u0000\u0000\u03d4\u00ad\u0001\u0000\u0000\u0000\u03d5\u03d7\u0007\u0007"+
+ "\u0000\u0000\u03d6\u03d8\u0007\u001d\u0000\u0000\u03d7\u03d6\u0001\u0000"+
+ "\u0000\u0000\u03d7\u03d8\u0001\u0000\u0000\u0000\u03d8\u03da\u0001\u0000"+
+ "\u0000\u0000\u03d9\u03db\u0003\u00a6J\u0000\u03da\u03d9\u0001\u0000\u0000"+
+ "\u0000\u03db\u03dc\u0001\u0000\u0000\u0000\u03dc\u03da\u0001\u0000\u0000"+
+ "\u0000\u03dc\u03dd\u0001\u0000\u0000\u0000\u03dd\u00af\u0001\u0000\u0000"+
+ "\u0000\u03de\u03df\u0005@\u0000\u0000\u03df\u00b1\u0001\u0000\u0000\u0000"+
+ "\u03e0\u03e1\u0005`\u0000\u0000\u03e1\u00b3\u0001\u0000\u0000\u0000\u03e2"+
+ "\u03e6\b\u001e\u0000\u0000\u03e3\u03e4\u0005`\u0000\u0000\u03e4\u03e6"+
+ "\u0005`\u0000\u0000\u03e5\u03e2\u0001\u0000\u0000\u0000\u03e5\u03e3\u0001"+
+ "\u0000\u0000\u0000\u03e6\u00b5\u0001\u0000\u0000\u0000\u03e7\u03e8\u0005"+
+ "_\u0000\u0000\u03e8\u00b7\u0001\u0000\u0000\u0000\u03e9\u03ed\u0003\u00a8"+
+ "K\u0000\u03ea\u03ed\u0003\u00a6J\u0000\u03eb\u03ed\u0003\u00b6R\u0000"+
+ "\u03ec\u03e9\u0001\u0000\u0000\u0000\u03ec\u03ea\u0001\u0000\u0000\u0000"+
+ "\u03ec\u03eb\u0001\u0000\u0000\u0000\u03ed\u00b9\u0001\u0000\u0000\u0000"+
+ "\u03ee\u03f3\u0005\"\u0000\u0000\u03ef\u03f2\u0003\u00aaL\u0000\u03f0"+
+ "\u03f2\u0003\u00acM\u0000\u03f1\u03ef\u0001\u0000\u0000\u0000\u03f1\u03f0"+
+ "\u0001\u0000\u0000\u0000\u03f2\u03f5\u0001\u0000\u0000\u0000\u03f3\u03f1"+
+ "\u0001\u0000\u0000\u0000\u03f3\u03f4\u0001\u0000\u0000\u0000\u03f4\u03f6"+
+ "\u0001\u0000\u0000\u0000\u03f5\u03f3\u0001\u0000\u0000\u0000\u03f6\u040c"+
+ "\u0005\"\u0000\u0000\u03f7\u03f8\u0005\"\u0000\u0000\u03f8\u03f9\u0005"+
+ "\"\u0000\u0000\u03f9\u03fa\u0005\"\u0000\u0000\u03fa\u03fe\u0001\u0000"+
+ "\u0000\u0000\u03fb\u03fd\b\u0000\u0000\u0000\u03fc\u03fb\u0001\u0000\u0000"+
+ "\u0000\u03fd\u0400\u0001\u0000\u0000\u0000\u03fe\u03ff\u0001\u0000\u0000"+
+ "\u0000\u03fe\u03fc\u0001\u0000\u0000\u0000\u03ff\u0401\u0001\u0000\u0000"+
+ "\u0000\u0400\u03fe\u0001\u0000\u0000\u0000\u0401\u0402\u0005\"\u0000\u0000"+
+ "\u0402\u0403\u0005\"\u0000\u0000\u0403\u0404\u0005\"\u0000\u0000\u0404"+
+ "\u0406\u0001\u0000\u0000\u0000\u0405\u0407\u0005\"\u0000\u0000\u0406\u0405"+
+ "\u0001\u0000\u0000\u0000\u0406\u0407\u0001\u0000\u0000\u0000\u0407\u0409"+
+ "\u0001\u0000\u0000\u0000\u0408\u040a\u0005\"\u0000\u0000\u0409\u0408\u0001"+
+ "\u0000\u0000\u0000\u0409\u040a\u0001\u0000\u0000\u0000\u040a\u040c\u0001"+
+ "\u0000\u0000\u0000\u040b\u03ee\u0001\u0000\u0000\u0000\u040b\u03f7\u0001"+
+ "\u0000\u0000\u0000\u040c\u00bb\u0001\u0000\u0000\u0000\u040d\u040f\u0003"+
+ "\u00a6J\u0000\u040e\u040d\u0001\u0000\u0000\u0000\u040f\u0410\u0001\u0000"+
+ "\u0000\u0000\u0410\u040e\u0001\u0000\u0000\u0000\u0410\u0411\u0001\u0000"+
+ "\u0000\u0000\u0411\u00bd\u0001\u0000\u0000\u0000\u0412\u0414\u0003\u00a6"+
+ "J\u0000\u0413\u0412\u0001\u0000\u0000\u0000\u0414\u0415\u0001\u0000\u0000"+
+ "\u0000\u0415\u0413\u0001\u0000\u0000\u0000\u0415\u0416\u0001\u0000\u0000"+
+ "\u0000\u0416\u0417\u0001\u0000\u0000\u0000\u0417\u041b\u0003\u00d0_\u0000"+
+ "\u0418\u041a\u0003\u00a6J\u0000\u0419\u0418\u0001\u0000\u0000\u0000\u041a"+
+ "\u041d\u0001\u0000\u0000\u0000\u041b\u0419\u0001\u0000\u0000\u0000\u041b"+
+ "\u041c\u0001\u0000\u0000\u0000\u041c\u043d\u0001\u0000\u0000\u0000\u041d"+
+ "\u041b\u0001\u0000\u0000\u0000\u041e\u0420\u0003\u00d0_\u0000\u041f\u0421"+
+ "\u0003\u00a6J\u0000\u0420\u041f\u0001\u0000\u0000\u0000\u0421\u0422\u0001"+
+ "\u0000\u0000\u0000\u0422\u0420\u0001\u0000\u0000\u0000\u0422\u0423\u0001"+
+ "\u0000\u0000\u0000\u0423\u043d\u0001\u0000\u0000\u0000\u0424\u0426\u0003"+
+ "\u00a6J\u0000\u0425\u0424\u0001\u0000\u0000\u0000\u0426\u0427\u0001\u0000"+
+ "\u0000\u0000\u0427\u0425\u0001\u0000\u0000\u0000\u0427\u0428\u0001\u0000"+
+ "\u0000\u0000\u0428\u0430\u0001\u0000\u0000\u0000\u0429\u042d\u0003\u00d0"+
+ "_\u0000\u042a\u042c\u0003\u00a6J\u0000\u042b\u042a\u0001\u0000\u0000\u0000"+
+ "\u042c\u042f\u0001\u0000\u0000\u0000\u042d\u042b\u0001\u0000\u0000\u0000"+
+ "\u042d\u042e\u0001\u0000\u0000\u0000\u042e\u0431\u0001\u0000\u0000\u0000"+
+ "\u042f\u042d\u0001\u0000\u0000\u0000\u0430\u0429\u0001\u0000\u0000\u0000"+
+ "\u0430\u0431\u0001\u0000\u0000\u0000\u0431\u0432\u0001\u0000\u0000\u0000"+
+ "\u0432\u0433\u0003\u00aeN\u0000\u0433\u043d\u0001\u0000\u0000\u0000\u0434"+
+ "\u0436\u0003\u00d0_\u0000\u0435\u0437\u0003\u00a6J\u0000\u0436\u0435\u0001"+
+ "\u0000\u0000\u0000\u0437\u0438\u0001\u0000\u0000\u0000\u0438\u0436\u0001"+
+ "\u0000\u0000\u0000\u0438\u0439\u0001\u0000\u0000\u0000\u0439\u043a\u0001"+
+ "\u0000\u0000\u0000\u043a\u043b\u0003\u00aeN\u0000\u043b\u043d\u0001\u0000"+
+ "\u0000\u0000\u043c\u0413\u0001\u0000\u0000\u0000\u043c\u041e\u0001\u0000"+
+ "\u0000\u0000\u043c\u0425\u0001\u0000\u0000\u0000\u043c\u0434\u0001\u0000"+
+ "\u0000\u0000\u043d\u00bf\u0001\u0000\u0000\u0000\u043e\u043f\u0007\u001f"+
+ "\u0000\u0000\u043f\u0440\u0007 \u0000\u0000\u0440\u00c1\u0001\u0000\u0000"+
+ "\u0000\u0441\u0442\u0007\u0004\u0000\u0000\u0442\u0443\u0007\u0005\u0000"+
+ "\u0000\u0443\u0444\u0007\u000f\u0000\u0000\u0444\u00c3\u0001\u0000\u0000"+
+ "\u0000\u0445\u0446\u0007\u0004\u0000\u0000\u0446\u0447\u0007\u0010\u0000"+
+ "\u0000\u0447\u0448\u0007\u0002\u0000\u0000\u0448\u00c5\u0001\u0000\u0000"+
+ "\u0000\u0449\u044a\u0005=\u0000\u0000\u044a\u00c7\u0001\u0000\u0000\u0000"+
+ "\u044b\u044c\u0005:\u0000\u0000\u044c\u044d\u0005:\u0000\u0000\u044d\u00c9"+
+ "\u0001\u0000\u0000\u0000\u044e\u044f\u0005:\u0000\u0000\u044f\u00cb\u0001"+
+ "\u0000\u0000\u0000\u0450\u0451\u0005,\u0000\u0000\u0451\u00cd\u0001\u0000"+
+ "\u0000\u0000\u0452\u0453\u0007\u000f\u0000\u0000\u0453\u0454\u0007\u0007"+
+ "\u0000\u0000\u0454\u0455\u0007\u0010\u0000\u0000\u0455\u0456\u0007\u0002"+
+ "\u0000\u0000\u0456\u00cf\u0001\u0000\u0000\u0000\u0457\u0458\u0005.\u0000"+
+ "\u0000\u0458\u00d1\u0001\u0000\u0000\u0000\u0459\u045a\u0007\u0015\u0000"+
+ "\u0000\u045a\u045b\u0007\u0004\u0000\u0000\u045b\u045c\u0007\u000e\u0000"+
+ "\u0000\u045c\u045d\u0007\u0010\u0000\u0000\u045d\u045e\u0007\u0007\u0000"+
+ "\u0000\u045e\u00d3\u0001\u0000\u0000\u0000\u045f\u0460\u0007\u0015\u0000"+
+ "\u0000\u0460\u0461\u0007\n\u0000\u0000\u0461\u0462\u0007\f\u0000\u0000"+
+ "\u0462\u0463\u0007\u0010\u0000\u0000\u0463\u0464\u0007\u000b\u0000\u0000"+
+ "\u0464\u00d5\u0001\u0000\u0000\u0000\u0465\u0466\u0007\n\u0000\u0000\u0466"+
+ "\u0467\u0007\u0005\u0000\u0000\u0467\u00d7\u0001\u0000\u0000\u0000\u0468"+
+ "\u0469\u0007\n\u0000\u0000\u0469\u046a\u0007\u0010\u0000\u0000\u046a\u00d9"+
+ "\u0001\u0000\u0000\u0000\u046b\u046c\u0007\u000e\u0000\u0000\u046c\u046d"+
+ "\u0007\u0004\u0000\u0000\u046d\u046e\u0007\u0010\u0000\u0000\u046e\u046f"+
+ "\u0007\u000b\u0000\u0000\u046f\u00db\u0001\u0000\u0000\u0000\u0470\u0471"+
+ "\u0007\u000e\u0000\u0000\u0471\u0472\u0007\n\u0000\u0000\u0472\u0473\u0007"+
+ "\u0012\u0000\u0000\u0473\u0474\u0007\u0007\u0000\u0000\u0474\u00dd\u0001"+
+ "\u0000\u0000\u0000\u0475\u0476\u0007\u0005\u0000\u0000\u0476\u0477\u0007"+
+ "\t\u0000\u0000\u0477\u0478\u0007\u000b\u0000\u0000\u0478\u00df\u0001\u0000"+
+ "\u0000\u0000\u0479\u047a\u0007\u0005\u0000\u0000\u047a\u047b\u0007\u0016"+
+ "\u0000\u0000\u047b\u047c\u0007\u000e\u0000\u0000\u047c\u047d\u0007\u000e"+
+ "\u0000\u0000\u047d\u00e1\u0001\u0000\u0000\u0000\u047e\u047f\u0007\u0005"+
+ "\u0000\u0000\u047f\u0480\u0007\u0016\u0000\u0000\u0480\u0481\u0007\u000e"+
+ "\u0000\u0000\u0481\u0482\u0007\u000e\u0000\u0000\u0482\u0483\u0007\u0010"+
+ "\u0000\u0000\u0483\u00e3\u0001\u0000\u0000\u0000\u0484\u0485\u0007\t\u0000"+
+ "\u0000\u0485\u0486\u0007\f\u0000\u0000\u0486\u00e5\u0001\u0000\u0000\u0000"+
+ "\u0487\u0488\u0005?\u0000\u0000\u0488\u00e7\u0001\u0000\u0000\u0000\u0489"+
+ "\u048a\u0007\f\u0000\u0000\u048a\u048b\u0007\u000e\u0000\u0000\u048b\u048c"+
+ "\u0007\n\u0000\u0000\u048c\u048d\u0007\u0012\u0000\u0000\u048d\u048e\u0007"+
+ "\u0007\u0000\u0000\u048e\u00e9\u0001\u0000\u0000\u0000\u048f\u0490\u0007"+
+ "\u000b\u0000\u0000\u0490\u0491\u0007\f\u0000\u0000\u0491\u0492\u0007\u0016"+
+ "\u0000\u0000\u0492\u0493\u0007\u0007\u0000\u0000\u0493\u00eb\u0001\u0000"+
+ "\u0000\u0000\u0494\u0495\u0005=\u0000\u0000\u0495\u0496\u0005=\u0000\u0000"+
+ "\u0496\u00ed\u0001\u0000\u0000\u0000\u0497\u0498\u0005=\u0000\u0000\u0498"+
+ "\u0499\u0005~\u0000\u0000\u0499\u00ef\u0001\u0000\u0000\u0000\u049a\u049b"+
+ "\u0005!\u0000\u0000\u049b\u049c\u0005=\u0000\u0000\u049c\u00f1\u0001\u0000"+
+ "\u0000\u0000\u049d\u049e\u0005<\u0000\u0000\u049e\u00f3\u0001\u0000\u0000"+
+ "\u0000\u049f\u04a0\u0005<\u0000\u0000\u04a0\u04a1\u0005=\u0000\u0000\u04a1"+
+ "\u00f5\u0001\u0000\u0000\u0000\u04a2\u04a3\u0005>\u0000\u0000\u04a3\u00f7"+
+ "\u0001\u0000\u0000\u0000\u04a4\u04a5\u0005>\u0000\u0000\u04a5\u04a6\u0005"+
+ "=\u0000\u0000\u04a6\u00f9\u0001\u0000\u0000\u0000\u04a7\u04a8\u0005+\u0000"+
+ "\u0000\u04a8\u00fb\u0001\u0000\u0000\u0000\u04a9\u04aa\u0005-\u0000\u0000"+
+ "\u04aa\u00fd\u0001\u0000\u0000\u0000\u04ab\u04ac\u0005*\u0000\u0000\u04ac"+
+ "\u00ff\u0001\u0000\u0000\u0000\u04ad\u04ae\u0005/\u0000\u0000\u04ae\u0101"+
+ "\u0001\u0000\u0000\u0000\u04af\u04b0\u0005%\u0000\u0000\u04b0\u0103\u0001"+
+ "\u0000\u0000\u0000\u04b1\u04b2\u0005{\u0000\u0000\u04b2\u0105\u0001\u0000"+
+ "\u0000\u0000\u04b3\u04b4\u0005}\u0000\u0000\u04b4\u0107\u0001\u0000\u0000"+
+ "\u0000\u04b5\u04b6\u0003,\r\u0000\u04b6\u04b7\u0001\u0000\u0000\u0000"+
+ "\u04b7\u04b8\u0006{\"\u0000\u04b8\u0109\u0001\u0000\u0000\u0000\u04b9"+
+ "\u04bc\u0003\u00e6j\u0000\u04ba\u04bd\u0003\u00a8K\u0000\u04bb\u04bd\u0003"+
+ "\u00b6R\u0000\u04bc\u04ba\u0001\u0000\u0000\u0000\u04bc\u04bb\u0001\u0000"+
+ "\u0000\u0000\u04bd\u04c1\u0001\u0000\u0000\u0000\u04be\u04c0\u0003\u00b8"+
+ "S\u0000\u04bf\u04be\u0001\u0000\u0000\u0000\u04c0\u04c3\u0001\u0000\u0000"+
+ "\u0000\u04c1\u04bf\u0001\u0000\u0000\u0000\u04c1\u04c2\u0001\u0000\u0000"+
+ "\u0000\u04c2\u04cb\u0001\u0000\u0000\u0000\u04c3\u04c1\u0001\u0000\u0000"+
+ "\u0000\u04c4\u04c6\u0003\u00e6j\u0000\u04c5\u04c7\u0003\u00a6J\u0000\u04c6"+
+ "\u04c5\u0001\u0000\u0000\u0000\u04c7\u04c8\u0001\u0000\u0000\u0000\u04c8"+
+ "\u04c6\u0001\u0000\u0000\u0000\u04c8\u04c9\u0001\u0000\u0000\u0000\u04c9"+
+ "\u04cb\u0001\u0000\u0000\u0000\u04ca\u04b9\u0001\u0000\u0000\u0000\u04ca"+
+ "\u04c4\u0001\u0000\u0000\u0000\u04cb\u010b\u0001\u0000\u0000\u0000\u04cc"+
+ "\u04cd\u0005[\u0000\u0000\u04cd\u04ce\u0001\u0000\u0000\u0000\u04ce\u04cf"+
+ "\u0006}\u0004\u0000\u04cf\u04d0\u0006}\u0004\u0000\u04d0\u010d\u0001\u0000"+
+ "\u0000\u0000\u04d1\u04d2\u0005]\u0000\u0000\u04d2\u04d3\u0001\u0000\u0000"+
+ "\u0000\u04d3\u04d4\u0006~\u000f\u0000\u04d4\u04d5\u0006~\u000f\u0000\u04d5"+
+ "\u010f\u0001\u0000\u0000\u0000\u04d6\u04d7\u0005(\u0000\u0000\u04d7\u04d8"+
+ "\u0001\u0000\u0000\u0000\u04d8\u04d9\u0006\u007f\u0004\u0000\u04d9\u04da"+
+ "\u0006\u007f\u0004\u0000\u04da\u0111\u0001\u0000\u0000\u0000\u04db\u04dc"+
+ "\u0005)\u0000\u0000\u04dc\u04dd\u0001\u0000\u0000\u0000\u04dd\u04de\u0006"+
+ "\u0080\u000f\u0000\u04de\u04df\u0006\u0080\u000f\u0000\u04df\u0113\u0001"+
+ "\u0000\u0000\u0000\u04e0\u04e4\u0003\u00a8K\u0000\u04e1\u04e3\u0003\u00b8"+
+ "S\u0000\u04e2\u04e1\u0001\u0000\u0000\u0000\u04e3\u04e6\u0001\u0000\u0000"+
+ "\u0000\u04e4\u04e2\u0001\u0000\u0000\u0000\u04e4\u04e5\u0001\u0000\u0000"+
+ "\u0000\u04e5\u04f1\u0001\u0000\u0000\u0000\u04e6\u04e4\u0001\u0000\u0000"+
+ "\u0000\u04e7\u04ea\u0003\u00b6R\u0000\u04e8\u04ea\u0003\u00b0O\u0000\u04e9"+
+ "\u04e7\u0001\u0000\u0000\u0000\u04e9\u04e8\u0001\u0000\u0000\u0000\u04ea"+
+ "\u04ec\u0001\u0000\u0000\u0000\u04eb\u04ed\u0003\u00b8S\u0000\u04ec\u04eb"+
+ "\u0001\u0000\u0000\u0000\u04ed\u04ee\u0001\u0000\u0000\u0000\u04ee\u04ec"+
+ "\u0001\u0000\u0000\u0000\u04ee\u04ef\u0001\u0000\u0000\u0000\u04ef\u04f1"+
+ "\u0001\u0000\u0000\u0000\u04f0\u04e0\u0001\u0000\u0000\u0000\u04f0\u04e9"+
+ "\u0001\u0000\u0000\u0000\u04f1\u0115\u0001\u0000\u0000\u0000\u04f2\u04f4"+
+ "\u0003\u00b2P\u0000\u04f3\u04f5\u0003\u00b4Q\u0000\u04f4\u04f3\u0001\u0000"+
+ "\u0000\u0000\u04f5\u04f6\u0001\u0000\u0000\u0000\u04f6\u04f4\u0001\u0000"+
+ "\u0000\u0000\u04f6\u04f7\u0001\u0000\u0000\u0000\u04f7\u04f8\u0001\u0000"+
+ "\u0000\u0000\u04f8\u04f9\u0003\u00b2P\u0000\u04f9\u0117\u0001\u0000\u0000"+
+ "\u0000\u04fa\u04fb\u0003\u0116\u0082\u0000\u04fb\u0119\u0001\u0000\u0000"+
+ "\u0000\u04fc\u04fd\u0003\u0012\u0000\u0000\u04fd\u04fe\u0001\u0000\u0000"+
+ "\u0000\u04fe\u04ff\u0006\u0084\u0000\u0000\u04ff\u011b\u0001\u0000\u0000"+
+ "\u0000\u0500\u0501\u0003\u0014\u0001\u0000\u0501\u0502\u0001\u0000\u0000"+
+ "\u0000\u0502\u0503\u0006\u0085\u0000\u0000\u0503\u011d\u0001\u0000\u0000"+
+ "\u0000\u0504\u0505\u0003\u0016\u0002\u0000\u0505\u0506\u0001\u0000\u0000"+
+ "\u0000\u0506\u0507\u0006\u0086\u0000\u0000\u0507\u011f\u0001\u0000\u0000"+
+ "\u0000\u0508\u0509\u0003\u00a4I\u0000\u0509\u050a\u0001\u0000\u0000\u0000"+
+ "\u050a\u050b\u0006\u0087\u000e\u0000\u050b\u050c\u0006\u0087\u000f\u0000"+
+ "\u050c\u0121\u0001\u0000\u0000\u0000\u050d\u050e\u0003\u010c}\u0000\u050e"+
+ "\u050f\u0001\u0000\u0000\u0000\u050f\u0510\u0006\u0088\u0016\u0000\u0510"+
+ "\u0123\u0001\u0000\u0000\u0000\u0511\u0512\u0003\u010e~\u0000\u0512\u0513"+
+ "\u0001\u0000\u0000\u0000\u0513\u0514\u0006\u0089\u001f\u0000\u0514\u0125"+
+ "\u0001\u0000\u0000\u0000\u0515\u0516\u0003\u00ca\\\u0000\u0516\u0517\u0001"+
+ "\u0000\u0000\u0000\u0517\u0518\u0006\u008a \u0000\u0518\u0127\u0001\u0000"+
+ "\u0000\u0000\u0519\u051a\u0003\u00cc]\u0000\u051a\u051b\u0001\u0000\u0000"+
+ "\u0000\u051b\u051c\u0006\u008b\u0013\u0000\u051c\u0129\u0001\u0000\u0000"+
+ "\u0000\u051d\u051e\u0003\u00c6Z\u0000\u051e\u051f\u0001\u0000\u0000\u0000"+
+ "\u051f\u0520\u0006\u008c\u001a\u0000\u0520\u012b\u0001\u0000\u0000\u0000"+
+ "\u0521\u0522\u0007\u0013\u0000\u0000\u0522\u0523\u0007\u0007\u0000\u0000"+
+ "\u0523\u0524\u0007\u000b\u0000\u0000\u0524\u0525\u0007\u0004\u0000\u0000"+
+ "\u0525\u0526\u0007\u000f\u0000\u0000\u0526\u0527\u0007\u0004\u0000\u0000"+
+ "\u0527\u0528\u0007\u000b\u0000\u0000\u0528\u0529\u0007\u0004\u0000\u0000"+
+ "\u0529\u012d\u0001\u0000\u0000\u0000\u052a\u052e\b!\u0000\u0000\u052b"+
+ "\u052c\u0005/\u0000\u0000\u052c\u052e\b\"\u0000\u0000\u052d\u052a\u0001"+
+ "\u0000\u0000\u0000\u052d\u052b\u0001\u0000\u0000\u0000\u052e\u012f\u0001"+
+ "\u0000\u0000\u0000\u052f\u0531\u0003\u012e\u008e\u0000\u0530\u052f\u0001"+
+ "\u0000\u0000\u0000\u0531\u0532\u0001\u0000\u0000\u0000\u0532\u0530\u0001"+
+ "\u0000\u0000\u0000\u0532\u0533\u0001\u0000\u0000\u0000\u0533\u0131\u0001"+
+ "\u0000\u0000\u0000\u0534\u0535\u0003\u0130\u008f\u0000\u0535\u0536\u0001"+
+ "\u0000\u0000\u0000\u0536\u0537\u0006\u0090#\u0000\u0537\u0133\u0001\u0000"+
+ "\u0000\u0000\u0538\u0539\u0003\u00baT\u0000\u0539\u053a\u0001\u0000\u0000"+
+ "\u0000\u053a\u053b\u0006\u0091$\u0000\u053b\u0135\u0001\u0000\u0000\u0000"+
+ "\u053c\u053d\u0003\u0012\u0000\u0000\u053d\u053e\u0001\u0000\u0000\u0000"+
+ "\u053e\u053f\u0006\u0092\u0000\u0000\u053f\u0137\u0001\u0000\u0000\u0000"+
+ "\u0540\u0541\u0003\u0014\u0001\u0000\u0541\u0542\u0001\u0000\u0000\u0000"+
+ "\u0542\u0543\u0006\u0093\u0000\u0000\u0543\u0139\u0001\u0000\u0000\u0000"+
+ "\u0544\u0545\u0003\u0016\u0002\u0000\u0545\u0546\u0001\u0000\u0000\u0000"+
+ "\u0546\u0547\u0006\u0094\u0000\u0000\u0547\u013b\u0001\u0000\u0000\u0000"+
+ "\u0548\u0549\u0003\u0110\u007f\u0000\u0549\u054a\u0001\u0000\u0000\u0000"+
+ "\u054a\u054b\u0006\u0095%\u0000\u054b\u054c\u0006\u0095!\u0000\u054c\u013d"+
+ "\u0001\u0000\u0000\u0000\u054d\u054e\u0003\u00a4I\u0000\u054e\u054f\u0001"+
+ "\u0000\u0000\u0000\u054f\u0550\u0006\u0096\u000e\u0000\u0550\u0551\u0006"+
+ "\u0096\u000f\u0000\u0551\u013f\u0001\u0000\u0000\u0000\u0552\u0553\u0003"+
+ "\u0016\u0002\u0000\u0553\u0554\u0001\u0000\u0000\u0000\u0554\u0555\u0006"+
+ "\u0097\u0000\u0000\u0555\u0141\u0001\u0000\u0000\u0000\u0556\u0557\u0003"+
+ "\u0012\u0000\u0000\u0557\u0558\u0001\u0000\u0000\u0000\u0558\u0559\u0006"+
+ "\u0098\u0000\u0000\u0559\u0143\u0001\u0000\u0000\u0000\u055a\u055b\u0003"+
+ "\u0014\u0001\u0000\u055b\u055c\u0001\u0000\u0000\u0000\u055c\u055d\u0006"+
+ "\u0099\u0000\u0000\u055d\u0145\u0001\u0000\u0000\u0000\u055e\u055f\u0003"+
+ "\u00a4I\u0000\u055f\u0560\u0001\u0000\u0000\u0000\u0560\u0561\u0006\u009a"+
+ "\u000e\u0000\u0561\u0562\u0006\u009a\u000f\u0000\u0562\u0147\u0001\u0000"+
+ "\u0000\u0000\u0563\u0564\u0007#\u0000\u0000\u0564\u0565\u0007\t\u0000"+
+ "\u0000\u0565\u0566\u0007\n\u0000\u0000\u0566\u0567\u0007\u0005\u0000\u0000"+
+ "\u0567\u0149\u0001\u0000\u0000\u0000\u0568\u0569\u0003\u01d4\u00e1\u0000"+
+ "\u0569\u056a\u0001\u0000\u0000\u0000\u056a\u056b\u0006\u009c\u0011\u0000"+
+ "\u056b\u014b\u0001\u0000\u0000\u0000\u056c\u056d\u0003f*\u0000\u056d\u056e"+
+ "\u0001\u0000\u0000\u0000\u056e\u056f\u0006\u009d\u0010\u0000\u056f\u0570"+
+ "\u0006\u009d\u000f\u0000\u0570\u0571\u0006\u009d\u0004\u0000\u0571\u014d"+
+ "\u0001\u0000\u0000\u0000\u0572\u0573\u0007\u0016\u0000\u0000\u0573\u0574"+
+ "\u0007\u0010\u0000\u0000\u0574\u0575\u0007\n\u0000\u0000\u0575\u0576\u0007"+
+ "\u0005\u0000\u0000\u0576\u0577\u0007\u0006\u0000\u0000\u0577\u0578\u0001"+
+ "\u0000\u0000\u0000\u0578\u0579\u0006\u009e\u000f\u0000\u0579\u057a\u0006"+
+ "\u009e\u0004\u0000\u057a\u014f\u0001\u0000\u0000\u0000\u057b\u057c\u0003"+
+ "\u0130\u008f\u0000\u057c\u057d\u0001\u0000\u0000\u0000\u057d\u057e\u0006"+
+ "\u009f#\u0000\u057e\u0151\u0001\u0000\u0000\u0000\u057f\u0580\u0003\u00ba"+
+ "T\u0000\u0580\u0581\u0001\u0000\u0000\u0000\u0581\u0582\u0006\u00a0$\u0000"+
+ "\u0582\u0153\u0001\u0000\u0000\u0000\u0583\u0584\u0003\u00ca\\\u0000\u0584"+
+ "\u0585\u0001\u0000\u0000\u0000\u0585\u0586\u0006\u00a1 \u0000\u0586\u0155"+
+ "\u0001\u0000\u0000\u0000\u0587\u0588\u0003\u0114\u0081\u0000\u0588\u0589"+
+ "\u0001\u0000\u0000\u0000\u0589\u058a\u0006\u00a2\u0015\u0000\u058a\u0157"+
+ "\u0001\u0000\u0000\u0000\u058b\u058c\u0003\u0118\u0083\u0000\u058c\u058d"+
+ "\u0001\u0000\u0000\u0000\u058d\u058e\u0006\u00a3\u0014\u0000\u058e\u0159"+
+ "\u0001\u0000\u0000\u0000\u058f\u0590\u0003\u0012\u0000\u0000\u0590\u0591"+
+ "\u0001\u0000\u0000\u0000\u0591\u0592\u0006\u00a4\u0000\u0000\u0592\u015b"+
+ "\u0001\u0000\u0000\u0000\u0593\u0594\u0003\u0014\u0001\u0000\u0594\u0595"+
+ "\u0001\u0000\u0000\u0000\u0595\u0596\u0006\u00a5\u0000\u0000\u0596\u015d"+
+ "\u0001\u0000\u0000\u0000\u0597\u0598\u0003\u0016\u0002\u0000\u0598\u0599"+
+ "\u0001\u0000\u0000\u0000\u0599\u059a\u0006\u00a6\u0000\u0000\u059a\u015f"+
+ "\u0001\u0000\u0000\u0000\u059b\u059c\u0003\u00a4I\u0000\u059c\u059d\u0001"+
+ "\u0000\u0000\u0000\u059d\u059e\u0006\u00a7\u000e\u0000\u059e\u059f\u0006"+
+ "\u00a7\u000f\u0000\u059f\u0161\u0001\u0000\u0000\u0000\u05a0\u05a1\u0003"+
+ "\u00ca\\\u0000\u05a1\u05a2\u0001\u0000\u0000\u0000\u05a2\u05a3\u0006\u00a8"+
+ " \u0000\u05a3\u0163\u0001\u0000\u0000\u0000\u05a4\u05a5\u0003\u00cc]\u0000"+
+ "\u05a5\u05a6\u0001\u0000\u0000\u0000\u05a6\u05a7\u0006\u00a9\u0013\u0000"+
+ "\u05a7\u0165\u0001\u0000\u0000\u0000\u05a8\u05a9\u0003\u00d0_\u0000\u05a9"+
+ "\u05aa\u0001\u0000\u0000\u0000\u05aa\u05ab\u0006\u00aa\u0012\u0000\u05ab"+
+ "\u0167\u0001\u0000\u0000\u0000\u05ac\u05ad\u0003f*\u0000\u05ad\u05ae\u0001"+
+ "\u0000\u0000\u0000\u05ae\u05af\u0006\u00ab\u0010\u0000\u05af\u05b0\u0006"+
+ "\u00ab&\u0000\u05b0\u0169\u0001\u0000\u0000\u0000\u05b1\u05b2\u0003\u0130"+
+ "\u008f\u0000\u05b2\u05b3\u0001\u0000\u0000\u0000\u05b3\u05b4\u0006\u00ac"+
+ "#\u0000\u05b4\u016b\u0001\u0000\u0000\u0000\u05b5\u05b6\u0003\u00baT\u0000"+
+ "\u05b6\u05b7\u0001\u0000\u0000\u0000\u05b7\u05b8\u0006\u00ad$\u0000\u05b8"+
+ "\u016d\u0001\u0000\u0000\u0000\u05b9\u05ba\u0003\u0012\u0000\u0000\u05ba"+
+ "\u05bb\u0001\u0000\u0000\u0000\u05bb\u05bc\u0006\u00ae\u0000\u0000\u05bc"+
+ "\u016f\u0001\u0000\u0000\u0000\u05bd\u05be\u0003\u0014\u0001\u0000\u05be"+
+ "\u05bf\u0001\u0000\u0000\u0000\u05bf\u05c0\u0006\u00af\u0000\u0000\u05c0"+
+ "\u0171\u0001\u0000\u0000\u0000\u05c1\u05c2\u0003\u0016\u0002\u0000\u05c2"+
+ "\u05c3\u0001\u0000\u0000\u0000\u05c3\u05c4\u0006\u00b0\u0000\u0000\u05c4"+
+ "\u0173\u0001\u0000\u0000\u0000\u05c5\u05c6\u0003\u00a4I\u0000\u05c6\u05c7"+
+ "\u0001\u0000\u0000\u0000\u05c7\u05c8\u0006\u00b1\u000e\u0000\u05c8\u05c9"+
+ "\u0006\u00b1\u000f\u0000\u05c9\u05ca\u0006\u00b1\u000f\u0000\u05ca\u0175"+
+ "\u0001\u0000\u0000\u0000\u05cb\u05cc\u0003\u00cc]\u0000\u05cc\u05cd\u0001"+
+ "\u0000\u0000\u0000\u05cd\u05ce\u0006\u00b2\u0013\u0000\u05ce\u0177\u0001"+
+ "\u0000\u0000\u0000\u05cf\u05d0\u0003\u00d0_\u0000\u05d0\u05d1\u0001\u0000"+
+ "\u0000\u0000\u05d1\u05d2\u0006\u00b3\u0012\u0000\u05d2\u0179\u0001\u0000"+
+ "\u0000\u0000\u05d3\u05d4\u0003\u01c0\u00d7\u0000\u05d4\u05d5\u0001\u0000"+
+ "\u0000\u0000\u05d5\u05d6\u0006\u00b4\u001c\u0000\u05d6\u017b\u0001\u0000"+
+ "\u0000\u0000\u05d7\u05d8\u0003\u0012\u0000\u0000\u05d8\u05d9\u0001\u0000"+
+ "\u0000\u0000\u05d9\u05da\u0006\u00b5\u0000\u0000\u05da\u017d\u0001\u0000"+
+ "\u0000\u0000\u05db\u05dc\u0003\u0014\u0001\u0000\u05dc\u05dd\u0001\u0000"+
+ "\u0000\u0000\u05dd\u05de\u0006\u00b6\u0000\u0000\u05de\u017f\u0001\u0000"+
+ "\u0000\u0000\u05df\u05e0\u0003\u0016\u0002\u0000\u05e0\u05e1\u0001\u0000"+
+ "\u0000\u0000\u05e1\u05e2\u0006\u00b7\u0000\u0000\u05e2\u0181\u0001\u0000"+
+ "\u0000\u0000\u05e3\u05e4\u0003\u00a4I\u0000\u05e4\u05e5\u0001\u0000\u0000"+
+ "\u0000\u05e5\u05e6\u0006\u00b8\u000e\u0000\u05e6\u05e7\u0006\u00b8\u000f"+
+ "\u0000\u05e7\u0183\u0001\u0000\u0000\u0000\u05e8\u05e9\u0003\u0130\u008f"+
+ "\u0000\u05e9\u05ea\u0001\u0000\u0000\u0000\u05ea\u05eb\u0006\u00b9#\u0000"+
+ "\u05eb\u05ec\u0006\u00b9\u000f\u0000\u05ec\u05ed\u0006\u00b9\'\u0000\u05ed"+
+ "\u0185\u0001\u0000\u0000\u0000\u05ee\u05ef\u0003\u00baT\u0000\u05ef\u05f0"+
+ "\u0001\u0000\u0000\u0000\u05f0\u05f1\u0006\u00ba$\u0000\u05f1\u05f2\u0006"+
+ "\u00ba\u000f\u0000\u05f2\u05f3\u0006\u00ba\'\u0000\u05f3\u0187\u0001\u0000"+
+ "\u0000\u0000\u05f4\u05f5\u0003\u0012\u0000\u0000\u05f5\u05f6\u0001\u0000"+
+ "\u0000\u0000\u05f6\u05f7\u0006\u00bb\u0000\u0000\u05f7\u0189\u0001\u0000"+
+ "\u0000\u0000\u05f8\u05f9\u0003\u0014\u0001\u0000\u05f9\u05fa\u0001\u0000"+
+ "\u0000\u0000\u05fa\u05fb\u0006\u00bc\u0000\u0000\u05fb\u018b\u0001\u0000"+
+ "\u0000\u0000\u05fc\u05fd\u0003\u0016\u0002\u0000\u05fd\u05fe\u0001\u0000"+
+ "\u0000\u0000\u05fe\u05ff\u0006\u00bd\u0000\u0000\u05ff\u018d\u0001\u0000"+
+ "\u0000\u0000\u0600\u0601\u0003\u00ca\\\u0000\u0601\u0602\u0001\u0000\u0000"+
+ "\u0000\u0602\u0603\u0006\u00be \u0000\u0603\u0604\u0006\u00be\u000f\u0000"+
+ "\u0604\u0605\u0006\u00be\t\u0000\u0605\u018f\u0001\u0000\u0000\u0000\u0606"+
+ "\u0607\u0003\u00cc]\u0000\u0607\u0608\u0001\u0000\u0000\u0000\u0608\u0609"+
+ "\u0006\u00bf\u0013\u0000\u0609\u060a\u0006\u00bf\u000f\u0000\u060a\u060b"+
+ "\u0006\u00bf\t\u0000\u060b\u0191\u0001\u0000\u0000\u0000\u060c\u060d\u0003"+
+ "\u0012\u0000\u0000\u060d\u060e\u0001\u0000\u0000\u0000\u060e\u060f\u0006"+
+ "\u00c0\u0000\u0000\u060f\u0193\u0001\u0000\u0000\u0000\u0610\u0611\u0003"+
+ "\u0014\u0001\u0000\u0611\u0612\u0001\u0000\u0000\u0000\u0612\u0613\u0006"+
+ "\u00c1\u0000\u0000\u0613\u0195\u0001\u0000\u0000\u0000\u0614\u0615\u0003"+
+ "\u0016\u0002\u0000\u0615\u0616\u0001\u0000\u0000\u0000\u0616\u0617\u0006"+
+ "\u00c2\u0000\u0000\u0617\u0197\u0001\u0000\u0000\u0000\u0618\u0619\u0003"+
+ "\u0118\u0083\u0000\u0619\u061a\u0001\u0000\u0000\u0000\u061a\u061b\u0006"+
+ "\u00c3\u000f\u0000\u061b\u061c\u0006\u00c3\u0004\u0000\u061c\u061d\u0006"+
+ "\u00c3\u0014\u0000\u061d\u0199\u0001\u0000\u0000\u0000\u061e\u061f\u0003"+
+ "\u0114\u0081\u0000\u061f\u0620\u0001\u0000\u0000\u0000\u0620\u0621\u0006"+
+ "\u00c4\u000f\u0000\u0621\u0622\u0006\u00c4\u0004\u0000\u0622\u0623\u0006"+
+ "\u00c4\u0015\u0000\u0623\u019b\u0001\u0000\u0000\u0000\u0624\u0625\u0003"+
+ "\u00c0W\u0000\u0625\u0626\u0001\u0000\u0000\u0000\u0626\u0627\u0006\u00c5"+
+ "\u000f\u0000\u0627\u0628\u0006\u00c5\u0004\u0000\u0628\u0629\u0006\u00c5"+
+ "(\u0000\u0629\u019d\u0001\u0000\u0000\u0000\u062a\u062b\u0003\u00a4I\u0000"+
+ "\u062b\u062c\u0001\u0000\u0000\u0000\u062c\u062d\u0006\u00c6\u000e\u0000"+
+ "\u062d\u062e\u0006\u00c6\u000f\u0000\u062e\u019f\u0001\u0000\u0000\u0000"+
+ "\u062f\u0630\u0003\u00a4I\u0000\u0630\u0631\u0001\u0000\u0000\u0000\u0631"+
+ "\u0632\u0006\u00c7\u000e\u0000\u0632\u0633\u0006\u00c7\u000f\u0000\u0633"+
+ "\u01a1\u0001\u0000\u0000\u0000\u0634\u0635\u0003\u00d0_\u0000\u0635\u0636"+
+ "\u0001\u0000\u0000\u0000\u0636\u0637\u0006\u00c8\u0012\u0000\u0637\u01a3"+
+ "\u0001\u0000\u0000\u0000\u0638\u0639\u0003\u00e6j\u0000\u0639\u063a\u0001"+
+ "\u0000\u0000\u0000\u063a\u063b\u0006\u00c9\u001d\u0000\u063b\u01a5\u0001"+
+ "\u0000\u0000\u0000\u063c\u063d\u0003\u010a|\u0000\u063d\u063e\u0001\u0000"+
+ "\u0000\u0000\u063e\u063f\u0006\u00ca\u001e\u0000\u063f\u01a7\u0001\u0000"+
+ "\u0000\u0000\u0640\u0641\u0003\u0118\u0083\u0000\u0641\u0642\u0001\u0000"+
+ "\u0000\u0000\u0642\u0643\u0006\u00cb\u0014\u0000\u0643\u01a9\u0001\u0000"+
+ "\u0000\u0000\u0644\u0645\u0003\u0114\u0081\u0000\u0645\u0646\u0001\u0000"+
+ "\u0000\u0000\u0646\u0647\u0006\u00cc\u0015\u0000\u0647\u01ab\u0001\u0000"+
+ "\u0000\u0000\u0648\u0649\u0003\u0012\u0000\u0000\u0649\u064a\u0001\u0000"+
+ "\u0000\u0000\u064a\u064b\u0006\u00cd\u0000\u0000\u064b\u01ad\u0001\u0000"+
+ "\u0000\u0000\u064c\u064d\u0003\u0014\u0001\u0000\u064d\u064e\u0001\u0000"+
+ "\u0000\u0000\u064e\u064f\u0006\u00ce\u0000\u0000\u064f\u01af\u0001\u0000"+
+ "\u0000\u0000\u0650\u0651\u0003\u0016\u0002\u0000\u0651\u0652\u0001\u0000"+
+ "\u0000\u0000\u0652\u0653\u0006\u00cf\u0000\u0000\u0653\u01b1\u0001\u0000"+
+ "\u0000\u0000\u0654\u0655\u0003\u00a4I\u0000\u0655\u0656\u0001\u0000\u0000"+
+ "\u0000\u0656\u0657\u0006\u00d0\u000e\u0000\u0657\u0658\u0006\u00d0\u000f"+
+ "\u0000\u0658\u01b3\u0001\u0000\u0000\u0000\u0659\u065a\u0003\u00d0_\u0000"+
+ "\u065a\u065b\u0001\u0000\u0000\u0000\u065b\u065c\u0006\u00d1\u0012\u0000"+
+ "\u065c\u01b5\u0001\u0000\u0000\u0000\u065d\u065e\u0003\u00cc]\u0000\u065e"+
+ "\u065f\u0001\u0000\u0000\u0000\u065f\u0660\u0006\u00d2\u0013\u0000\u0660"+
+ "\u01b7\u0001\u0000\u0000\u0000\u0661\u0662\u0003\u00e6j\u0000\u0662\u0663"+
+ "\u0001\u0000\u0000\u0000\u0663\u0664\u0006\u00d3\u001d\u0000\u0664\u01b9"+
+ "\u0001\u0000\u0000\u0000\u0665\u0666\u0003\u010a|\u0000\u0666\u0667\u0001"+
+ "\u0000\u0000\u0000\u0667\u0668\u0006\u00d4\u001e\u0000\u0668\u01bb\u0001"+
+ "\u0000\u0000\u0000\u0669\u066e\u0003\u00a8K\u0000\u066a\u066e\u0003\u00a6"+
+ "J\u0000\u066b\u066e\u0003\u00b6R\u0000\u066c\u066e\u0003\u00fev\u0000"+
+ "\u066d\u0669\u0001\u0000\u0000\u0000\u066d\u066a\u0001\u0000\u0000\u0000"+
+ "\u066d\u066b\u0001\u0000\u0000\u0000\u066d\u066c\u0001\u0000\u0000\u0000"+
+ "\u066e\u01bd\u0001\u0000\u0000\u0000\u066f\u0672\u0003\u00a8K\u0000\u0670"+
+ "\u0672\u0003\u00fev\u0000\u0671\u066f\u0001\u0000\u0000\u0000\u0671\u0670"+
+ "\u0001\u0000\u0000\u0000\u0672\u0676\u0001\u0000\u0000\u0000\u0673\u0675"+
+ "\u0003\u01bc\u00d5\u0000\u0674\u0673\u0001\u0000\u0000\u0000\u0675\u0678"+
+ "\u0001\u0000\u0000\u0000\u0676\u0674\u0001\u0000\u0000\u0000\u0676\u0677"+
+ "\u0001\u0000\u0000\u0000\u0677\u0683\u0001\u0000\u0000\u0000\u0678\u0676"+
+ "\u0001\u0000\u0000\u0000\u0679\u067c\u0003\u00b6R\u0000\u067a\u067c\u0003"+
+ "\u00b0O\u0000\u067b\u0679\u0001\u0000\u0000\u0000\u067b\u067a\u0001\u0000"+
+ "\u0000\u0000\u067c\u067e\u0001\u0000\u0000\u0000\u067d\u067f\u0003\u01bc"+
+ "\u00d5\u0000\u067e\u067d\u0001\u0000\u0000\u0000\u067f\u0680\u0001\u0000"+
+ "\u0000\u0000\u0680\u067e\u0001\u0000\u0000\u0000\u0680\u0681\u0001\u0000"+
+ "\u0000\u0000\u0681\u0683\u0001\u0000\u0000\u0000\u0682\u0671\u0001\u0000"+
+ "\u0000\u0000\u0682\u067b\u0001\u0000\u0000\u0000\u0683\u01bf\u0001\u0000"+
+ "\u0000\u0000\u0684\u0687\u0003\u01be\u00d6\u0000\u0685\u0687\u0003\u0116"+
+ "\u0082\u0000\u0686\u0684\u0001\u0000\u0000\u0000\u0686\u0685\u0001\u0000"+
+ "\u0000\u0000\u0687\u0688\u0001\u0000\u0000\u0000\u0688\u0686\u0001\u0000"+
+ "\u0000\u0000\u0688\u0689\u0001\u0000\u0000\u0000\u0689\u01c1\u0001\u0000"+
+ "\u0000\u0000\u068a\u068b\u0003\u0012\u0000\u0000\u068b\u068c\u0001\u0000"+
+ "\u0000\u0000\u068c\u068d\u0006\u00d8\u0000\u0000\u068d\u01c3\u0001\u0000"+
+ "\u0000\u0000\u068e\u068f\u0003\u0014\u0001\u0000\u068f\u0690\u0001\u0000"+
+ "\u0000\u0000\u0690\u0691\u0006\u00d9\u0000\u0000\u0691\u01c5\u0001\u0000"+
+ "\u0000\u0000\u0692\u0693\u0003\u0016\u0002\u0000\u0693\u0694\u0001\u0000"+
+ "\u0000\u0000\u0694\u0695\u0006\u00da\u0000\u0000\u0695\u01c7\u0001\u0000"+
+ "\u0000\u0000\u0696\u0697\u0003\u00a4I\u0000\u0697\u0698\u0001\u0000\u0000"+
+ "\u0000\u0698\u0699\u0006\u00db\u000e\u0000\u0699\u069a\u0006\u00db\u000f"+
+ "\u0000\u069a\u01c9\u0001\u0000\u0000\u0000\u069b\u069c\u0003\u00c6Z\u0000"+
+ "\u069c\u069d\u0001\u0000\u0000\u0000\u069d\u069e\u0006\u00dc\u001a\u0000"+
+ "\u069e\u01cb\u0001\u0000\u0000\u0000\u069f\u06a0\u0003\u00cc]\u0000\u06a0"+
+ "\u06a1\u0001\u0000\u0000\u0000\u06a1\u06a2\u0006\u00dd\u0013\u0000\u06a2"+
+ "\u01cd\u0001\u0000\u0000\u0000\u06a3\u06a4\u0003\u00d0_\u0000\u06a4\u06a5"+
+ "\u0001\u0000\u0000\u0000\u06a5\u06a6\u0006\u00de\u0012\u0000\u06a6\u01cf"+
+ "\u0001\u0000\u0000\u0000\u06a7\u06a8\u0003\u00e6j\u0000\u06a8\u06a9\u0001"+
+ "\u0000\u0000\u0000\u06a9\u06aa\u0006\u00df\u001d\u0000\u06aa\u01d1\u0001"+
+ "\u0000\u0000\u0000\u06ab\u06ac\u0003\u010a|\u0000\u06ac\u06ad\u0001\u0000"+
+ "\u0000\u0000\u06ad\u06ae\u0006\u00e0\u001e\u0000\u06ae\u01d3\u0001\u0000"+
+ "\u0000\u0000\u06af\u06b0\u0007\u0004\u0000\u0000\u06b0\u06b1\u0007\u0010"+
+ "\u0000\u0000\u06b1\u01d5\u0001\u0000\u0000\u0000\u06b2\u06b3\u0003\u01c0"+
+ "\u00d7\u0000\u06b3\u06b4\u0001\u0000\u0000\u0000\u06b4\u06b5\u0006\u00e2"+
+ "\u001c\u0000\u06b5\u01d7\u0001\u0000\u0000\u0000\u06b6\u06b7\u0003\u0012"+
+ "\u0000\u0000\u06b7\u06b8\u0001\u0000\u0000\u0000\u06b8\u06b9\u0006\u00e3"+
+ "\u0000\u0000\u06b9\u01d9\u0001\u0000\u0000\u0000\u06ba\u06bb\u0003\u0014"+
+ "\u0001\u0000\u06bb\u06bc\u0001\u0000\u0000\u0000\u06bc\u06bd\u0006\u00e4"+
+ "\u0000\u0000\u06bd\u01db\u0001\u0000\u0000\u0000\u06be\u06bf\u0003\u0016"+
+ "\u0002\u0000\u06bf\u06c0\u0001\u0000\u0000\u0000\u06c0\u06c1\u0006\u00e5"+
+ "\u0000\u0000\u06c1\u01dd\u0001\u0000\u0000\u0000\u06c2\u06c3\u0003\u00a4"+
+ "I\u0000\u06c3\u06c4\u0001\u0000\u0000\u0000\u06c4\u06c5\u0006\u00e6\u000e"+
+ "\u0000\u06c5\u06c6\u0006\u00e6\u000f\u0000\u06c6\u01df\u0001\u0000\u0000"+
+ "\u0000\u06c7\u06c8\u0007\n\u0000\u0000\u06c8\u06c9\u0007\u0005\u0000\u0000"+
+ "\u06c9\u06ca\u0007\u0015\u0000\u0000\u06ca\u06cb\u0007\t\u0000\u0000\u06cb"+
+ "\u01e1\u0001\u0000\u0000\u0000\u06cc\u06cd\u0003\u0012\u0000\u0000\u06cd"+
+ "\u06ce\u0001\u0000\u0000\u0000\u06ce\u06cf\u0006\u00e8\u0000\u0000\u06cf"+
+ "\u01e3\u0001\u0000\u0000\u0000\u06d0\u06d1\u0003\u0014\u0001\u0000\u06d1"+
+ "\u06d2\u0001\u0000\u0000\u0000\u06d2\u06d3\u0006\u00e9\u0000\u0000\u06d3"+
+ "\u01e5\u0001\u0000\u0000\u0000\u06d4\u06d5\u0003\u0016\u0002\u0000\u06d5"+
+ "\u06d6\u0001\u0000\u0000\u0000\u06d6\u06d7\u0006\u00ea\u0000\u0000\u06d7"+
+ "\u01e7\u0001\u0000\u0000\u0000D\u0000\u0001\u0002\u0003\u0004\u0005\u0006"+
+ "\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u01ee\u01f2\u01f5\u01fe"+
+ "\u0200\u020b\u02ff\u0347\u034b\u0350\u03a2\u03a4\u03d7\u03dc\u03e5\u03ec"+
+ "\u03f1\u03f3\u03fe\u0406\u0409\u040b\u0410\u0415\u041b\u0422\u0427\u042d"+
+ "\u0430\u0438\u043c\u04bc\u04c1\u04c8\u04ca\u04e4\u04e9\u04ee\u04f0\u04f6"+
+ "\u052d\u0532\u066d\u0671\u0676\u067b\u0680\u0682\u0686\u0688)\u0000\u0001"+
+ "\u0000\u0005\u0001\u0000\u0005\u0002\u0000\u0005\u0005\u0000\u0005\u0006"+
+ "\u0000\u0005\u0007\u0000\u0005\b\u0000\u0005\t\u0000\u0005\n\u0000\u0005"+
+ "\f\u0000\u0005\u000e\u0000\u0005\u000f\u0000\u0005\u0010\u0000\u0005\u0011"+
+ "\u0000\u00072\u0000\u0004\u0000\u0000\u0007\"\u0000\u0007\u0084\u0000"+
+ "\u0007>\u0000\u0007<\u0000\u0007`\u0000\u0007_\u0000\u0007[\u0000\u0005"+
+ "\u0004\u0000\u0005\u0003\u0000\u0007$\u0000\u00079\u0000\u0007#\u0000"+
+ "\u0007\u0080\u0000\u0007I\u0000\u0007Z\u0000\u0007\\\u0000\u0007;\u0000"+
+ "\u0005\u0000\u0000\u0007\u000e\u0000\u0007e\u0000\u00073\u0000\u0007]"+
+ "\u0000\u0005\u000b\u0000\u0005\r\u0000\u00076\u0000";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp
index c0b1e8c308d6..20ff9728c1e8 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp
@@ -1,27 +1,46 @@
token literal names:
null
-'dissect'
-'drop'
+null
+null
+null
+null
'enrich'
-'eval'
'explain'
-'from'
+'dissect'
+'eval'
'grok'
-'keep'
'limit'
-'mv_expand'
-'rename'
'row'
-'show'
'sort'
'stats'
'where'
+null
+'from'
+null
'lookup'
null
null
null
null
null
+'mv_expand'
+'drop'
+'keep'
+null
+'rename'
+'show'
+null
+null
+null
+null
+'on'
+'with'
+null
+null
+null
+null
+null
+null
null
null
null
@@ -80,9 +99,6 @@ null
null
null
null
-null
-null
-null
'metadata'
null
null
@@ -91,37 +107,6 @@ null
null
null
null
-null
-'as'
-null
-null
-null
-'on'
-'with'
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-'info'
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
-null
'join'
'USING'
null
@@ -142,39 +127,70 @@ null
null
null
null
+null
+null
+null
+null
+'as'
+null
+null
+null
+'info'
+null
+null
+null
token symbolic names:
null
-DISSECT
-DROP
-ENRICH
-EVAL
-EXPLAIN
-FROM
-GROK
-KEEP
-LIMIT
-MV_EXPAND
-RENAME
-ROW
-SHOW
-SORT
-STATS
-WHERE
-JOIN_LOOKUP
-DEV_CHANGE_POINT
-DEV_INLINESTATS
-DEV_INSIST
-DEV_LOOKUP
-DEV_METRICS
-DEV_JOIN_FULL
-DEV_JOIN_LEFT
-DEV_JOIN_RIGHT
-DEV_FORK
-UNKNOWN_CMD
LINE_COMMENT
MULTILINE_COMMENT
WS
+DEV_CHANGE_POINT
+ENRICH
+EXPLAIN
+DISSECT
+EVAL
+GROK
+LIMIT
+ROW
+SORT
+STATS
+WHERE
+DEV_INLINESTATS
+FROM
+DEV_FORK
+JOIN_LOOKUP
+DEV_JOIN_FULL
+DEV_JOIN_LEFT
+DEV_JOIN_RIGHT
+DEV_LOOKUP
+DEV_METRICS
+MV_EXPAND
+DROP
+KEEP
+DEV_INSIST
+RENAME
+SHOW
+UNKNOWN_CMD
+CHANGE_POINT_LINE_COMMENT
+CHANGE_POINT_MULTILINE_COMMENT
+CHANGE_POINT_WS
+ON
+WITH
+ENRICH_POLICY_NAME
+ENRICH_LINE_COMMENT
+ENRICH_MULTILINE_COMMENT
+ENRICH_WS
+ENRICH_FIELD_LINE_COMMENT
+ENRICH_FIELD_MULTILINE_COMMENT
+ENRICH_FIELD_WS
+SETTING
+SETTING_LINE_COMMENT
+SETTTING_MULTILINE_COMMENT
+SETTING_WS
+EXPLAIN_WS
+EXPLAIN_LINE_COMMENT
+EXPLAIN_MULTILINE_COMMENT
PIPE
QUOTED_STRING
INTEGER_LITERAL
@@ -225,14 +241,34 @@ QUOTED_IDENTIFIER
EXPR_LINE_COMMENT
EXPR_MULTILINE_COMMENT
EXPR_WS
-EXPLAIN_WS
-EXPLAIN_LINE_COMMENT
-EXPLAIN_MULTILINE_COMMENT
METADATA
UNQUOTED_SOURCE
FROM_LINE_COMMENT
FROM_MULTILINE_COMMENT
FROM_WS
+FORK_WS
+FORK_LINE_COMMENT
+FORK_MULTILINE_COMMENT
+JOIN
+USING
+JOIN_LINE_COMMENT
+JOIN_MULTILINE_COMMENT
+JOIN_WS
+LOOKUP_LINE_COMMENT
+LOOKUP_MULTILINE_COMMENT
+LOOKUP_WS
+LOOKUP_FIELD_LINE_COMMENT
+LOOKUP_FIELD_MULTILINE_COMMENT
+LOOKUP_FIELD_WS
+METRICS_LINE_COMMENT
+METRICS_MULTILINE_COMMENT
+METRICS_WS
+CLOSING_METRICS_LINE_COMMENT
+CLOSING_METRICS_MULTILINE_COMMENT
+CLOSING_METRICS_WS
+MVEXPAND_LINE_COMMENT
+MVEXPAND_MULTILINE_COMMENT
+MVEXPAND_WS
ID_PATTERN
PROJECT_LINE_COMMENT
PROJECT_MULTILINE_COMMENT
@@ -241,52 +277,10 @@ AS
RENAME_LINE_COMMENT
RENAME_MULTILINE_COMMENT
RENAME_WS
-ON
-WITH
-ENRICH_POLICY_NAME
-ENRICH_LINE_COMMENT
-ENRICH_MULTILINE_COMMENT
-ENRICH_WS
-ENRICH_FIELD_LINE_COMMENT
-ENRICH_FIELD_MULTILINE_COMMENT
-ENRICH_FIELD_WS
-MVEXPAND_LINE_COMMENT
-MVEXPAND_MULTILINE_COMMENT
-MVEXPAND_WS
INFO
SHOW_LINE_COMMENT
SHOW_MULTILINE_COMMENT
SHOW_WS
-SETTING
-SETTING_LINE_COMMENT
-SETTTING_MULTILINE_COMMENT
-SETTING_WS
-LOOKUP_LINE_COMMENT
-LOOKUP_MULTILINE_COMMENT
-LOOKUP_WS
-LOOKUP_FIELD_LINE_COMMENT
-LOOKUP_FIELD_MULTILINE_COMMENT
-LOOKUP_FIELD_WS
-JOIN
-USING
-JOIN_LINE_COMMENT
-JOIN_MULTILINE_COMMENT
-JOIN_WS
-METRICS_LINE_COMMENT
-METRICS_MULTILINE_COMMENT
-METRICS_WS
-CLOSING_METRICS_LINE_COMMENT
-CLOSING_METRICS_MULTILINE_COMMENT
-CLOSING_METRICS_WS
-CHANGE_POINT_LINE_COMMENT
-CHANGE_POINT_MULTILINE_COMMENT
-CHANGE_POINT_WS
-INSIST_WS
-INSIST_LINE_COMMENT
-INSIST_MULTILINE_COMMENT
-FORK_WS
-FORK_LINE_COMMENT
-FORK_MULTILINE_COMMENT
rule names:
singleStatement
@@ -294,16 +288,6 @@ query
sourceCommand
processingCommand
whereCommand
-booleanExpression
-regexBooleanExpression
-matchBooleanExpression
-valueExpression
-operatorExpression
-primaryExpression
-functionExpression
-functionName
-mapExpression
-entryExpression
dataType
rowCommand
fields
@@ -323,7 +307,6 @@ qualifiedNamePattern
qualifiedNamePatterns
identifier
identifierPattern
-constant
parameter
identifierOrParameter
limitCommand
@@ -338,12 +321,6 @@ grokCommand
mvExpandCommand
commandOptions
commandOption
-booleanValue
-numericValue
-decimalValue
-integerValue
-string
-comparisonOperator
explainCommand
subqueryExpression
showCommand
@@ -351,10 +328,6 @@ enrichCommand
enrichWithClause
lookupCommand
inlinestatsCommand
-joinCommand
-joinTarget
-joinCondition
-joinPredicate
changePointCommand
insistCommand
forkCommand
@@ -362,7 +335,28 @@ forkSubQueries
forkSubQuery
forkSubQueryCommand
forkSubQueryProcessingCommand
+booleanExpression
+regexBooleanExpression
+matchBooleanExpression
+valueExpression
+operatorExpression
+primaryExpression
+functionExpression
+functionName
+mapExpression
+entryExpression
+constant
+booleanValue
+numericValue
+decimalValue
+integerValue
+string
+comparisonOperator
+joinCommand
+joinTarget
+joinCondition
+joinPredicate
atn:
-[4, 1, 142, 706, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 156, 8, 1, 10, 1, 12, 1, 159, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 167, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 192, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 204, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 211, 8, 5, 10, 5, 12, 5, 214, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 221, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 226, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 234, 8, 5, 10, 5, 12, 5, 237, 9, 5, 1, 6, 1, 6, 3, 6, 241, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 248, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 253, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 258, 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 268, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 274, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 282, 8, 9, 10, 9, 12, 9, 285, 9, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 295, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 300, 8, 10, 10, 10, 12, 10, 303, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 311, 8, 11, 10, 11, 12, 11, 314, 9, 11, 1, 11, 1, 11, 3, 11, 318, 8, 11, 3, 11, 320, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 330, 8, 13, 10, 13, 12, 13, 333, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 349, 8, 17, 10, 17, 12, 17, 352, 9, 17, 1, 18, 1, 18, 1, 18, 3, 18, 357, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 365, 8, 19, 10, 19, 12, 19, 368, 9, 19, 1, 19, 3, 19, 371, 8, 19, 1, 20, 1, 20, 1, 20, 3, 20, 376, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 388, 8, 23, 10, 23, 12, 23, 391, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 397, 8, 24, 10, 24, 12, 24, 400, 9, 24, 1, 24, 3, 24, 403, 8, 24, 1, 24, 1, 24, 3, 24, 407, 8, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 414, 8, 26, 1, 26, 1, 26, 3, 26, 418, 8, 26, 1, 27, 1, 27, 1, 27, 5, 27, 423, 8, 27, 10, 27, 12, 27, 426, 9, 27, 1, 28, 1, 28, 1, 28, 3, 28, 431, 8, 28, 1, 29, 1, 29, 1, 29, 5, 29, 436, 8, 29, 10, 29, 12, 29, 439, 9, 29, 1, 30, 1, 30, 1, 30, 5, 30, 444, 8, 30, 10, 30, 12, 30, 447, 9, 30, 1, 31, 1, 31, 1, 31, 5, 31, 452, 8, 31, 10, 31, 12, 31, 455, 9, 31, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 461, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 476, 8, 34, 10, 34, 12, 34, 479, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 487, 8, 34, 10, 34, 12, 34, 490, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 498, 8, 34, 10, 34, 12, 34, 501, 9, 34, 1, 34, 1, 34, 3, 34, 505, 8, 34, 1, 35, 1, 35, 3, 35, 509, 8, 35, 1, 36, 1, 36, 3, 36, 513, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 522, 8, 38, 10, 38, 12, 38, 525, 9, 38, 1, 39, 1, 39, 3, 39, 529, 8, 39, 1, 39, 1, 39, 3, 39, 533, 8, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 545, 8, 42, 10, 42, 12, 42, 548, 9, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 558, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 5, 47, 570, 8, 47, 10, 47, 12, 47, 573, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 3, 50, 583, 8, 50, 1, 51, 3, 51, 586, 8, 51, 1, 51, 1, 51, 1, 52, 3, 52, 591, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 613, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 619, 8, 58, 10, 58, 12, 58, 622, 9, 58, 3, 58, 624, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 629, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 642, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 655, 8, 64, 10, 64, 12, 64, 658, 9, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 666, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 673, 8, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 4, 69, 682, 8, 69, 11, 69, 12, 69, 683, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 696, 8, 71, 10, 71, 12, 71, 699, 9, 71, 1, 72, 1, 72, 1, 72, 3, 72, 704, 8, 72, 1, 72, 0, 5, 2, 10, 18, 20, 142, 73, 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, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 0, 9, 1, 0, 64, 65, 1, 0, 66, 68, 2, 0, 32, 32, 85, 85, 1, 0, 76, 77, 2, 0, 37, 37, 42, 42, 2, 0, 45, 45, 48, 48, 2, 0, 44, 44, 56, 56, 2, 0, 57, 57, 59, 63, 2, 0, 17, 17, 24, 25, 733, 0, 146, 1, 0, 0, 0, 2, 149, 1, 0, 0, 0, 4, 166, 1, 0, 0, 0, 6, 191, 1, 0, 0, 0, 8, 193, 1, 0, 0, 0, 10, 225, 1, 0, 0, 0, 12, 252, 1, 0, 0, 0, 14, 254, 1, 0, 0, 0, 16, 267, 1, 0, 0, 0, 18, 273, 1, 0, 0, 0, 20, 294, 1, 0, 0, 0, 22, 304, 1, 0, 0, 0, 24, 323, 1, 0, 0, 0, 26, 325, 1, 0, 0, 0, 28, 336, 1, 0, 0, 0, 30, 340, 1, 0, 0, 0, 32, 342, 1, 0, 0, 0, 34, 345, 1, 0, 0, 0, 36, 356, 1, 0, 0, 0, 38, 360, 1, 0, 0, 0, 40, 375, 1, 0, 0, 0, 42, 379, 1, 0, 0, 0, 44, 381, 1, 0, 0, 0, 46, 383, 1, 0, 0, 0, 48, 392, 1, 0, 0, 0, 50, 408, 1, 0, 0, 0, 52, 411, 1, 0, 0, 0, 54, 419, 1, 0, 0, 0, 56, 427, 1, 0, 0, 0, 58, 432, 1, 0, 0, 0, 60, 440, 1, 0, 0, 0, 62, 448, 1, 0, 0, 0, 64, 456, 1, 0, 0, 0, 66, 460, 1, 0, 0, 0, 68, 504, 1, 0, 0, 0, 70, 508, 1, 0, 0, 0, 72, 512, 1, 0, 0, 0, 74, 514, 1, 0, 0, 0, 76, 517, 1, 0, 0, 0, 78, 526, 1, 0, 0, 0, 80, 534, 1, 0, 0, 0, 82, 537, 1, 0, 0, 0, 84, 540, 1, 0, 0, 0, 86, 549, 1, 0, 0, 0, 88, 553, 1, 0, 0, 0, 90, 559, 1, 0, 0, 0, 92, 563, 1, 0, 0, 0, 94, 566, 1, 0, 0, 0, 96, 574, 1, 0, 0, 0, 98, 578, 1, 0, 0, 0, 100, 582, 1, 0, 0, 0, 102, 585, 1, 0, 0, 0, 104, 590, 1, 0, 0, 0, 106, 594, 1, 0, 0, 0, 108, 596, 1, 0, 0, 0, 110, 598, 1, 0, 0, 0, 112, 601, 1, 0, 0, 0, 114, 605, 1, 0, 0, 0, 116, 608, 1, 0, 0, 0, 118, 628, 1, 0, 0, 0, 120, 632, 1, 0, 0, 0, 122, 637, 1, 0, 0, 0, 124, 643, 1, 0, 0, 0, 126, 648, 1, 0, 0, 0, 128, 650, 1, 0, 0, 0, 130, 659, 1, 0, 0, 0, 132, 661, 1, 0, 0, 0, 134, 674, 1, 0, 0, 0, 136, 677, 1, 0, 0, 0, 138, 681, 1, 0, 0, 0, 140, 685, 1, 0, 0, 0, 142, 689, 1, 0, 0, 0, 144, 703, 1, 0, 0, 0, 146, 147, 3, 2, 1, 0, 147, 148, 5, 0, 0, 1, 148, 1, 1, 0, 0, 0, 149, 150, 6, 1, -1, 0, 150, 151, 3, 4, 2, 0, 151, 157, 1, 0, 0, 0, 152, 153, 10, 1, 0, 0, 153, 154, 5, 31, 0, 0, 154, 156, 3, 6, 3, 0, 155, 152, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 3, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 160, 167, 3, 110, 55, 0, 161, 167, 3, 38, 19, 0, 162, 167, 3, 32, 16, 0, 163, 167, 3, 114, 57, 0, 164, 165, 4, 2, 1, 0, 165, 167, 3, 48, 24, 0, 166, 160, 1, 0, 0, 0, 166, 161, 1, 0, 0, 0, 166, 162, 1, 0, 0, 0, 166, 163, 1, 0, 0, 0, 166, 164, 1, 0, 0, 0, 167, 5, 1, 0, 0, 0, 168, 192, 3, 50, 25, 0, 169, 192, 3, 8, 4, 0, 170, 192, 3, 80, 40, 0, 171, 192, 3, 74, 37, 0, 172, 192, 3, 52, 26, 0, 173, 192, 3, 76, 38, 0, 174, 192, 3, 82, 41, 0, 175, 192, 3, 84, 42, 0, 176, 192, 3, 88, 44, 0, 177, 192, 3, 90, 45, 0, 178, 192, 3, 116, 58, 0, 179, 192, 3, 92, 46, 0, 180, 192, 3, 124, 62, 0, 181, 182, 4, 3, 2, 0, 182, 192, 3, 122, 61, 0, 183, 184, 4, 3, 3, 0, 184, 192, 3, 120, 60, 0, 185, 186, 4, 3, 4, 0, 186, 192, 3, 132, 66, 0, 187, 188, 4, 3, 5, 0, 188, 192, 3, 134, 67, 0, 189, 190, 4, 3, 6, 0, 190, 192, 3, 136, 68, 0, 191, 168, 1, 0, 0, 0, 191, 169, 1, 0, 0, 0, 191, 170, 1, 0, 0, 0, 191, 171, 1, 0, 0, 0, 191, 172, 1, 0, 0, 0, 191, 173, 1, 0, 0, 0, 191, 174, 1, 0, 0, 0, 191, 175, 1, 0, 0, 0, 191, 176, 1, 0, 0, 0, 191, 177, 1, 0, 0, 0, 191, 178, 1, 0, 0, 0, 191, 179, 1, 0, 0, 0, 191, 180, 1, 0, 0, 0, 191, 181, 1, 0, 0, 0, 191, 183, 1, 0, 0, 0, 191, 185, 1, 0, 0, 0, 191, 187, 1, 0, 0, 0, 191, 189, 1, 0, 0, 0, 192, 7, 1, 0, 0, 0, 193, 194, 5, 16, 0, 0, 194, 195, 3, 10, 5, 0, 195, 9, 1, 0, 0, 0, 196, 197, 6, 5, -1, 0, 197, 198, 5, 50, 0, 0, 198, 226, 3, 10, 5, 8, 199, 226, 3, 16, 8, 0, 200, 226, 3, 12, 6, 0, 201, 203, 3, 16, 8, 0, 202, 204, 5, 50, 0, 0, 203, 202, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 206, 5, 46, 0, 0, 206, 207, 5, 74, 0, 0, 207, 212, 3, 16, 8, 0, 208, 209, 5, 41, 0, 0, 209, 211, 3, 16, 8, 0, 210, 208, 1, 0, 0, 0, 211, 214, 1, 0, 0, 0, 212, 210, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 215, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 215, 216, 5, 75, 0, 0, 216, 226, 1, 0, 0, 0, 217, 218, 3, 16, 8, 0, 218, 220, 5, 47, 0, 0, 219, 221, 5, 50, 0, 0, 220, 219, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 5, 51, 0, 0, 223, 226, 1, 0, 0, 0, 224, 226, 3, 14, 7, 0, 225, 196, 1, 0, 0, 0, 225, 199, 1, 0, 0, 0, 225, 200, 1, 0, 0, 0, 225, 201, 1, 0, 0, 0, 225, 217, 1, 0, 0, 0, 225, 224, 1, 0, 0, 0, 226, 235, 1, 0, 0, 0, 227, 228, 10, 5, 0, 0, 228, 229, 5, 36, 0, 0, 229, 234, 3, 10, 5, 6, 230, 231, 10, 4, 0, 0, 231, 232, 5, 53, 0, 0, 232, 234, 3, 10, 5, 5, 233, 227, 1, 0, 0, 0, 233, 230, 1, 0, 0, 0, 234, 237, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 11, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 238, 240, 3, 16, 8, 0, 239, 241, 5, 50, 0, 0, 240, 239, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 243, 5, 49, 0, 0, 243, 244, 3, 106, 53, 0, 244, 253, 1, 0, 0, 0, 245, 247, 3, 16, 8, 0, 246, 248, 5, 50, 0, 0, 247, 246, 1, 0, 0, 0, 247, 248, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 250, 5, 55, 0, 0, 250, 251, 3, 106, 53, 0, 251, 253, 1, 0, 0, 0, 252, 238, 1, 0, 0, 0, 252, 245, 1, 0, 0, 0, 253, 13, 1, 0, 0, 0, 254, 257, 3, 58, 29, 0, 255, 256, 5, 39, 0, 0, 256, 258, 3, 30, 15, 0, 257, 255, 1, 0, 0, 0, 257, 258, 1, 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 260, 5, 40, 0, 0, 260, 261, 3, 68, 34, 0, 261, 15, 1, 0, 0, 0, 262, 268, 3, 18, 9, 0, 263, 264, 3, 18, 9, 0, 264, 265, 3, 108, 54, 0, 265, 266, 3, 18, 9, 0, 266, 268, 1, 0, 0, 0, 267, 262, 1, 0, 0, 0, 267, 263, 1, 0, 0, 0, 268, 17, 1, 0, 0, 0, 269, 270, 6, 9, -1, 0, 270, 274, 3, 20, 10, 0, 271, 272, 7, 0, 0, 0, 272, 274, 3, 18, 9, 3, 273, 269, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 274, 283, 1, 0, 0, 0, 275, 276, 10, 2, 0, 0, 276, 277, 7, 1, 0, 0, 277, 282, 3, 18, 9, 3, 278, 279, 10, 1, 0, 0, 279, 280, 7, 0, 0, 0, 280, 282, 3, 18, 9, 2, 281, 275, 1, 0, 0, 0, 281, 278, 1, 0, 0, 0, 282, 285, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 283, 284, 1, 0, 0, 0, 284, 19, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 286, 287, 6, 10, -1, 0, 287, 295, 3, 68, 34, 0, 288, 295, 3, 58, 29, 0, 289, 295, 3, 22, 11, 0, 290, 291, 5, 74, 0, 0, 291, 292, 3, 10, 5, 0, 292, 293, 5, 75, 0, 0, 293, 295, 1, 0, 0, 0, 294, 286, 1, 0, 0, 0, 294, 288, 1, 0, 0, 0, 294, 289, 1, 0, 0, 0, 294, 290, 1, 0, 0, 0, 295, 301, 1, 0, 0, 0, 296, 297, 10, 1, 0, 0, 297, 298, 5, 39, 0, 0, 298, 300, 3, 30, 15, 0, 299, 296, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 21, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 305, 3, 24, 12, 0, 305, 319, 5, 74, 0, 0, 306, 320, 5, 66, 0, 0, 307, 312, 3, 10, 5, 0, 308, 309, 5, 41, 0, 0, 309, 311, 3, 10, 5, 0, 310, 308, 1, 0, 0, 0, 311, 314, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 317, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 315, 316, 5, 41, 0, 0, 316, 318, 3, 26, 13, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 320, 1, 0, 0, 0, 319, 306, 1, 0, 0, 0, 319, 307, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322, 5, 75, 0, 0, 322, 23, 1, 0, 0, 0, 323, 324, 3, 72, 36, 0, 324, 25, 1, 0, 0, 0, 325, 326, 5, 69, 0, 0, 326, 331, 3, 28, 14, 0, 327, 328, 5, 41, 0, 0, 328, 330, 3, 28, 14, 0, 329, 327, 1, 0, 0, 0, 330, 333, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 334, 335, 5, 70, 0, 0, 335, 27, 1, 0, 0, 0, 336, 337, 3, 106, 53, 0, 337, 338, 5, 40, 0, 0, 338, 339, 3, 68, 34, 0, 339, 29, 1, 0, 0, 0, 340, 341, 3, 64, 32, 0, 341, 31, 1, 0, 0, 0, 342, 343, 5, 12, 0, 0, 343, 344, 3, 34, 17, 0, 344, 33, 1, 0, 0, 0, 345, 350, 3, 36, 18, 0, 346, 347, 5, 41, 0, 0, 347, 349, 3, 36, 18, 0, 348, 346, 1, 0, 0, 0, 349, 352, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 35, 1, 0, 0, 0, 352, 350, 1, 0, 0, 0, 353, 354, 3, 58, 29, 0, 354, 355, 5, 38, 0, 0, 355, 357, 1, 0, 0, 0, 356, 353, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 359, 3, 10, 5, 0, 359, 37, 1, 0, 0, 0, 360, 361, 5, 6, 0, 0, 361, 366, 3, 40, 20, 0, 362, 363, 5, 41, 0, 0, 363, 365, 3, 40, 20, 0, 364, 362, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 370, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 371, 3, 46, 23, 0, 370, 369, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 39, 1, 0, 0, 0, 372, 373, 3, 42, 21, 0, 373, 374, 5, 40, 0, 0, 374, 376, 1, 0, 0, 0, 375, 372, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 378, 3, 44, 22, 0, 378, 41, 1, 0, 0, 0, 379, 380, 7, 2, 0, 0, 380, 43, 1, 0, 0, 0, 381, 382, 7, 2, 0, 0, 382, 45, 1, 0, 0, 0, 383, 384, 5, 84, 0, 0, 384, 389, 5, 85, 0, 0, 385, 386, 5, 41, 0, 0, 386, 388, 5, 85, 0, 0, 387, 385, 1, 0, 0, 0, 388, 391, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 47, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 392, 393, 5, 22, 0, 0, 393, 398, 3, 40, 20, 0, 394, 395, 5, 41, 0, 0, 395, 397, 3, 40, 20, 0, 396, 394, 1, 0, 0, 0, 397, 400, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 403, 3, 54, 27, 0, 402, 401, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 406, 1, 0, 0, 0, 404, 405, 5, 35, 0, 0, 405, 407, 3, 34, 17, 0, 406, 404, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 49, 1, 0, 0, 0, 408, 409, 5, 4, 0, 0, 409, 410, 3, 34, 17, 0, 410, 51, 1, 0, 0, 0, 411, 413, 5, 15, 0, 0, 412, 414, 3, 54, 27, 0, 413, 412, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 417, 1, 0, 0, 0, 415, 416, 5, 35, 0, 0, 416, 418, 3, 34, 17, 0, 417, 415, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 53, 1, 0, 0, 0, 419, 424, 3, 56, 28, 0, 420, 421, 5, 41, 0, 0, 421, 423, 3, 56, 28, 0, 422, 420, 1, 0, 0, 0, 423, 426, 1, 0, 0, 0, 424, 422, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 55, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 427, 430, 3, 36, 18, 0, 428, 429, 5, 16, 0, 0, 429, 431, 3, 10, 5, 0, 430, 428, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 57, 1, 0, 0, 0, 432, 437, 3, 72, 36, 0, 433, 434, 5, 43, 0, 0, 434, 436, 3, 72, 36, 0, 435, 433, 1, 0, 0, 0, 436, 439, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 59, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 440, 445, 3, 66, 33, 0, 441, 442, 5, 43, 0, 0, 442, 444, 3, 66, 33, 0, 443, 441, 1, 0, 0, 0, 444, 447, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 61, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 448, 453, 3, 60, 30, 0, 449, 450, 5, 41, 0, 0, 450, 452, 3, 60, 30, 0, 451, 449, 1, 0, 0, 0, 452, 455, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 63, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 456, 457, 7, 3, 0, 0, 457, 65, 1, 0, 0, 0, 458, 461, 5, 89, 0, 0, 459, 461, 3, 70, 35, 0, 460, 458, 1, 0, 0, 0, 460, 459, 1, 0, 0, 0, 461, 67, 1, 0, 0, 0, 462, 505, 5, 51, 0, 0, 463, 464, 3, 104, 52, 0, 464, 465, 5, 76, 0, 0, 465, 505, 1, 0, 0, 0, 466, 505, 3, 102, 51, 0, 467, 505, 3, 104, 52, 0, 468, 505, 3, 98, 49, 0, 469, 505, 3, 70, 35, 0, 470, 505, 3, 106, 53, 0, 471, 472, 5, 72, 0, 0, 472, 477, 3, 100, 50, 0, 473, 474, 5, 41, 0, 0, 474, 476, 3, 100, 50, 0, 475, 473, 1, 0, 0, 0, 476, 479, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 480, 1, 0, 0, 0, 479, 477, 1, 0, 0, 0, 480, 481, 5, 73, 0, 0, 481, 505, 1, 0, 0, 0, 482, 483, 5, 72, 0, 0, 483, 488, 3, 98, 49, 0, 484, 485, 5, 41, 0, 0, 485, 487, 3, 98, 49, 0, 486, 484, 1, 0, 0, 0, 487, 490, 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 491, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 491, 492, 5, 73, 0, 0, 492, 505, 1, 0, 0, 0, 493, 494, 5, 72, 0, 0, 494, 499, 3, 106, 53, 0, 495, 496, 5, 41, 0, 0, 496, 498, 3, 106, 53, 0, 497, 495, 1, 0, 0, 0, 498, 501, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 502, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 502, 503, 5, 73, 0, 0, 503, 505, 1, 0, 0, 0, 504, 462, 1, 0, 0, 0, 504, 463, 1, 0, 0, 0, 504, 466, 1, 0, 0, 0, 504, 467, 1, 0, 0, 0, 504, 468, 1, 0, 0, 0, 504, 469, 1, 0, 0, 0, 504, 470, 1, 0, 0, 0, 504, 471, 1, 0, 0, 0, 504, 482, 1, 0, 0, 0, 504, 493, 1, 0, 0, 0, 505, 69, 1, 0, 0, 0, 506, 509, 5, 54, 0, 0, 507, 509, 5, 71, 0, 0, 508, 506, 1, 0, 0, 0, 508, 507, 1, 0, 0, 0, 509, 71, 1, 0, 0, 0, 510, 513, 3, 64, 32, 0, 511, 513, 3, 70, 35, 0, 512, 510, 1, 0, 0, 0, 512, 511, 1, 0, 0, 0, 513, 73, 1, 0, 0, 0, 514, 515, 5, 9, 0, 0, 515, 516, 5, 33, 0, 0, 516, 75, 1, 0, 0, 0, 517, 518, 5, 14, 0, 0, 518, 523, 3, 78, 39, 0, 519, 520, 5, 41, 0, 0, 520, 522, 3, 78, 39, 0, 521, 519, 1, 0, 0, 0, 522, 525, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 77, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 526, 528, 3, 10, 5, 0, 527, 529, 7, 4, 0, 0, 528, 527, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 532, 1, 0, 0, 0, 530, 531, 5, 52, 0, 0, 531, 533, 7, 5, 0, 0, 532, 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 79, 1, 0, 0, 0, 534, 535, 5, 8, 0, 0, 535, 536, 3, 62, 31, 0, 536, 81, 1, 0, 0, 0, 537, 538, 5, 2, 0, 0, 538, 539, 3, 62, 31, 0, 539, 83, 1, 0, 0, 0, 540, 541, 5, 11, 0, 0, 541, 546, 3, 86, 43, 0, 542, 543, 5, 41, 0, 0, 543, 545, 3, 86, 43, 0, 544, 542, 1, 0, 0, 0, 545, 548, 1, 0, 0, 0, 546, 544, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 85, 1, 0, 0, 0, 548, 546, 1, 0, 0, 0, 549, 550, 3, 60, 30, 0, 550, 551, 5, 93, 0, 0, 551, 552, 3, 60, 30, 0, 552, 87, 1, 0, 0, 0, 553, 554, 5, 1, 0, 0, 554, 555, 3, 20, 10, 0, 555, 557, 3, 106, 53, 0, 556, 558, 3, 94, 47, 0, 557, 556, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 89, 1, 0, 0, 0, 559, 560, 5, 7, 0, 0, 560, 561, 3, 20, 10, 0, 561, 562, 3, 106, 53, 0, 562, 91, 1, 0, 0, 0, 563, 564, 5, 10, 0, 0, 564, 565, 3, 58, 29, 0, 565, 93, 1, 0, 0, 0, 566, 571, 3, 96, 48, 0, 567, 568, 5, 41, 0, 0, 568, 570, 3, 96, 48, 0, 569, 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 95, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 3, 64, 32, 0, 575, 576, 5, 38, 0, 0, 576, 577, 3, 68, 34, 0, 577, 97, 1, 0, 0, 0, 578, 579, 7, 6, 0, 0, 579, 99, 1, 0, 0, 0, 580, 583, 3, 102, 51, 0, 581, 583, 3, 104, 52, 0, 582, 580, 1, 0, 0, 0, 582, 581, 1, 0, 0, 0, 583, 101, 1, 0, 0, 0, 584, 586, 7, 0, 0, 0, 585, 584, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 5, 34, 0, 0, 588, 103, 1, 0, 0, 0, 589, 591, 7, 0, 0, 0, 590, 589, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 593, 5, 33, 0, 0, 593, 105, 1, 0, 0, 0, 594, 595, 5, 32, 0, 0, 595, 107, 1, 0, 0, 0, 596, 597, 7, 7, 0, 0, 597, 109, 1, 0, 0, 0, 598, 599, 5, 5, 0, 0, 599, 600, 3, 112, 56, 0, 600, 111, 1, 0, 0, 0, 601, 602, 5, 72, 0, 0, 602, 603, 3, 2, 1, 0, 603, 604, 5, 73, 0, 0, 604, 113, 1, 0, 0, 0, 605, 606, 5, 13, 0, 0, 606, 607, 5, 109, 0, 0, 607, 115, 1, 0, 0, 0, 608, 609, 5, 3, 0, 0, 609, 612, 5, 99, 0, 0, 610, 611, 5, 97, 0, 0, 611, 613, 3, 60, 30, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 623, 1, 0, 0, 0, 614, 615, 5, 98, 0, 0, 615, 620, 3, 118, 59, 0, 616, 617, 5, 41, 0, 0, 617, 619, 3, 118, 59, 0, 618, 616, 1, 0, 0, 0, 619, 622, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 624, 1, 0, 0, 0, 622, 620, 1, 0, 0, 0, 623, 614, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 117, 1, 0, 0, 0, 625, 626, 3, 60, 30, 0, 626, 627, 5, 38, 0, 0, 627, 629, 1, 0, 0, 0, 628, 625, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 3, 60, 30, 0, 631, 119, 1, 0, 0, 0, 632, 633, 5, 21, 0, 0, 633, 634, 3, 40, 20, 0, 634, 635, 5, 97, 0, 0, 635, 636, 3, 62, 31, 0, 636, 121, 1, 0, 0, 0, 637, 638, 5, 19, 0, 0, 638, 641, 3, 54, 27, 0, 639, 640, 5, 35, 0, 0, 640, 642, 3, 34, 17, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 123, 1, 0, 0, 0, 643, 644, 7, 8, 0, 0, 644, 645, 5, 123, 0, 0, 645, 646, 3, 126, 63, 0, 646, 647, 3, 128, 64, 0, 647, 125, 1, 0, 0, 0, 648, 649, 3, 40, 20, 0, 649, 127, 1, 0, 0, 0, 650, 651, 5, 97, 0, 0, 651, 656, 3, 130, 65, 0, 652, 653, 5, 41, 0, 0, 653, 655, 3, 130, 65, 0, 654, 652, 1, 0, 0, 0, 655, 658, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 129, 1, 0, 0, 0, 658, 656, 1, 0, 0, 0, 659, 660, 3, 16, 8, 0, 660, 131, 1, 0, 0, 0, 661, 662, 5, 18, 0, 0, 662, 665, 3, 58, 29, 0, 663, 664, 5, 97, 0, 0, 664, 666, 3, 58, 29, 0, 665, 663, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 672, 1, 0, 0, 0, 667, 668, 5, 93, 0, 0, 668, 669, 3, 58, 29, 0, 669, 670, 5, 41, 0, 0, 670, 671, 3, 58, 29, 0, 671, 673, 1, 0, 0, 0, 672, 667, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 133, 1, 0, 0, 0, 674, 675, 5, 20, 0, 0, 675, 676, 3, 62, 31, 0, 676, 135, 1, 0, 0, 0, 677, 678, 5, 26, 0, 0, 678, 679, 3, 138, 69, 0, 679, 137, 1, 0, 0, 0, 680, 682, 3, 140, 70, 0, 681, 680, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 681, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 139, 1, 0, 0, 0, 685, 686, 5, 74, 0, 0, 686, 687, 3, 142, 71, 0, 687, 688, 5, 75, 0, 0, 688, 141, 1, 0, 0, 0, 689, 690, 6, 71, -1, 0, 690, 691, 3, 144, 72, 0, 691, 697, 1, 0, 0, 0, 692, 693, 10, 1, 0, 0, 693, 694, 5, 31, 0, 0, 694, 696, 3, 144, 72, 0, 695, 692, 1, 0, 0, 0, 696, 699, 1, 0, 0, 0, 697, 695, 1, 0, 0, 0, 697, 698, 1, 0, 0, 0, 698, 143, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 700, 704, 3, 8, 4, 0, 701, 704, 3, 76, 38, 0, 702, 704, 3, 74, 37, 0, 703, 700, 1, 0, 0, 0, 703, 701, 1, 0, 0, 0, 703, 702, 1, 0, 0, 0, 704, 145, 1, 0, 0, 0, 66, 157, 166, 191, 203, 212, 220, 225, 233, 235, 240, 247, 252, 257, 267, 273, 281, 283, 294, 301, 312, 317, 319, 331, 350, 356, 366, 370, 375, 389, 398, 402, 406, 413, 417, 424, 430, 437, 445, 453, 460, 477, 488, 499, 504, 508, 512, 523, 528, 532, 546, 557, 571, 582, 585, 590, 612, 620, 623, 628, 641, 656, 665, 672, 683, 697, 703]
\ No newline at end of file
+[4, 1, 139, 706, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 156, 8, 1, 10, 1, 12, 1, 159, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 167, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 192, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 5, 7, 205, 8, 7, 10, 7, 12, 7, 208, 9, 7, 1, 8, 1, 8, 1, 8, 3, 8, 213, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 221, 8, 9, 10, 9, 12, 9, 224, 9, 9, 1, 9, 3, 9, 227, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 232, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 244, 8, 13, 10, 13, 12, 13, 247, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 253, 8, 14, 10, 14, 12, 14, 256, 9, 14, 1, 14, 3, 14, 259, 8, 14, 1, 14, 1, 14, 3, 14, 263, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 270, 8, 16, 1, 16, 1, 16, 3, 16, 274, 8, 16, 1, 17, 1, 17, 1, 17, 5, 17, 279, 8, 17, 10, 17, 12, 17, 282, 9, 17, 1, 18, 1, 18, 1, 18, 3, 18, 287, 8, 18, 1, 19, 1, 19, 1, 19, 5, 19, 292, 8, 19, 10, 19, 12, 19, 295, 9, 19, 1, 20, 1, 20, 1, 20, 5, 20, 300, 8, 20, 10, 20, 12, 20, 303, 9, 20, 1, 21, 1, 21, 1, 21, 5, 21, 308, 8, 21, 10, 21, 12, 21, 311, 9, 21, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 317, 8, 23, 1, 24, 1, 24, 3, 24, 321, 8, 24, 1, 25, 1, 25, 3, 25, 325, 8, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 334, 8, 27, 10, 27, 12, 27, 337, 9, 27, 1, 28, 1, 28, 3, 28, 341, 8, 28, 1, 28, 1, 28, 3, 28, 345, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 357, 8, 31, 10, 31, 12, 31, 360, 9, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 370, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 5, 36, 382, 8, 36, 10, 36, 12, 36, 385, 9, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 405, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 411, 8, 41, 10, 41, 12, 41, 414, 9, 41, 3, 41, 416, 8, 41, 1, 42, 1, 42, 1, 42, 3, 42, 421, 8, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 434, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 440, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 447, 8, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 4, 48, 456, 8, 48, 11, 48, 12, 48, 457, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 470, 8, 50, 10, 50, 12, 50, 473, 9, 50, 1, 51, 1, 51, 1, 51, 3, 51, 478, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 487, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 494, 8, 52, 10, 52, 12, 52, 497, 9, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 504, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 509, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 517, 8, 52, 10, 52, 12, 52, 520, 9, 52, 1, 53, 1, 53, 3, 53, 524, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 531, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 536, 8, 53, 1, 54, 1, 54, 1, 54, 3, 54, 541, 8, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 551, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 557, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 565, 8, 56, 10, 56, 12, 56, 568, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 578, 8, 57, 1, 57, 1, 57, 1, 57, 5, 57, 583, 8, 57, 10, 57, 12, 57, 586, 9, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 594, 8, 58, 10, 58, 12, 58, 597, 9, 58, 1, 58, 1, 58, 3, 58, 601, 8, 58, 3, 58, 603, 8, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 613, 8, 60, 10, 60, 12, 60, 616, 9, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 637, 8, 62, 10, 62, 12, 62, 640, 9, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 648, 8, 62, 10, 62, 12, 62, 651, 9, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 659, 8, 62, 10, 62, 12, 62, 662, 9, 62, 1, 62, 1, 62, 3, 62, 666, 8, 62, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 672, 8, 64, 1, 65, 3, 65, 675, 8, 65, 1, 65, 1, 65, 1, 66, 3, 66, 680, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 699, 8, 71, 10, 71, 12, 71, 702, 9, 71, 1, 72, 1, 72, 1, 72, 0, 5, 2, 100, 104, 112, 114, 73, 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, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 0, 9, 2, 0, 51, 51, 101, 101, 1, 0, 95, 96, 2, 0, 56, 56, 61, 61, 2, 0, 64, 64, 67, 67, 1, 0, 83, 84, 1, 0, 85, 87, 2, 0, 63, 63, 75, 75, 2, 0, 76, 76, 78, 82, 2, 0, 18, 18, 20, 21, 733, 0, 146, 1, 0, 0, 0, 2, 149, 1, 0, 0, 0, 4, 166, 1, 0, 0, 0, 6, 191, 1, 0, 0, 0, 8, 193, 1, 0, 0, 0, 10, 196, 1, 0, 0, 0, 12, 198, 1, 0, 0, 0, 14, 201, 1, 0, 0, 0, 16, 212, 1, 0, 0, 0, 18, 216, 1, 0, 0, 0, 20, 231, 1, 0, 0, 0, 22, 235, 1, 0, 0, 0, 24, 237, 1, 0, 0, 0, 26, 239, 1, 0, 0, 0, 28, 248, 1, 0, 0, 0, 30, 264, 1, 0, 0, 0, 32, 267, 1, 0, 0, 0, 34, 275, 1, 0, 0, 0, 36, 283, 1, 0, 0, 0, 38, 288, 1, 0, 0, 0, 40, 296, 1, 0, 0, 0, 42, 304, 1, 0, 0, 0, 44, 312, 1, 0, 0, 0, 46, 316, 1, 0, 0, 0, 48, 320, 1, 0, 0, 0, 50, 324, 1, 0, 0, 0, 52, 326, 1, 0, 0, 0, 54, 329, 1, 0, 0, 0, 56, 338, 1, 0, 0, 0, 58, 346, 1, 0, 0, 0, 60, 349, 1, 0, 0, 0, 62, 352, 1, 0, 0, 0, 64, 361, 1, 0, 0, 0, 66, 365, 1, 0, 0, 0, 68, 371, 1, 0, 0, 0, 70, 375, 1, 0, 0, 0, 72, 378, 1, 0, 0, 0, 74, 386, 1, 0, 0, 0, 76, 390, 1, 0, 0, 0, 78, 393, 1, 0, 0, 0, 80, 397, 1, 0, 0, 0, 82, 400, 1, 0, 0, 0, 84, 420, 1, 0, 0, 0, 86, 424, 1, 0, 0, 0, 88, 429, 1, 0, 0, 0, 90, 435, 1, 0, 0, 0, 92, 448, 1, 0, 0, 0, 94, 451, 1, 0, 0, 0, 96, 455, 1, 0, 0, 0, 98, 459, 1, 0, 0, 0, 100, 463, 1, 0, 0, 0, 102, 477, 1, 0, 0, 0, 104, 508, 1, 0, 0, 0, 106, 535, 1, 0, 0, 0, 108, 537, 1, 0, 0, 0, 110, 550, 1, 0, 0, 0, 112, 556, 1, 0, 0, 0, 114, 577, 1, 0, 0, 0, 116, 587, 1, 0, 0, 0, 118, 606, 1, 0, 0, 0, 120, 608, 1, 0, 0, 0, 122, 619, 1, 0, 0, 0, 124, 665, 1, 0, 0, 0, 126, 667, 1, 0, 0, 0, 128, 671, 1, 0, 0, 0, 130, 674, 1, 0, 0, 0, 132, 679, 1, 0, 0, 0, 134, 683, 1, 0, 0, 0, 136, 685, 1, 0, 0, 0, 138, 687, 1, 0, 0, 0, 140, 692, 1, 0, 0, 0, 142, 694, 1, 0, 0, 0, 144, 703, 1, 0, 0, 0, 146, 147, 3, 2, 1, 0, 147, 148, 5, 0, 0, 1, 148, 1, 1, 0, 0, 0, 149, 150, 6, 1, -1, 0, 150, 151, 3, 4, 2, 0, 151, 157, 1, 0, 0, 0, 152, 153, 10, 1, 0, 0, 153, 154, 5, 50, 0, 0, 154, 156, 3, 6, 3, 0, 155, 152, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 3, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 160, 167, 3, 76, 38, 0, 161, 167, 3, 18, 9, 0, 162, 167, 3, 12, 6, 0, 163, 167, 3, 80, 40, 0, 164, 165, 4, 2, 1, 0, 165, 167, 3, 28, 14, 0, 166, 160, 1, 0, 0, 0, 166, 161, 1, 0, 0, 0, 166, 162, 1, 0, 0, 0, 166, 163, 1, 0, 0, 0, 166, 164, 1, 0, 0, 0, 167, 5, 1, 0, 0, 0, 168, 192, 3, 30, 15, 0, 169, 192, 3, 8, 4, 0, 170, 192, 3, 58, 29, 0, 171, 192, 3, 52, 26, 0, 172, 192, 3, 32, 16, 0, 173, 192, 3, 54, 27, 0, 174, 192, 3, 60, 30, 0, 175, 192, 3, 62, 31, 0, 176, 192, 3, 66, 33, 0, 177, 192, 3, 68, 34, 0, 178, 192, 3, 82, 41, 0, 179, 192, 3, 70, 35, 0, 180, 192, 3, 138, 69, 0, 181, 182, 4, 3, 2, 0, 182, 192, 3, 88, 44, 0, 183, 184, 4, 3, 3, 0, 184, 192, 3, 86, 43, 0, 185, 186, 4, 3, 4, 0, 186, 192, 3, 90, 45, 0, 187, 188, 4, 3, 5, 0, 188, 192, 3, 92, 46, 0, 189, 190, 4, 3, 6, 0, 190, 192, 3, 94, 47, 0, 191, 168, 1, 0, 0, 0, 191, 169, 1, 0, 0, 0, 191, 170, 1, 0, 0, 0, 191, 171, 1, 0, 0, 0, 191, 172, 1, 0, 0, 0, 191, 173, 1, 0, 0, 0, 191, 174, 1, 0, 0, 0, 191, 175, 1, 0, 0, 0, 191, 176, 1, 0, 0, 0, 191, 177, 1, 0, 0, 0, 191, 178, 1, 0, 0, 0, 191, 179, 1, 0, 0, 0, 191, 180, 1, 0, 0, 0, 191, 181, 1, 0, 0, 0, 191, 183, 1, 0, 0, 0, 191, 185, 1, 0, 0, 0, 191, 187, 1, 0, 0, 0, 191, 189, 1, 0, 0, 0, 192, 7, 1, 0, 0, 0, 193, 194, 5, 14, 0, 0, 194, 195, 3, 104, 52, 0, 195, 9, 1, 0, 0, 0, 196, 197, 3, 44, 22, 0, 197, 11, 1, 0, 0, 0, 198, 199, 5, 11, 0, 0, 199, 200, 3, 14, 7, 0, 200, 13, 1, 0, 0, 0, 201, 206, 3, 16, 8, 0, 202, 203, 5, 60, 0, 0, 203, 205, 3, 16, 8, 0, 204, 202, 1, 0, 0, 0, 205, 208, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 15, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 210, 3, 38, 19, 0, 210, 211, 5, 57, 0, 0, 211, 213, 1, 0, 0, 0, 212, 209, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 215, 3, 104, 52, 0, 215, 17, 1, 0, 0, 0, 216, 217, 5, 16, 0, 0, 217, 222, 3, 20, 10, 0, 218, 219, 5, 60, 0, 0, 219, 221, 3, 20, 10, 0, 220, 218, 1, 0, 0, 0, 221, 224, 1, 0, 0, 0, 222, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 226, 1, 0, 0, 0, 224, 222, 1, 0, 0, 0, 225, 227, 3, 26, 13, 0, 226, 225, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 19, 1, 0, 0, 0, 228, 229, 3, 22, 11, 0, 229, 230, 5, 59, 0, 0, 230, 232, 1, 0, 0, 0, 231, 228, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 234, 3, 24, 12, 0, 234, 21, 1, 0, 0, 0, 235, 236, 7, 0, 0, 0, 236, 23, 1, 0, 0, 0, 237, 238, 7, 0, 0, 0, 238, 25, 1, 0, 0, 0, 239, 240, 5, 100, 0, 0, 240, 245, 5, 101, 0, 0, 241, 242, 5, 60, 0, 0, 242, 244, 5, 101, 0, 0, 243, 241, 1, 0, 0, 0, 244, 247, 1, 0, 0, 0, 245, 243, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 27, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0, 248, 249, 5, 23, 0, 0, 249, 254, 3, 20, 10, 0, 250, 251, 5, 60, 0, 0, 251, 253, 3, 20, 10, 0, 252, 250, 1, 0, 0, 0, 253, 256, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 258, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 257, 259, 3, 34, 17, 0, 258, 257, 1, 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 262, 1, 0, 0, 0, 260, 261, 5, 54, 0, 0, 261, 263, 3, 14, 7, 0, 262, 260, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 29, 1, 0, 0, 0, 264, 265, 5, 8, 0, 0, 265, 266, 3, 14, 7, 0, 266, 31, 1, 0, 0, 0, 267, 269, 5, 13, 0, 0, 268, 270, 3, 34, 17, 0, 269, 268, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 272, 5, 54, 0, 0, 272, 274, 3, 14, 7, 0, 273, 271, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 33, 1, 0, 0, 0, 275, 280, 3, 36, 18, 0, 276, 277, 5, 60, 0, 0, 277, 279, 3, 36, 18, 0, 278, 276, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 35, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 286, 3, 16, 8, 0, 284, 285, 5, 14, 0, 0, 285, 287, 3, 104, 52, 0, 286, 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 37, 1, 0, 0, 0, 288, 293, 3, 50, 25, 0, 289, 290, 5, 62, 0, 0, 290, 292, 3, 50, 25, 0, 291, 289, 1, 0, 0, 0, 292, 295, 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 39, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 296, 301, 3, 46, 23, 0, 297, 298, 5, 62, 0, 0, 298, 300, 3, 46, 23, 0, 299, 297, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 41, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 309, 3, 40, 20, 0, 305, 306, 5, 60, 0, 0, 306, 308, 3, 40, 20, 0, 307, 305, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 43, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 312, 313, 7, 1, 0, 0, 313, 45, 1, 0, 0, 0, 314, 317, 5, 128, 0, 0, 315, 317, 3, 48, 24, 0, 316, 314, 1, 0, 0, 0, 316, 315, 1, 0, 0, 0, 317, 47, 1, 0, 0, 0, 318, 321, 5, 73, 0, 0, 319, 321, 5, 90, 0, 0, 320, 318, 1, 0, 0, 0, 320, 319, 1, 0, 0, 0, 321, 49, 1, 0, 0, 0, 322, 325, 3, 44, 22, 0, 323, 325, 3, 48, 24, 0, 324, 322, 1, 0, 0, 0, 324, 323, 1, 0, 0, 0, 325, 51, 1, 0, 0, 0, 326, 327, 5, 10, 0, 0, 327, 328, 5, 52, 0, 0, 328, 53, 1, 0, 0, 0, 329, 330, 5, 12, 0, 0, 330, 335, 3, 56, 28, 0, 331, 332, 5, 60, 0, 0, 332, 334, 3, 56, 28, 0, 333, 331, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, 336, 55, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 338, 340, 3, 104, 52, 0, 339, 341, 7, 2, 0, 0, 340, 339, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 344, 1, 0, 0, 0, 342, 343, 5, 71, 0, 0, 343, 345, 7, 3, 0, 0, 344, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 57, 1, 0, 0, 0, 346, 347, 5, 26, 0, 0, 347, 348, 3, 42, 21, 0, 348, 59, 1, 0, 0, 0, 349, 350, 5, 25, 0, 0, 350, 351, 3, 42, 21, 0, 351, 61, 1, 0, 0, 0, 352, 353, 5, 28, 0, 0, 353, 358, 3, 64, 32, 0, 354, 355, 5, 60, 0, 0, 355, 357, 3, 64, 32, 0, 356, 354, 1, 0, 0, 0, 357, 360, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 63, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 361, 362, 3, 40, 20, 0, 362, 363, 5, 132, 0, 0, 363, 364, 3, 40, 20, 0, 364, 65, 1, 0, 0, 0, 365, 366, 5, 7, 0, 0, 366, 367, 3, 114, 57, 0, 367, 369, 3, 134, 67, 0, 368, 370, 3, 72, 36, 0, 369, 368, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 67, 1, 0, 0, 0, 371, 372, 5, 9, 0, 0, 372, 373, 3, 114, 57, 0, 373, 374, 3, 134, 67, 0, 374, 69, 1, 0, 0, 0, 375, 376, 5, 24, 0, 0, 376, 377, 3, 38, 19, 0, 377, 71, 1, 0, 0, 0, 378, 383, 3, 74, 37, 0, 379, 380, 5, 60, 0, 0, 380, 382, 3, 74, 37, 0, 381, 379, 1, 0, 0, 0, 382, 385, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 73, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 386, 387, 3, 44, 22, 0, 387, 388, 5, 57, 0, 0, 388, 389, 3, 124, 62, 0, 389, 75, 1, 0, 0, 0, 390, 391, 5, 6, 0, 0, 391, 392, 3, 78, 39, 0, 392, 77, 1, 0, 0, 0, 393, 394, 5, 91, 0, 0, 394, 395, 3, 2, 1, 0, 395, 396, 5, 92, 0, 0, 396, 79, 1, 0, 0, 0, 397, 398, 5, 29, 0, 0, 398, 399, 5, 136, 0, 0, 399, 81, 1, 0, 0, 0, 400, 401, 5, 5, 0, 0, 401, 404, 5, 36, 0, 0, 402, 403, 5, 34, 0, 0, 403, 405, 3, 40, 20, 0, 404, 402, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 415, 1, 0, 0, 0, 406, 407, 5, 35, 0, 0, 407, 412, 3, 84, 42, 0, 408, 409, 5, 60, 0, 0, 409, 411, 3, 84, 42, 0, 410, 408, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 406, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 83, 1, 0, 0, 0, 417, 418, 3, 40, 20, 0, 418, 419, 5, 57, 0, 0, 419, 421, 1, 0, 0, 0, 420, 417, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 3, 40, 20, 0, 423, 85, 1, 0, 0, 0, 424, 425, 5, 22, 0, 0, 425, 426, 3, 20, 10, 0, 426, 427, 5, 34, 0, 0, 427, 428, 3, 42, 21, 0, 428, 87, 1, 0, 0, 0, 429, 430, 5, 15, 0, 0, 430, 433, 3, 34, 17, 0, 431, 432, 5, 54, 0, 0, 432, 434, 3, 14, 7, 0, 433, 431, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 89, 1, 0, 0, 0, 435, 436, 5, 4, 0, 0, 436, 439, 3, 38, 19, 0, 437, 438, 5, 34, 0, 0, 438, 440, 3, 38, 19, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 446, 1, 0, 0, 0, 441, 442, 5, 132, 0, 0, 442, 443, 3, 38, 19, 0, 443, 444, 5, 60, 0, 0, 444, 445, 3, 38, 19, 0, 445, 447, 1, 0, 0, 0, 446, 441, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 91, 1, 0, 0, 0, 448, 449, 5, 27, 0, 0, 449, 450, 3, 42, 21, 0, 450, 93, 1, 0, 0, 0, 451, 452, 5, 17, 0, 0, 452, 453, 3, 96, 48, 0, 453, 95, 1, 0, 0, 0, 454, 456, 3, 98, 49, 0, 455, 454, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 97, 1, 0, 0, 0, 459, 460, 5, 93, 0, 0, 460, 461, 3, 100, 50, 0, 461, 462, 5, 94, 0, 0, 462, 99, 1, 0, 0, 0, 463, 464, 6, 50, -1, 0, 464, 465, 3, 102, 51, 0, 465, 471, 1, 0, 0, 0, 466, 467, 10, 1, 0, 0, 467, 468, 5, 50, 0, 0, 468, 470, 3, 102, 51, 0, 469, 466, 1, 0, 0, 0, 470, 473, 1, 0, 0, 0, 471, 469, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 101, 1, 0, 0, 0, 473, 471, 1, 0, 0, 0, 474, 478, 3, 8, 4, 0, 475, 478, 3, 54, 27, 0, 476, 478, 3, 52, 26, 0, 477, 474, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, 476, 1, 0, 0, 0, 478, 103, 1, 0, 0, 0, 479, 480, 6, 52, -1, 0, 480, 481, 5, 69, 0, 0, 481, 509, 3, 104, 52, 8, 482, 509, 3, 110, 55, 0, 483, 509, 3, 106, 53, 0, 484, 486, 3, 110, 55, 0, 485, 487, 5, 69, 0, 0, 486, 485, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 489, 5, 65, 0, 0, 489, 490, 5, 93, 0, 0, 490, 495, 3, 110, 55, 0, 491, 492, 5, 60, 0, 0, 492, 494, 3, 110, 55, 0, 493, 491, 1, 0, 0, 0, 494, 497, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 498, 499, 5, 94, 0, 0, 499, 509, 1, 0, 0, 0, 500, 501, 3, 110, 55, 0, 501, 503, 5, 66, 0, 0, 502, 504, 5, 69, 0, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 506, 5, 70, 0, 0, 506, 509, 1, 0, 0, 0, 507, 509, 3, 108, 54, 0, 508, 479, 1, 0, 0, 0, 508, 482, 1, 0, 0, 0, 508, 483, 1, 0, 0, 0, 508, 484, 1, 0, 0, 0, 508, 500, 1, 0, 0, 0, 508, 507, 1, 0, 0, 0, 509, 518, 1, 0, 0, 0, 510, 511, 10, 5, 0, 0, 511, 512, 5, 55, 0, 0, 512, 517, 3, 104, 52, 6, 513, 514, 10, 4, 0, 0, 514, 515, 5, 72, 0, 0, 515, 517, 3, 104, 52, 5, 516, 510, 1, 0, 0, 0, 516, 513, 1, 0, 0, 0, 517, 520, 1, 0, 0, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 105, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 521, 523, 3, 110, 55, 0, 522, 524, 5, 69, 0, 0, 523, 522, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 526, 5, 68, 0, 0, 526, 527, 3, 134, 67, 0, 527, 536, 1, 0, 0, 0, 528, 530, 3, 110, 55, 0, 529, 531, 5, 69, 0, 0, 530, 529, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 533, 5, 74, 0, 0, 533, 534, 3, 134, 67, 0, 534, 536, 1, 0, 0, 0, 535, 521, 1, 0, 0, 0, 535, 528, 1, 0, 0, 0, 536, 107, 1, 0, 0, 0, 537, 540, 3, 38, 19, 0, 538, 539, 5, 58, 0, 0, 539, 541, 3, 10, 5, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 543, 5, 59, 0, 0, 543, 544, 3, 124, 62, 0, 544, 109, 1, 0, 0, 0, 545, 551, 3, 112, 56, 0, 546, 547, 3, 112, 56, 0, 547, 548, 3, 136, 68, 0, 548, 549, 3, 112, 56, 0, 549, 551, 1, 0, 0, 0, 550, 545, 1, 0, 0, 0, 550, 546, 1, 0, 0, 0, 551, 111, 1, 0, 0, 0, 552, 553, 6, 56, -1, 0, 553, 557, 3, 114, 57, 0, 554, 555, 7, 4, 0, 0, 555, 557, 3, 112, 56, 3, 556, 552, 1, 0, 0, 0, 556, 554, 1, 0, 0, 0, 557, 566, 1, 0, 0, 0, 558, 559, 10, 2, 0, 0, 559, 560, 7, 5, 0, 0, 560, 565, 3, 112, 56, 3, 561, 562, 10, 1, 0, 0, 562, 563, 7, 4, 0, 0, 563, 565, 3, 112, 56, 2, 564, 558, 1, 0, 0, 0, 564, 561, 1, 0, 0, 0, 565, 568, 1, 0, 0, 0, 566, 564, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 113, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 569, 570, 6, 57, -1, 0, 570, 578, 3, 124, 62, 0, 571, 578, 3, 38, 19, 0, 572, 578, 3, 116, 58, 0, 573, 574, 5, 93, 0, 0, 574, 575, 3, 104, 52, 0, 575, 576, 5, 94, 0, 0, 576, 578, 1, 0, 0, 0, 577, 569, 1, 0, 0, 0, 577, 571, 1, 0, 0, 0, 577, 572, 1, 0, 0, 0, 577, 573, 1, 0, 0, 0, 578, 584, 1, 0, 0, 0, 579, 580, 10, 1, 0, 0, 580, 581, 5, 58, 0, 0, 581, 583, 3, 10, 5, 0, 582, 579, 1, 0, 0, 0, 583, 586, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 115, 1, 0, 0, 0, 586, 584, 1, 0, 0, 0, 587, 588, 3, 118, 59, 0, 588, 602, 5, 93, 0, 0, 589, 603, 5, 85, 0, 0, 590, 595, 3, 104, 52, 0, 591, 592, 5, 60, 0, 0, 592, 594, 3, 104, 52, 0, 593, 591, 1, 0, 0, 0, 594, 597, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 600, 1, 0, 0, 0, 597, 595, 1, 0, 0, 0, 598, 599, 5, 60, 0, 0, 599, 601, 3, 120, 60, 0, 600, 598, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 603, 1, 0, 0, 0, 602, 589, 1, 0, 0, 0, 602, 590, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 5, 94, 0, 0, 605, 117, 1, 0, 0, 0, 606, 607, 3, 50, 25, 0, 607, 119, 1, 0, 0, 0, 608, 609, 5, 88, 0, 0, 609, 614, 3, 122, 61, 0, 610, 611, 5, 60, 0, 0, 611, 613, 3, 122, 61, 0, 612, 610, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 618, 5, 89, 0, 0, 618, 121, 1, 0, 0, 0, 619, 620, 3, 134, 67, 0, 620, 621, 5, 59, 0, 0, 621, 622, 3, 124, 62, 0, 622, 123, 1, 0, 0, 0, 623, 666, 5, 70, 0, 0, 624, 625, 3, 132, 66, 0, 625, 626, 5, 95, 0, 0, 626, 666, 1, 0, 0, 0, 627, 666, 3, 130, 65, 0, 628, 666, 3, 132, 66, 0, 629, 666, 3, 126, 63, 0, 630, 666, 3, 48, 24, 0, 631, 666, 3, 134, 67, 0, 632, 633, 5, 91, 0, 0, 633, 638, 3, 128, 64, 0, 634, 635, 5, 60, 0, 0, 635, 637, 3, 128, 64, 0, 636, 634, 1, 0, 0, 0, 637, 640, 1, 0, 0, 0, 638, 636, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 641, 1, 0, 0, 0, 640, 638, 1, 0, 0, 0, 641, 642, 5, 92, 0, 0, 642, 666, 1, 0, 0, 0, 643, 644, 5, 91, 0, 0, 644, 649, 3, 126, 63, 0, 645, 646, 5, 60, 0, 0, 646, 648, 3, 126, 63, 0, 647, 645, 1, 0, 0, 0, 648, 651, 1, 0, 0, 0, 649, 647, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 652, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 652, 653, 5, 92, 0, 0, 653, 666, 1, 0, 0, 0, 654, 655, 5, 91, 0, 0, 655, 660, 3, 134, 67, 0, 656, 657, 5, 60, 0, 0, 657, 659, 3, 134, 67, 0, 658, 656, 1, 0, 0, 0, 659, 662, 1, 0, 0, 0, 660, 658, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 663, 1, 0, 0, 0, 662, 660, 1, 0, 0, 0, 663, 664, 5, 92, 0, 0, 664, 666, 1, 0, 0, 0, 665, 623, 1, 0, 0, 0, 665, 624, 1, 0, 0, 0, 665, 627, 1, 0, 0, 0, 665, 628, 1, 0, 0, 0, 665, 629, 1, 0, 0, 0, 665, 630, 1, 0, 0, 0, 665, 631, 1, 0, 0, 0, 665, 632, 1, 0, 0, 0, 665, 643, 1, 0, 0, 0, 665, 654, 1, 0, 0, 0, 666, 125, 1, 0, 0, 0, 667, 668, 7, 6, 0, 0, 668, 127, 1, 0, 0, 0, 669, 672, 3, 130, 65, 0, 670, 672, 3, 132, 66, 0, 671, 669, 1, 0, 0, 0, 671, 670, 1, 0, 0, 0, 672, 129, 1, 0, 0, 0, 673, 675, 7, 4, 0, 0, 674, 673, 1, 0, 0, 0, 674, 675, 1, 0, 0, 0, 675, 676, 1, 0, 0, 0, 676, 677, 5, 53, 0, 0, 677, 131, 1, 0, 0, 0, 678, 680, 7, 4, 0, 0, 679, 678, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 682, 5, 52, 0, 0, 682, 133, 1, 0, 0, 0, 683, 684, 5, 51, 0, 0, 684, 135, 1, 0, 0, 0, 685, 686, 7, 7, 0, 0, 686, 137, 1, 0, 0, 0, 687, 688, 7, 8, 0, 0, 688, 689, 5, 108, 0, 0, 689, 690, 3, 140, 70, 0, 690, 691, 3, 142, 71, 0, 691, 139, 1, 0, 0, 0, 692, 693, 3, 20, 10, 0, 693, 141, 1, 0, 0, 0, 694, 695, 5, 34, 0, 0, 695, 700, 3, 144, 72, 0, 696, 697, 5, 60, 0, 0, 697, 699, 3, 144, 72, 0, 698, 696, 1, 0, 0, 0, 699, 702, 1, 0, 0, 0, 700, 698, 1, 0, 0, 0, 700, 701, 1, 0, 0, 0, 701, 143, 1, 0, 0, 0, 702, 700, 1, 0, 0, 0, 703, 704, 3, 110, 55, 0, 704, 145, 1, 0, 0, 0, 66, 157, 166, 191, 206, 212, 222, 226, 231, 245, 254, 258, 262, 269, 273, 280, 286, 293, 301, 309, 316, 320, 324, 335, 340, 344, 358, 369, 383, 404, 412, 415, 420, 433, 439, 446, 457, 471, 477, 486, 495, 503, 508, 516, 518, 523, 530, 535, 540, 550, 556, 564, 566, 577, 584, 595, 600, 602, 614, 638, 649, 660, 665, 671, 674, 679, 700]
\ No newline at end of file
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.java
index 2c03f767c58a..8078bd539b59 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.java
@@ -25,107 +25,113 @@ public class EsqlBaseParser extends ParserConfig {
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
- DISSECT=1, DROP=2, ENRICH=3, EVAL=4, EXPLAIN=5, FROM=6, GROK=7, KEEP=8,
- LIMIT=9, MV_EXPAND=10, RENAME=11, ROW=12, SHOW=13, SORT=14, STATS=15,
- WHERE=16, JOIN_LOOKUP=17, DEV_CHANGE_POINT=18, DEV_INLINESTATS=19, DEV_INSIST=20,
- DEV_LOOKUP=21, DEV_METRICS=22, DEV_JOIN_FULL=23, DEV_JOIN_LEFT=24, DEV_JOIN_RIGHT=25,
- DEV_FORK=26, UNKNOWN_CMD=27, LINE_COMMENT=28, MULTILINE_COMMENT=29, WS=30,
- PIPE=31, QUOTED_STRING=32, INTEGER_LITERAL=33, DECIMAL_LITERAL=34, BY=35,
- AND=36, ASC=37, ASSIGN=38, CAST_OP=39, COLON=40, COMMA=41, DESC=42, DOT=43,
- FALSE=44, FIRST=45, IN=46, IS=47, LAST=48, LIKE=49, NOT=50, NULL=51, NULLS=52,
- OR=53, PARAM=54, RLIKE=55, TRUE=56, EQ=57, CIEQ=58, NEQ=59, LT=60, LTE=61,
- GT=62, GTE=63, PLUS=64, MINUS=65, ASTERISK=66, SLASH=67, PERCENT=68, LEFT_BRACES=69,
- RIGHT_BRACES=70, NAMED_OR_POSITIONAL_PARAM=71, OPENING_BRACKET=72, CLOSING_BRACKET=73,
- LP=74, RP=75, UNQUOTED_IDENTIFIER=76, QUOTED_IDENTIFIER=77, EXPR_LINE_COMMENT=78,
- EXPR_MULTILINE_COMMENT=79, EXPR_WS=80, EXPLAIN_WS=81, EXPLAIN_LINE_COMMENT=82,
- EXPLAIN_MULTILINE_COMMENT=83, METADATA=84, UNQUOTED_SOURCE=85, FROM_LINE_COMMENT=86,
- FROM_MULTILINE_COMMENT=87, FROM_WS=88, ID_PATTERN=89, PROJECT_LINE_COMMENT=90,
- PROJECT_MULTILINE_COMMENT=91, PROJECT_WS=92, AS=93, RENAME_LINE_COMMENT=94,
- RENAME_MULTILINE_COMMENT=95, RENAME_WS=96, ON=97, WITH=98, ENRICH_POLICY_NAME=99,
- ENRICH_LINE_COMMENT=100, ENRICH_MULTILINE_COMMENT=101, ENRICH_WS=102,
- ENRICH_FIELD_LINE_COMMENT=103, ENRICH_FIELD_MULTILINE_COMMENT=104, ENRICH_FIELD_WS=105,
- MVEXPAND_LINE_COMMENT=106, MVEXPAND_MULTILINE_COMMENT=107, MVEXPAND_WS=108,
- INFO=109, SHOW_LINE_COMMENT=110, SHOW_MULTILINE_COMMENT=111, SHOW_WS=112,
- SETTING=113, SETTING_LINE_COMMENT=114, SETTTING_MULTILINE_COMMENT=115,
- SETTING_WS=116, LOOKUP_LINE_COMMENT=117, LOOKUP_MULTILINE_COMMENT=118,
- LOOKUP_WS=119, LOOKUP_FIELD_LINE_COMMENT=120, LOOKUP_FIELD_MULTILINE_COMMENT=121,
- LOOKUP_FIELD_WS=122, JOIN=123, USING=124, JOIN_LINE_COMMENT=125, JOIN_MULTILINE_COMMENT=126,
- JOIN_WS=127, METRICS_LINE_COMMENT=128, METRICS_MULTILINE_COMMENT=129,
- METRICS_WS=130, CLOSING_METRICS_LINE_COMMENT=131, CLOSING_METRICS_MULTILINE_COMMENT=132,
- CLOSING_METRICS_WS=133, CHANGE_POINT_LINE_COMMENT=134, CHANGE_POINT_MULTILINE_COMMENT=135,
- CHANGE_POINT_WS=136, INSIST_WS=137, INSIST_LINE_COMMENT=138, INSIST_MULTILINE_COMMENT=139,
- FORK_WS=140, FORK_LINE_COMMENT=141, FORK_MULTILINE_COMMENT=142;
+ LINE_COMMENT=1, MULTILINE_COMMENT=2, WS=3, DEV_CHANGE_POINT=4, ENRICH=5,
+ EXPLAIN=6, DISSECT=7, EVAL=8, GROK=9, LIMIT=10, ROW=11, SORT=12, STATS=13,
+ WHERE=14, DEV_INLINESTATS=15, FROM=16, DEV_FORK=17, JOIN_LOOKUP=18, DEV_JOIN_FULL=19,
+ DEV_JOIN_LEFT=20, DEV_JOIN_RIGHT=21, DEV_LOOKUP=22, DEV_METRICS=23, MV_EXPAND=24,
+ DROP=25, KEEP=26, DEV_INSIST=27, RENAME=28, SHOW=29, UNKNOWN_CMD=30, CHANGE_POINT_LINE_COMMENT=31,
+ CHANGE_POINT_MULTILINE_COMMENT=32, CHANGE_POINT_WS=33, ON=34, WITH=35,
+ ENRICH_POLICY_NAME=36, ENRICH_LINE_COMMENT=37, ENRICH_MULTILINE_COMMENT=38,
+ ENRICH_WS=39, ENRICH_FIELD_LINE_COMMENT=40, ENRICH_FIELD_MULTILINE_COMMENT=41,
+ ENRICH_FIELD_WS=42, SETTING=43, SETTING_LINE_COMMENT=44, SETTTING_MULTILINE_COMMENT=45,
+ SETTING_WS=46, EXPLAIN_WS=47, EXPLAIN_LINE_COMMENT=48, EXPLAIN_MULTILINE_COMMENT=49,
+ PIPE=50, QUOTED_STRING=51, INTEGER_LITERAL=52, DECIMAL_LITERAL=53, BY=54,
+ AND=55, ASC=56, ASSIGN=57, CAST_OP=58, COLON=59, COMMA=60, DESC=61, DOT=62,
+ FALSE=63, FIRST=64, IN=65, IS=66, LAST=67, LIKE=68, NOT=69, NULL=70, NULLS=71,
+ OR=72, PARAM=73, RLIKE=74, TRUE=75, EQ=76, CIEQ=77, NEQ=78, LT=79, LTE=80,
+ GT=81, GTE=82, PLUS=83, MINUS=84, ASTERISK=85, SLASH=86, PERCENT=87, LEFT_BRACES=88,
+ RIGHT_BRACES=89, NAMED_OR_POSITIONAL_PARAM=90, OPENING_BRACKET=91, CLOSING_BRACKET=92,
+ LP=93, RP=94, UNQUOTED_IDENTIFIER=95, QUOTED_IDENTIFIER=96, EXPR_LINE_COMMENT=97,
+ EXPR_MULTILINE_COMMENT=98, EXPR_WS=99, METADATA=100, UNQUOTED_SOURCE=101,
+ FROM_LINE_COMMENT=102, FROM_MULTILINE_COMMENT=103, FROM_WS=104, FORK_WS=105,
+ FORK_LINE_COMMENT=106, FORK_MULTILINE_COMMENT=107, JOIN=108, USING=109,
+ JOIN_LINE_COMMENT=110, JOIN_MULTILINE_COMMENT=111, JOIN_WS=112, LOOKUP_LINE_COMMENT=113,
+ LOOKUP_MULTILINE_COMMENT=114, LOOKUP_WS=115, LOOKUP_FIELD_LINE_COMMENT=116,
+ LOOKUP_FIELD_MULTILINE_COMMENT=117, LOOKUP_FIELD_WS=118, METRICS_LINE_COMMENT=119,
+ METRICS_MULTILINE_COMMENT=120, METRICS_WS=121, CLOSING_METRICS_LINE_COMMENT=122,
+ CLOSING_METRICS_MULTILINE_COMMENT=123, CLOSING_METRICS_WS=124, MVEXPAND_LINE_COMMENT=125,
+ MVEXPAND_MULTILINE_COMMENT=126, MVEXPAND_WS=127, ID_PATTERN=128, PROJECT_LINE_COMMENT=129,
+ PROJECT_MULTILINE_COMMENT=130, PROJECT_WS=131, AS=132, RENAME_LINE_COMMENT=133,
+ RENAME_MULTILINE_COMMENT=134, RENAME_WS=135, INFO=136, SHOW_LINE_COMMENT=137,
+ SHOW_MULTILINE_COMMENT=138, SHOW_WS=139;
public static final int
RULE_singleStatement = 0, RULE_query = 1, RULE_sourceCommand = 2, RULE_processingCommand = 3,
- RULE_whereCommand = 4, RULE_booleanExpression = 5, RULE_regexBooleanExpression = 6,
- RULE_matchBooleanExpression = 7, RULE_valueExpression = 8, RULE_operatorExpression = 9,
- RULE_primaryExpression = 10, RULE_functionExpression = 11, RULE_functionName = 12,
- RULE_mapExpression = 13, RULE_entryExpression = 14, RULE_dataType = 15,
- RULE_rowCommand = 16, RULE_fields = 17, RULE_field = 18, RULE_fromCommand = 19,
- RULE_indexPattern = 20, RULE_clusterString = 21, RULE_indexString = 22,
- RULE_metadata = 23, RULE_metricsCommand = 24, RULE_evalCommand = 25, RULE_statsCommand = 26,
- RULE_aggFields = 27, RULE_aggField = 28, RULE_qualifiedName = 29, RULE_qualifiedNamePattern = 30,
- RULE_qualifiedNamePatterns = 31, RULE_identifier = 32, RULE_identifierPattern = 33,
- RULE_constant = 34, RULE_parameter = 35, RULE_identifierOrParameter = 36,
- RULE_limitCommand = 37, RULE_sortCommand = 38, RULE_orderExpression = 39,
- RULE_keepCommand = 40, RULE_dropCommand = 41, RULE_renameCommand = 42,
- RULE_renameClause = 43, RULE_dissectCommand = 44, RULE_grokCommand = 45,
- RULE_mvExpandCommand = 46, RULE_commandOptions = 47, RULE_commandOption = 48,
- RULE_booleanValue = 49, RULE_numericValue = 50, RULE_decimalValue = 51,
- RULE_integerValue = 52, RULE_string = 53, RULE_comparisonOperator = 54,
- RULE_explainCommand = 55, RULE_subqueryExpression = 56, RULE_showCommand = 57,
- RULE_enrichCommand = 58, RULE_enrichWithClause = 59, RULE_lookupCommand = 60,
- RULE_inlinestatsCommand = 61, RULE_joinCommand = 62, RULE_joinTarget = 63,
- RULE_joinCondition = 64, RULE_joinPredicate = 65, RULE_changePointCommand = 66,
- RULE_insistCommand = 67, RULE_forkCommand = 68, RULE_forkSubQueries = 69,
- RULE_forkSubQuery = 70, RULE_forkSubQueryCommand = 71, RULE_forkSubQueryProcessingCommand = 72;
+ RULE_whereCommand = 4, RULE_dataType = 5, RULE_rowCommand = 6, RULE_fields = 7,
+ RULE_field = 8, RULE_fromCommand = 9, RULE_indexPattern = 10, RULE_clusterString = 11,
+ RULE_indexString = 12, RULE_metadata = 13, RULE_metricsCommand = 14, RULE_evalCommand = 15,
+ RULE_statsCommand = 16, RULE_aggFields = 17, RULE_aggField = 18, RULE_qualifiedName = 19,
+ RULE_qualifiedNamePattern = 20, RULE_qualifiedNamePatterns = 21, RULE_identifier = 22,
+ RULE_identifierPattern = 23, RULE_parameter = 24, RULE_identifierOrParameter = 25,
+ RULE_limitCommand = 26, RULE_sortCommand = 27, RULE_orderExpression = 28,
+ RULE_keepCommand = 29, RULE_dropCommand = 30, RULE_renameCommand = 31,
+ RULE_renameClause = 32, RULE_dissectCommand = 33, RULE_grokCommand = 34,
+ RULE_mvExpandCommand = 35, RULE_commandOptions = 36, RULE_commandOption = 37,
+ RULE_explainCommand = 38, RULE_subqueryExpression = 39, RULE_showCommand = 40,
+ RULE_enrichCommand = 41, RULE_enrichWithClause = 42, RULE_lookupCommand = 43,
+ RULE_inlinestatsCommand = 44, RULE_changePointCommand = 45, RULE_insistCommand = 46,
+ RULE_forkCommand = 47, RULE_forkSubQueries = 48, RULE_forkSubQuery = 49,
+ RULE_forkSubQueryCommand = 50, RULE_forkSubQueryProcessingCommand = 51,
+ RULE_booleanExpression = 52, RULE_regexBooleanExpression = 53, RULE_matchBooleanExpression = 54,
+ RULE_valueExpression = 55, RULE_operatorExpression = 56, RULE_primaryExpression = 57,
+ RULE_functionExpression = 58, RULE_functionName = 59, RULE_mapExpression = 60,
+ RULE_entryExpression = 61, RULE_constant = 62, RULE_booleanValue = 63,
+ RULE_numericValue = 64, RULE_decimalValue = 65, RULE_integerValue = 66,
+ RULE_string = 67, RULE_comparisonOperator = 68, RULE_joinCommand = 69,
+ RULE_joinTarget = 70, RULE_joinCondition = 71, RULE_joinPredicate = 72;
private static String[] makeRuleNames() {
return new String[] {
"singleStatement", "query", "sourceCommand", "processingCommand", "whereCommand",
- "booleanExpression", "regexBooleanExpression", "matchBooleanExpression",
- "valueExpression", "operatorExpression", "primaryExpression", "functionExpression",
- "functionName", "mapExpression", "entryExpression", "dataType", "rowCommand",
- "fields", "field", "fromCommand", "indexPattern", "clusterString", "indexString",
- "metadata", "metricsCommand", "evalCommand", "statsCommand", "aggFields",
- "aggField", "qualifiedName", "qualifiedNamePattern", "qualifiedNamePatterns",
- "identifier", "identifierPattern", "constant", "parameter", "identifierOrParameter",
- "limitCommand", "sortCommand", "orderExpression", "keepCommand", "dropCommand",
- "renameCommand", "renameClause", "dissectCommand", "grokCommand", "mvExpandCommand",
- "commandOptions", "commandOption", "booleanValue", "numericValue", "decimalValue",
- "integerValue", "string", "comparisonOperator", "explainCommand", "subqueryExpression",
- "showCommand", "enrichCommand", "enrichWithClause", "lookupCommand",
- "inlinestatsCommand", "joinCommand", "joinTarget", "joinCondition", "joinPredicate",
- "changePointCommand", "insistCommand", "forkCommand", "forkSubQueries",
- "forkSubQuery", "forkSubQueryCommand", "forkSubQueryProcessingCommand"
+ "dataType", "rowCommand", "fields", "field", "fromCommand", "indexPattern",
+ "clusterString", "indexString", "metadata", "metricsCommand", "evalCommand",
+ "statsCommand", "aggFields", "aggField", "qualifiedName", "qualifiedNamePattern",
+ "qualifiedNamePatterns", "identifier", "identifierPattern", "parameter",
+ "identifierOrParameter", "limitCommand", "sortCommand", "orderExpression",
+ "keepCommand", "dropCommand", "renameCommand", "renameClause", "dissectCommand",
+ "grokCommand", "mvExpandCommand", "commandOptions", "commandOption",
+ "explainCommand", "subqueryExpression", "showCommand", "enrichCommand",
+ "enrichWithClause", "lookupCommand", "inlinestatsCommand", "changePointCommand",
+ "insistCommand", "forkCommand", "forkSubQueries", "forkSubQuery", "forkSubQueryCommand",
+ "forkSubQueryProcessingCommand", "booleanExpression", "regexBooleanExpression",
+ "matchBooleanExpression", "valueExpression", "operatorExpression", "primaryExpression",
+ "functionExpression", "functionName", "mapExpression", "entryExpression",
+ "constant", "booleanValue", "numericValue", "decimalValue", "integerValue",
+ "string", "comparisonOperator", "joinCommand", "joinTarget", "joinCondition",
+ "joinPredicate"
};
}
public static final String[] ruleNames = makeRuleNames();
private static String[] makeLiteralNames() {
return new String[] {
- null, "'dissect'", "'drop'", "'enrich'", "'eval'", "'explain'", "'from'",
- "'grok'", "'keep'", "'limit'", "'mv_expand'", "'rename'", "'row'", "'show'",
- "'sort'", "'stats'", "'where'", "'lookup'", null, null, null, null, null,
- null, null, null, null, null, null, null, null, "'|'", null, null, null,
- "'by'", "'and'", "'asc'", "'='", "'::'", "':'", "','", "'desc'", "'.'",
- "'false'", "'first'", "'in'", "'is'", "'last'", "'like'", "'not'", "'null'",
- "'nulls'", "'or'", "'?'", "'rlike'", "'true'", "'=='", "'=~'", "'!='",
- "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'{'",
- "'}'", null, null, "']'", null, "')'", null, null, null, null, null,
- null, null, null, "'metadata'", null, null, null, null, null, null, null,
- null, "'as'", null, null, null, "'on'", "'with'", null, null, null, null,
- null, null, null, null, null, null, "'info'", null, null, null, null,
- null, null, null, null, null, null, null, null, null, "'join'", "'USING'"
+ null, null, null, null, null, "'enrich'", "'explain'", "'dissect'", "'eval'",
+ "'grok'", "'limit'", "'row'", "'sort'", "'stats'", "'where'", null, "'from'",
+ null, "'lookup'", null, null, null, null, null, "'mv_expand'", "'drop'",
+ "'keep'", null, "'rename'", "'show'", null, null, null, null, "'on'",
+ "'with'", null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, "'|'", null, null, null, "'by'", "'and'", "'asc'",
+ "'='", "'::'", "':'", "','", "'desc'", "'.'", "'false'", "'first'", "'in'",
+ "'is'", "'last'", "'like'", "'not'", "'null'", "'nulls'", "'or'", "'?'",
+ "'rlike'", "'true'", "'=='", "'=~'", "'!='", "'<'", "'<='", "'>'", "'>='",
+ "'+'", "'-'", "'*'", "'/'", "'%'", "'{'", "'}'", null, null, "']'", null,
+ "')'", null, null, null, null, null, "'metadata'", null, null, null,
+ null, null, null, null, "'join'", "'USING'", null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, "'as'", null, null, null, "'info'"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static String[] makeSymbolicNames() {
return new String[] {
- null, "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK",
- "KEEP", "LIMIT", "MV_EXPAND", "RENAME", "ROW", "SHOW", "SORT", "STATS",
- "WHERE", "JOIN_LOOKUP", "DEV_CHANGE_POINT", "DEV_INLINESTATS", "DEV_INSIST",
- "DEV_LOOKUP", "DEV_METRICS", "DEV_JOIN_FULL", "DEV_JOIN_LEFT", "DEV_JOIN_RIGHT",
- "DEV_FORK", "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT", "WS",
+ null, "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "DEV_CHANGE_POINT",
+ "ENRICH", "EXPLAIN", "DISSECT", "EVAL", "GROK", "LIMIT", "ROW", "SORT",
+ "STATS", "WHERE", "DEV_INLINESTATS", "FROM", "DEV_FORK", "JOIN_LOOKUP",
+ "DEV_JOIN_FULL", "DEV_JOIN_LEFT", "DEV_JOIN_RIGHT", "DEV_LOOKUP", "DEV_METRICS",
+ "MV_EXPAND", "DROP", "KEEP", "DEV_INSIST", "RENAME", "SHOW", "UNKNOWN_CMD",
+ "CHANGE_POINT_LINE_COMMENT", "CHANGE_POINT_MULTILINE_COMMENT", "CHANGE_POINT_WS",
+ "ON", "WITH", "ENRICH_POLICY_NAME", "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT",
+ "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT",
+ "ENRICH_FIELD_WS", "SETTING", "SETTING_LINE_COMMENT", "SETTTING_MULTILINE_COMMENT",
+ "SETTING_WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT",
"PIPE", "QUOTED_STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY",
"AND", "ASC", "ASSIGN", "CAST_OP", "COLON", "COMMA", "DESC", "DOT", "FALSE",
"FIRST", "IN", "IS", "LAST", "LIKE", "NOT", "NULL", "NULLS", "OR", "PARAM",
@@ -133,23 +139,17 @@ public class EsqlBaseParser extends ParserConfig {
"MINUS", "ASTERISK", "SLASH", "PERCENT", "LEFT_BRACES", "RIGHT_BRACES",
"NAMED_OR_POSITIONAL_PARAM", "OPENING_BRACKET", "CLOSING_BRACKET", "LP",
"RP", "UNQUOTED_IDENTIFIER", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT",
- "EXPR_MULTILINE_COMMENT", "EXPR_WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT",
- "EXPLAIN_MULTILINE_COMMENT", "METADATA", "UNQUOTED_SOURCE", "FROM_LINE_COMMENT",
- "FROM_MULTILINE_COMMENT", "FROM_WS", "ID_PATTERN", "PROJECT_LINE_COMMENT",
+ "EXPR_MULTILINE_COMMENT", "EXPR_WS", "METADATA", "UNQUOTED_SOURCE", "FROM_LINE_COMMENT",
+ "FROM_MULTILINE_COMMENT", "FROM_WS", "FORK_WS", "FORK_LINE_COMMENT",
+ "FORK_MULTILINE_COMMENT", "JOIN", "USING", "JOIN_LINE_COMMENT", "JOIN_MULTILINE_COMMENT",
+ "JOIN_WS", "LOOKUP_LINE_COMMENT", "LOOKUP_MULTILINE_COMMENT", "LOOKUP_WS",
+ "LOOKUP_FIELD_LINE_COMMENT", "LOOKUP_FIELD_MULTILINE_COMMENT", "LOOKUP_FIELD_WS",
+ "METRICS_LINE_COMMENT", "METRICS_MULTILINE_COMMENT", "METRICS_WS", "CLOSING_METRICS_LINE_COMMENT",
+ "CLOSING_METRICS_MULTILINE_COMMENT", "CLOSING_METRICS_WS", "MVEXPAND_LINE_COMMENT",
+ "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS", "ID_PATTERN", "PROJECT_LINE_COMMENT",
"PROJECT_MULTILINE_COMMENT", "PROJECT_WS", "AS", "RENAME_LINE_COMMENT",
- "RENAME_MULTILINE_COMMENT", "RENAME_WS", "ON", "WITH", "ENRICH_POLICY_NAME",
- "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT",
- "ENRICH_FIELD_MULTILINE_COMMENT", "ENRICH_FIELD_WS", "MVEXPAND_LINE_COMMENT",
- "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS", "INFO", "SHOW_LINE_COMMENT",
- "SHOW_MULTILINE_COMMENT", "SHOW_WS", "SETTING", "SETTING_LINE_COMMENT",
- "SETTTING_MULTILINE_COMMENT", "SETTING_WS", "LOOKUP_LINE_COMMENT", "LOOKUP_MULTILINE_COMMENT",
- "LOOKUP_WS", "LOOKUP_FIELD_LINE_COMMENT", "LOOKUP_FIELD_MULTILINE_COMMENT",
- "LOOKUP_FIELD_WS", "JOIN", "USING", "JOIN_LINE_COMMENT", "JOIN_MULTILINE_COMMENT",
- "JOIN_WS", "METRICS_LINE_COMMENT", "METRICS_MULTILINE_COMMENT", "METRICS_WS",
- "CLOSING_METRICS_LINE_COMMENT", "CLOSING_METRICS_MULTILINE_COMMENT",
- "CLOSING_METRICS_WS", "CHANGE_POINT_LINE_COMMENT", "CHANGE_POINT_MULTILINE_COMMENT",
- "CHANGE_POINT_WS", "INSIST_WS", "INSIST_LINE_COMMENT", "INSIST_MULTILINE_COMMENT",
- "FORK_WS", "FORK_LINE_COMMENT", "FORK_MULTILINE_COMMENT"
+ "RENAME_MULTILINE_COMMENT", "RENAME_WS", "INFO", "SHOW_LINE_COMMENT",
+ "SHOW_MULTILINE_COMMENT", "SHOW_WS"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@@ -750,6 +750,3131 @@ public class EsqlBaseParser extends ParserConfig {
return _localctx;
}
+ @SuppressWarnings("CheckReturnValue")
+ public static class DataTypeContext extends ParserRuleContext {
+ @SuppressWarnings("this-escape")
+ public DataTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_dataType; }
+
+ @SuppressWarnings("this-escape")
+ public DataTypeContext() { }
+ public void copyFrom(DataTypeContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ToDataTypeContext extends DataTypeContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public ToDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterToDataType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitToDataType(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitToDataType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final DataTypeContext dataType() throws RecognitionException {
+ DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_dataType);
+ try {
+ _localctx = new ToDataTypeContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(196);
+ identifier();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class RowCommandContext extends ParserRuleContext {
+ public TerminalNode ROW() { return getToken(EsqlBaseParser.ROW, 0); }
+ public FieldsContext fields() {
+ return getRuleContext(FieldsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public RowCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_rowCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRowCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRowCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRowCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final RowCommandContext rowCommand() throws RecognitionException {
+ RowCommandContext _localctx = new RowCommandContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_rowCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(198);
+ match(ROW);
+ setState(199);
+ fields();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldsContext extends ParserRuleContext {
+ public List field() {
+ return getRuleContexts(FieldContext.class);
+ }
+ public FieldContext field(int i) {
+ return getRuleContext(FieldContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public FieldsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fields; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFields(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFields(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFields(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final FieldsContext fields() throws RecognitionException {
+ FieldsContext _localctx = new FieldsContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_fields);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(201);
+ field();
+ setState(206);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,3,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(202);
+ match(COMMA);
+ setState(203);
+ field();
+ }
+ }
+ }
+ setState(208);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,3,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldContext extends ParserRuleContext {
+ public BooleanExpressionContext booleanExpression() {
+ return getRuleContext(BooleanExpressionContext.class,0);
+ }
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
+ @SuppressWarnings("this-escape")
+ public FieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_field; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterField(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitField(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitField(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final FieldContext field() throws RecognitionException {
+ FieldContext _localctx = new FieldContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_field);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(212);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
+ case 1:
+ {
+ setState(209);
+ qualifiedName();
+ setState(210);
+ match(ASSIGN);
+ }
+ break;
+ }
+ setState(214);
+ booleanExpression(0);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FromCommandContext extends ParserRuleContext {
+ public TerminalNode FROM() { return getToken(EsqlBaseParser.FROM, 0); }
+ public List indexPattern() {
+ return getRuleContexts(IndexPatternContext.class);
+ }
+ public IndexPatternContext indexPattern(int i) {
+ return getRuleContext(IndexPatternContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ public MetadataContext metadata() {
+ return getRuleContext(MetadataContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public FromCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fromCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFromCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFromCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFromCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final FromCommandContext fromCommand() throws RecognitionException {
+ FromCommandContext _localctx = new FromCommandContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_fromCommand);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(216);
+ match(FROM);
+ setState(217);
+ indexPattern();
+ setState(222);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,5,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(218);
+ match(COMMA);
+ setState(219);
+ indexPattern();
+ }
+ }
+ }
+ setState(224);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,5,_ctx);
+ }
+ setState(226);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
+ case 1:
+ {
+ setState(225);
+ metadata();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IndexPatternContext extends ParserRuleContext {
+ public IndexStringContext indexString() {
+ return getRuleContext(IndexStringContext.class,0);
+ }
+ public ClusterStringContext clusterString() {
+ return getRuleContext(ClusterStringContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(EsqlBaseParser.COLON, 0); }
+ @SuppressWarnings("this-escape")
+ public IndexPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_indexPattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIndexPattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIndexPattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIndexPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IndexPatternContext indexPattern() throws RecognitionException {
+ IndexPatternContext _localctx = new IndexPatternContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_indexPattern);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(231);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
+ case 1:
+ {
+ setState(228);
+ clusterString();
+ setState(229);
+ match(COLON);
+ }
+ break;
+ }
+ setState(233);
+ indexString();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClusterStringContext extends ParserRuleContext {
+ public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
+ public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
+ @SuppressWarnings("this-escape")
+ public ClusterStringContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_clusterString; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterClusterString(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitClusterString(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitClusterString(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ClusterStringContext clusterString() throws RecognitionException {
+ ClusterStringContext _localctx = new ClusterStringContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_clusterString);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(235);
+ _la = _input.LA(1);
+ if ( !(_la==QUOTED_STRING || _la==UNQUOTED_SOURCE) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IndexStringContext extends ParserRuleContext {
+ public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
+ public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
+ @SuppressWarnings("this-escape")
+ public IndexStringContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_indexString; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIndexString(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIndexString(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIndexString(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IndexStringContext indexString() throws RecognitionException {
+ IndexStringContext _localctx = new IndexStringContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_indexString);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(237);
+ _la = _input.LA(1);
+ if ( !(_la==QUOTED_STRING || _la==UNQUOTED_SOURCE) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MetadataContext extends ParserRuleContext {
+ public TerminalNode METADATA() { return getToken(EsqlBaseParser.METADATA, 0); }
+ public List UNQUOTED_SOURCE() { return getTokens(EsqlBaseParser.UNQUOTED_SOURCE); }
+ public TerminalNode UNQUOTED_SOURCE(int i) {
+ return getToken(EsqlBaseParser.UNQUOTED_SOURCE, i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public MetadataContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_metadata; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMetadata(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMetadata(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMetadata(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final MetadataContext metadata() throws RecognitionException {
+ MetadataContext _localctx = new MetadataContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_metadata);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(239);
+ match(METADATA);
+ setState(240);
+ match(UNQUOTED_SOURCE);
+ setState(245);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(241);
+ match(COMMA);
+ setState(242);
+ match(UNQUOTED_SOURCE);
+ }
+ }
+ }
+ setState(247);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MetricsCommandContext extends ParserRuleContext {
+ public AggFieldsContext aggregates;
+ public FieldsContext grouping;
+ public TerminalNode DEV_METRICS() { return getToken(EsqlBaseParser.DEV_METRICS, 0); }
+ public List indexPattern() {
+ return getRuleContexts(IndexPatternContext.class);
+ }
+ public IndexPatternContext indexPattern(int i) {
+ return getRuleContext(IndexPatternContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
+ public AggFieldsContext aggFields() {
+ return getRuleContext(AggFieldsContext.class,0);
+ }
+ public FieldsContext fields() {
+ return getRuleContext(FieldsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public MetricsCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_metricsCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMetricsCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMetricsCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMetricsCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final MetricsCommandContext metricsCommand() throws RecognitionException {
+ MetricsCommandContext _localctx = new MetricsCommandContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_metricsCommand);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(248);
+ match(DEV_METRICS);
+ setState(249);
+ indexPattern();
+ setState(254);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,9,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(250);
+ match(COMMA);
+ setState(251);
+ indexPattern();
+ }
+ }
+ }
+ setState(256);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,9,_ctx);
+ }
+ setState(258);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
+ case 1:
+ {
+ setState(257);
+ ((MetricsCommandContext)_localctx).aggregates = aggFields();
+ }
+ break;
+ }
+ setState(262);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
+ case 1:
+ {
+ setState(260);
+ match(BY);
+ setState(261);
+ ((MetricsCommandContext)_localctx).grouping = fields();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EvalCommandContext extends ParserRuleContext {
+ public TerminalNode EVAL() { return getToken(EsqlBaseParser.EVAL, 0); }
+ public FieldsContext fields() {
+ return getRuleContext(FieldsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public EvalCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_evalCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEvalCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEvalCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEvalCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final EvalCommandContext evalCommand() throws RecognitionException {
+ EvalCommandContext _localctx = new EvalCommandContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_evalCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(264);
+ match(EVAL);
+ setState(265);
+ fields();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StatsCommandContext extends ParserRuleContext {
+ public AggFieldsContext stats;
+ public FieldsContext grouping;
+ public TerminalNode STATS() { return getToken(EsqlBaseParser.STATS, 0); }
+ public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
+ public AggFieldsContext aggFields() {
+ return getRuleContext(AggFieldsContext.class,0);
+ }
+ public FieldsContext fields() {
+ return getRuleContext(FieldsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public StatsCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_statsCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterStatsCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitStatsCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitStatsCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final StatsCommandContext statsCommand() throws RecognitionException {
+ StatsCommandContext _localctx = new StatsCommandContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_statsCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(267);
+ match(STATS);
+ setState(269);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
+ case 1:
+ {
+ setState(268);
+ ((StatsCommandContext)_localctx).stats = aggFields();
+ }
+ break;
+ }
+ setState(273);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
+ case 1:
+ {
+ setState(271);
+ match(BY);
+ setState(272);
+ ((StatsCommandContext)_localctx).grouping = fields();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AggFieldsContext extends ParserRuleContext {
+ public List aggField() {
+ return getRuleContexts(AggFieldContext.class);
+ }
+ public AggFieldContext aggField(int i) {
+ return getRuleContext(AggFieldContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public AggFieldsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_aggFields; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterAggFields(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitAggFields(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitAggFields(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final AggFieldsContext aggFields() throws RecognitionException {
+ AggFieldsContext _localctx = new AggFieldsContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_aggFields);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(275);
+ aggField();
+ setState(280);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,14,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(276);
+ match(COMMA);
+ setState(277);
+ aggField();
+ }
+ }
+ }
+ setState(282);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,14,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AggFieldContext extends ParserRuleContext {
+ public FieldContext field() {
+ return getRuleContext(FieldContext.class,0);
+ }
+ public TerminalNode WHERE() { return getToken(EsqlBaseParser.WHERE, 0); }
+ public BooleanExpressionContext booleanExpression() {
+ return getRuleContext(BooleanExpressionContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public AggFieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_aggField; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterAggField(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitAggField(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitAggField(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final AggFieldContext aggField() throws RecognitionException {
+ AggFieldContext _localctx = new AggFieldContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_aggField);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(283);
+ field();
+ setState(286);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
+ case 1:
+ {
+ setState(284);
+ match(WHERE);
+ setState(285);
+ booleanExpression(0);
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class QualifiedNameContext extends ParserRuleContext {
+ public List identifierOrParameter() {
+ return getRuleContexts(IdentifierOrParameterContext.class);
+ }
+ public IdentifierOrParameterContext identifierOrParameter(int i) {
+ return getRuleContext(IdentifierOrParameterContext.class,i);
+ }
+ public List DOT() { return getTokens(EsqlBaseParser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(EsqlBaseParser.DOT, i);
+ }
+ @SuppressWarnings("this-escape")
+ public QualifiedNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_qualifiedName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedName(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final QualifiedNameContext qualifiedName() throws RecognitionException {
+ QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_qualifiedName);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(288);
+ identifierOrParameter();
+ setState(293);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(289);
+ match(DOT);
+ setState(290);
+ identifierOrParameter();
+ }
+ }
+ }
+ setState(295);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class QualifiedNamePatternContext extends ParserRuleContext {
+ public List identifierPattern() {
+ return getRuleContexts(IdentifierPatternContext.class);
+ }
+ public IdentifierPatternContext identifierPattern(int i) {
+ return getRuleContext(IdentifierPatternContext.class,i);
+ }
+ public List DOT() { return getTokens(EsqlBaseParser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(EsqlBaseParser.DOT, i);
+ }
+ @SuppressWarnings("this-escape")
+ public QualifiedNamePatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_qualifiedNamePattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedNamePattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedNamePattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedNamePattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final QualifiedNamePatternContext qualifiedNamePattern() throws RecognitionException {
+ QualifiedNamePatternContext _localctx = new QualifiedNamePatternContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_qualifiedNamePattern);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(296);
+ identifierPattern();
+ setState(301);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,17,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(297);
+ match(DOT);
+ setState(298);
+ identifierPattern();
+ }
+ }
+ }
+ setState(303);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,17,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class QualifiedNamePatternsContext extends ParserRuleContext {
+ public List qualifiedNamePattern() {
+ return getRuleContexts(QualifiedNamePatternContext.class);
+ }
+ public QualifiedNamePatternContext qualifiedNamePattern(int i) {
+ return getRuleContext(QualifiedNamePatternContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public QualifiedNamePatternsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_qualifiedNamePatterns; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedNamePatterns(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedNamePatterns(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedNamePatterns(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final QualifiedNamePatternsContext qualifiedNamePatterns() throws RecognitionException {
+ QualifiedNamePatternsContext _localctx = new QualifiedNamePatternsContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_qualifiedNamePatterns);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(304);
+ qualifiedNamePattern();
+ setState(309);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(305);
+ match(COMMA);
+ setState(306);
+ qualifiedNamePattern();
+ }
+ }
+ }
+ setState(311);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IdentifierContext extends ParserRuleContext {
+ public TerminalNode UNQUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.UNQUOTED_IDENTIFIER, 0); }
+ public TerminalNode QUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.QUOTED_IDENTIFIER, 0); }
+ @SuppressWarnings("this-escape")
+ public IdentifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_identifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifier(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifier(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IdentifierContext identifier() throws RecognitionException {
+ IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_identifier);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(312);
+ _la = _input.LA(1);
+ if ( !(_la==UNQUOTED_IDENTIFIER || _la==QUOTED_IDENTIFIER) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IdentifierPatternContext extends ParserRuleContext {
+ public TerminalNode ID_PATTERN() { return getToken(EsqlBaseParser.ID_PATTERN, 0); }
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public IdentifierPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_identifierPattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifierPattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifierPattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifierPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IdentifierPatternContext identifierPattern() throws RecognitionException {
+ IdentifierPatternContext _localctx = new IdentifierPatternContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_identifierPattern);
+ try {
+ setState(316);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case ID_PATTERN:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(314);
+ match(ID_PATTERN);
+ }
+ break;
+ case PARAM:
+ case NAMED_OR_POSITIONAL_PARAM:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(315);
+ parameter();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ParameterContext extends ParserRuleContext {
+ @SuppressWarnings("this-escape")
+ public ParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_parameter; }
+
+ @SuppressWarnings("this-escape")
+ public ParameterContext() { }
+ public void copyFrom(ParameterContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputNamedOrPositionalParamContext extends ParameterContext {
+ public TerminalNode NAMED_OR_POSITIONAL_PARAM() { return getToken(EsqlBaseParser.NAMED_OR_POSITIONAL_PARAM, 0); }
+ @SuppressWarnings("this-escape")
+ public InputNamedOrPositionalParamContext(ParameterContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputNamedOrPositionalParam(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputNamedOrPositionalParam(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputNamedOrPositionalParam(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputParamContext extends ParameterContext {
+ public TerminalNode PARAM() { return getToken(EsqlBaseParser.PARAM, 0); }
+ @SuppressWarnings("this-escape")
+ public InputParamContext(ParameterContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputParam(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputParam(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputParam(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ParameterContext parameter() throws RecognitionException {
+ ParameterContext _localctx = new ParameterContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_parameter);
+ try {
+ setState(320);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case PARAM:
+ _localctx = new InputParamContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(318);
+ match(PARAM);
+ }
+ break;
+ case NAMED_OR_POSITIONAL_PARAM:
+ _localctx = new InputNamedOrPositionalParamContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(319);
+ match(NAMED_OR_POSITIONAL_PARAM);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IdentifierOrParameterContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public IdentifierOrParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_identifierOrParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifierOrParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifierOrParameter(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifierOrParameter(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final IdentifierOrParameterContext identifierOrParameter() throws RecognitionException {
+ IdentifierOrParameterContext _localctx = new IdentifierOrParameterContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_identifierOrParameter);
+ try {
+ setState(324);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case UNQUOTED_IDENTIFIER:
+ case QUOTED_IDENTIFIER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(322);
+ identifier();
+ }
+ break;
+ case PARAM:
+ case NAMED_OR_POSITIONAL_PARAM:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(323);
+ parameter();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LimitCommandContext extends ParserRuleContext {
+ public TerminalNode LIMIT() { return getToken(EsqlBaseParser.LIMIT, 0); }
+ public TerminalNode INTEGER_LITERAL() { return getToken(EsqlBaseParser.INTEGER_LITERAL, 0); }
+ @SuppressWarnings("this-escape")
+ public LimitCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_limitCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLimitCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLimitCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLimitCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final LimitCommandContext limitCommand() throws RecognitionException {
+ LimitCommandContext _localctx = new LimitCommandContext(_ctx, getState());
+ enterRule(_localctx, 52, RULE_limitCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(326);
+ match(LIMIT);
+ setState(327);
+ match(INTEGER_LITERAL);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SortCommandContext extends ParserRuleContext {
+ public TerminalNode SORT() { return getToken(EsqlBaseParser.SORT, 0); }
+ public List orderExpression() {
+ return getRuleContexts(OrderExpressionContext.class);
+ }
+ public OrderExpressionContext orderExpression(int i) {
+ return getRuleContext(OrderExpressionContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public SortCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_sortCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSortCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSortCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSortCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SortCommandContext sortCommand() throws RecognitionException {
+ SortCommandContext _localctx = new SortCommandContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_sortCommand);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(329);
+ match(SORT);
+ setState(330);
+ orderExpression();
+ setState(335);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,22,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(331);
+ match(COMMA);
+ setState(332);
+ orderExpression();
+ }
+ }
+ }
+ setState(337);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,22,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OrderExpressionContext extends ParserRuleContext {
+ public Token ordering;
+ public Token nullOrdering;
+ public BooleanExpressionContext booleanExpression() {
+ return getRuleContext(BooleanExpressionContext.class,0);
+ }
+ public TerminalNode NULLS() { return getToken(EsqlBaseParser.NULLS, 0); }
+ public TerminalNode ASC() { return getToken(EsqlBaseParser.ASC, 0); }
+ public TerminalNode DESC() { return getToken(EsqlBaseParser.DESC, 0); }
+ public TerminalNode FIRST() { return getToken(EsqlBaseParser.FIRST, 0); }
+ public TerminalNode LAST() { return getToken(EsqlBaseParser.LAST, 0); }
+ @SuppressWarnings("this-escape")
+ public OrderExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_orderExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterOrderExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitOrderExpression(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitOrderExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OrderExpressionContext orderExpression() throws RecognitionException {
+ OrderExpressionContext _localctx = new OrderExpressionContext(_ctx, getState());
+ enterRule(_localctx, 56, RULE_orderExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(338);
+ booleanExpression(0);
+ setState(340);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
+ case 1:
+ {
+ setState(339);
+ ((OrderExpressionContext)_localctx).ordering = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==ASC || _la==DESC) ) {
+ ((OrderExpressionContext)_localctx).ordering = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ break;
+ }
+ setState(344);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
+ case 1:
+ {
+ setState(342);
+ match(NULLS);
+ setState(343);
+ ((OrderExpressionContext)_localctx).nullOrdering = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==FIRST || _la==LAST) ) {
+ ((OrderExpressionContext)_localctx).nullOrdering = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class KeepCommandContext extends ParserRuleContext {
+ public TerminalNode KEEP() { return getToken(EsqlBaseParser.KEEP, 0); }
+ public QualifiedNamePatternsContext qualifiedNamePatterns() {
+ return getRuleContext(QualifiedNamePatternsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public KeepCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_keepCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterKeepCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitKeepCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitKeepCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final KeepCommandContext keepCommand() throws RecognitionException {
+ KeepCommandContext _localctx = new KeepCommandContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_keepCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(346);
+ match(KEEP);
+ setState(347);
+ qualifiedNamePatterns();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DropCommandContext extends ParserRuleContext {
+ public TerminalNode DROP() { return getToken(EsqlBaseParser.DROP, 0); }
+ public QualifiedNamePatternsContext qualifiedNamePatterns() {
+ return getRuleContext(QualifiedNamePatternsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public DropCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_dropCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDropCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDropCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDropCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final DropCommandContext dropCommand() throws RecognitionException {
+ DropCommandContext _localctx = new DropCommandContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_dropCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(349);
+ match(DROP);
+ setState(350);
+ qualifiedNamePatterns();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class RenameCommandContext extends ParserRuleContext {
+ public TerminalNode RENAME() { return getToken(EsqlBaseParser.RENAME, 0); }
+ public List renameClause() {
+ return getRuleContexts(RenameClauseContext.class);
+ }
+ public RenameClauseContext renameClause(int i) {
+ return getRuleContext(RenameClauseContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public RenameCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_renameCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRenameCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRenameCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRenameCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final RenameCommandContext renameCommand() throws RecognitionException {
+ RenameCommandContext _localctx = new RenameCommandContext(_ctx, getState());
+ enterRule(_localctx, 62, RULE_renameCommand);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(352);
+ match(RENAME);
+ setState(353);
+ renameClause();
+ setState(358);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,25,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(354);
+ match(COMMA);
+ setState(355);
+ renameClause();
+ }
+ }
+ }
+ setState(360);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,25,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class RenameClauseContext extends ParserRuleContext {
+ public QualifiedNamePatternContext oldName;
+ public QualifiedNamePatternContext newName;
+ public TerminalNode AS() { return getToken(EsqlBaseParser.AS, 0); }
+ public List qualifiedNamePattern() {
+ return getRuleContexts(QualifiedNamePatternContext.class);
+ }
+ public QualifiedNamePatternContext qualifiedNamePattern(int i) {
+ return getRuleContext(QualifiedNamePatternContext.class,i);
+ }
+ @SuppressWarnings("this-escape")
+ public RenameClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_renameClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRenameClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRenameClause(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRenameClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final RenameClauseContext renameClause() throws RecognitionException {
+ RenameClauseContext _localctx = new RenameClauseContext(_ctx, getState());
+ enterRule(_localctx, 64, RULE_renameClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(361);
+ ((RenameClauseContext)_localctx).oldName = qualifiedNamePattern();
+ setState(362);
+ match(AS);
+ setState(363);
+ ((RenameClauseContext)_localctx).newName = qualifiedNamePattern();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DissectCommandContext extends ParserRuleContext {
+ public TerminalNode DISSECT() { return getToken(EsqlBaseParser.DISSECT, 0); }
+ public PrimaryExpressionContext primaryExpression() {
+ return getRuleContext(PrimaryExpressionContext.class,0);
+ }
+ public StringContext string() {
+ return getRuleContext(StringContext.class,0);
+ }
+ public CommandOptionsContext commandOptions() {
+ return getRuleContext(CommandOptionsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public DissectCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_dissectCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDissectCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDissectCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDissectCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final DissectCommandContext dissectCommand() throws RecognitionException {
+ DissectCommandContext _localctx = new DissectCommandContext(_ctx, getState());
+ enterRule(_localctx, 66, RULE_dissectCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(365);
+ match(DISSECT);
+ setState(366);
+ primaryExpression(0);
+ setState(367);
+ string();
+ setState(369);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
+ case 1:
+ {
+ setState(368);
+ commandOptions();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class GrokCommandContext extends ParserRuleContext {
+ public TerminalNode GROK() { return getToken(EsqlBaseParser.GROK, 0); }
+ public PrimaryExpressionContext primaryExpression() {
+ return getRuleContext(PrimaryExpressionContext.class,0);
+ }
+ public StringContext string() {
+ return getRuleContext(StringContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public GrokCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_grokCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterGrokCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitGrokCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitGrokCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final GrokCommandContext grokCommand() throws RecognitionException {
+ GrokCommandContext _localctx = new GrokCommandContext(_ctx, getState());
+ enterRule(_localctx, 68, RULE_grokCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(371);
+ match(GROK);
+ setState(372);
+ primaryExpression(0);
+ setState(373);
+ string();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MvExpandCommandContext extends ParserRuleContext {
+ public TerminalNode MV_EXPAND() { return getToken(EsqlBaseParser.MV_EXPAND, 0); }
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public MvExpandCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_mvExpandCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMvExpandCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMvExpandCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMvExpandCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final MvExpandCommandContext mvExpandCommand() throws RecognitionException {
+ MvExpandCommandContext _localctx = new MvExpandCommandContext(_ctx, getState());
+ enterRule(_localctx, 70, RULE_mvExpandCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(375);
+ match(MV_EXPAND);
+ setState(376);
+ qualifiedName();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CommandOptionsContext extends ParserRuleContext {
+ public List commandOption() {
+ return getRuleContexts(CommandOptionContext.class);
+ }
+ public CommandOptionContext commandOption(int i) {
+ return getRuleContext(CommandOptionContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public CommandOptionsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_commandOptions; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCommandOptions(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCommandOptions(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCommandOptions(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final CommandOptionsContext commandOptions() throws RecognitionException {
+ CommandOptionsContext _localctx = new CommandOptionsContext(_ctx, getState());
+ enterRule(_localctx, 72, RULE_commandOptions);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(378);
+ commandOption();
+ setState(383);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,27,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(379);
+ match(COMMA);
+ setState(380);
+ commandOption();
+ }
+ }
+ }
+ setState(385);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,27,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CommandOptionContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
+ public ConstantContext constant() {
+ return getRuleContext(ConstantContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public CommandOptionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_commandOption; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCommandOption(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCommandOption(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCommandOption(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final CommandOptionContext commandOption() throws RecognitionException {
+ CommandOptionContext _localctx = new CommandOptionContext(_ctx, getState());
+ enterRule(_localctx, 74, RULE_commandOption);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(386);
+ identifier();
+ setState(387);
+ match(ASSIGN);
+ setState(388);
+ constant();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExplainCommandContext extends ParserRuleContext {
+ public TerminalNode EXPLAIN() { return getToken(EsqlBaseParser.EXPLAIN, 0); }
+ public SubqueryExpressionContext subqueryExpression() {
+ return getRuleContext(SubqueryExpressionContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public ExplainCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_explainCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterExplainCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitExplainCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitExplainCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ExplainCommandContext explainCommand() throws RecognitionException {
+ ExplainCommandContext _localctx = new ExplainCommandContext(_ctx, getState());
+ enterRule(_localctx, 76, RULE_explainCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(390);
+ match(EXPLAIN);
+ setState(391);
+ subqueryExpression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SubqueryExpressionContext extends ParserRuleContext {
+ public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
+ public QueryContext query() {
+ return getRuleContext(QueryContext.class,0);
+ }
+ public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
+ @SuppressWarnings("this-escape")
+ public SubqueryExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_subqueryExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSubqueryExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSubqueryExpression(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSubqueryExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SubqueryExpressionContext subqueryExpression() throws RecognitionException {
+ SubqueryExpressionContext _localctx = new SubqueryExpressionContext(_ctx, getState());
+ enterRule(_localctx, 78, RULE_subqueryExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(393);
+ match(OPENING_BRACKET);
+ setState(394);
+ query(0);
+ setState(395);
+ match(CLOSING_BRACKET);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ShowCommandContext extends ParserRuleContext {
+ @SuppressWarnings("this-escape")
+ public ShowCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_showCommand; }
+
+ @SuppressWarnings("this-escape")
+ public ShowCommandContext() { }
+ public void copyFrom(ShowCommandContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ShowInfoContext extends ShowCommandContext {
+ public TerminalNode SHOW() { return getToken(EsqlBaseParser.SHOW, 0); }
+ public TerminalNode INFO() { return getToken(EsqlBaseParser.INFO, 0); }
+ @SuppressWarnings("this-escape")
+ public ShowInfoContext(ShowCommandContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterShowInfo(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitShowInfo(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitShowInfo(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ShowCommandContext showCommand() throws RecognitionException {
+ ShowCommandContext _localctx = new ShowCommandContext(_ctx, getState());
+ enterRule(_localctx, 80, RULE_showCommand);
+ try {
+ _localctx = new ShowInfoContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(397);
+ match(SHOW);
+ setState(398);
+ match(INFO);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnrichCommandContext extends ParserRuleContext {
+ public Token policyName;
+ public QualifiedNamePatternContext matchField;
+ public TerminalNode ENRICH() { return getToken(EsqlBaseParser.ENRICH, 0); }
+ public TerminalNode ENRICH_POLICY_NAME() { return getToken(EsqlBaseParser.ENRICH_POLICY_NAME, 0); }
+ public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
+ public TerminalNode WITH() { return getToken(EsqlBaseParser.WITH, 0); }
+ public List enrichWithClause() {
+ return getRuleContexts(EnrichWithClauseContext.class);
+ }
+ public EnrichWithClauseContext enrichWithClause(int i) {
+ return getRuleContext(EnrichWithClauseContext.class,i);
+ }
+ public QualifiedNamePatternContext qualifiedNamePattern() {
+ return getRuleContext(QualifiedNamePatternContext.class,0);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public EnrichCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enrichCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final EnrichCommandContext enrichCommand() throws RecognitionException {
+ EnrichCommandContext _localctx = new EnrichCommandContext(_ctx, getState());
+ enterRule(_localctx, 82, RULE_enrichCommand);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(400);
+ match(ENRICH);
+ setState(401);
+ ((EnrichCommandContext)_localctx).policyName = match(ENRICH_POLICY_NAME);
+ setState(404);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
+ case 1:
+ {
+ setState(402);
+ match(ON);
+ setState(403);
+ ((EnrichCommandContext)_localctx).matchField = qualifiedNamePattern();
+ }
+ break;
+ }
+ setState(415);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
+ case 1:
+ {
+ setState(406);
+ match(WITH);
+ setState(407);
+ enrichWithClause();
+ setState(412);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,29,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(408);
+ match(COMMA);
+ setState(409);
+ enrichWithClause();
+ }
+ }
+ }
+ setState(414);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,29,_ctx);
+ }
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnrichWithClauseContext extends ParserRuleContext {
+ public QualifiedNamePatternContext newName;
+ public QualifiedNamePatternContext enrichField;
+ public List qualifiedNamePattern() {
+ return getRuleContexts(QualifiedNamePatternContext.class);
+ }
+ public QualifiedNamePatternContext qualifiedNamePattern(int i) {
+ return getRuleContext(QualifiedNamePatternContext.class,i);
+ }
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
+ @SuppressWarnings("this-escape")
+ public EnrichWithClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enrichWithClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichWithClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichWithClause(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichWithClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final EnrichWithClauseContext enrichWithClause() throws RecognitionException {
+ EnrichWithClauseContext _localctx = new EnrichWithClauseContext(_ctx, getState());
+ enterRule(_localctx, 84, RULE_enrichWithClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(420);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
+ case 1:
+ {
+ setState(417);
+ ((EnrichWithClauseContext)_localctx).newName = qualifiedNamePattern();
+ setState(418);
+ match(ASSIGN);
+ }
+ break;
+ }
+ setState(422);
+ ((EnrichWithClauseContext)_localctx).enrichField = qualifiedNamePattern();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LookupCommandContext extends ParserRuleContext {
+ public IndexPatternContext tableName;
+ public QualifiedNamePatternsContext matchFields;
+ public TerminalNode DEV_LOOKUP() { return getToken(EsqlBaseParser.DEV_LOOKUP, 0); }
+ public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
+ public IndexPatternContext indexPattern() {
+ return getRuleContext(IndexPatternContext.class,0);
+ }
+ public QualifiedNamePatternsContext qualifiedNamePatterns() {
+ return getRuleContext(QualifiedNamePatternsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public LookupCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_lookupCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLookupCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLookupCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLookupCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final LookupCommandContext lookupCommand() throws RecognitionException {
+ LookupCommandContext _localctx = new LookupCommandContext(_ctx, getState());
+ enterRule(_localctx, 86, RULE_lookupCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(424);
+ match(DEV_LOOKUP);
+ setState(425);
+ ((LookupCommandContext)_localctx).tableName = indexPattern();
+ setState(426);
+ match(ON);
+ setState(427);
+ ((LookupCommandContext)_localctx).matchFields = qualifiedNamePatterns();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InlinestatsCommandContext extends ParserRuleContext {
+ public AggFieldsContext stats;
+ public FieldsContext grouping;
+ public TerminalNode DEV_INLINESTATS() { return getToken(EsqlBaseParser.DEV_INLINESTATS, 0); }
+ public AggFieldsContext aggFields() {
+ return getRuleContext(AggFieldsContext.class,0);
+ }
+ public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
+ public FieldsContext fields() {
+ return getRuleContext(FieldsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public InlinestatsCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inlinestatsCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInlinestatsCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInlinestatsCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInlinestatsCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final InlinestatsCommandContext inlinestatsCommand() throws RecognitionException {
+ InlinestatsCommandContext _localctx = new InlinestatsCommandContext(_ctx, getState());
+ enterRule(_localctx, 88, RULE_inlinestatsCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(429);
+ match(DEV_INLINESTATS);
+ setState(430);
+ ((InlinestatsCommandContext)_localctx).stats = aggFields();
+ setState(433);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) {
+ case 1:
+ {
+ setState(431);
+ match(BY);
+ setState(432);
+ ((InlinestatsCommandContext)_localctx).grouping = fields();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ChangePointCommandContext extends ParserRuleContext {
+ public QualifiedNameContext value;
+ public QualifiedNameContext key;
+ public QualifiedNameContext targetType;
+ public QualifiedNameContext targetPvalue;
+ public TerminalNode DEV_CHANGE_POINT() { return getToken(EsqlBaseParser.DEV_CHANGE_POINT, 0); }
+ public List qualifiedName() {
+ return getRuleContexts(QualifiedNameContext.class);
+ }
+ public QualifiedNameContext qualifiedName(int i) {
+ return getRuleContext(QualifiedNameContext.class,i);
+ }
+ public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
+ public TerminalNode AS() { return getToken(EsqlBaseParser.AS, 0); }
+ public TerminalNode COMMA() { return getToken(EsqlBaseParser.COMMA, 0); }
+ @SuppressWarnings("this-escape")
+ public ChangePointCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_changePointCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterChangePointCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitChangePointCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitChangePointCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ChangePointCommandContext changePointCommand() throws RecognitionException {
+ ChangePointCommandContext _localctx = new ChangePointCommandContext(_ctx, getState());
+ enterRule(_localctx, 90, RULE_changePointCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(435);
+ match(DEV_CHANGE_POINT);
+ setState(436);
+ ((ChangePointCommandContext)_localctx).value = qualifiedName();
+ setState(439);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
+ case 1:
+ {
+ setState(437);
+ match(ON);
+ setState(438);
+ ((ChangePointCommandContext)_localctx).key = qualifiedName();
+ }
+ break;
+ }
+ setState(446);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) {
+ case 1:
+ {
+ setState(441);
+ match(AS);
+ setState(442);
+ ((ChangePointCommandContext)_localctx).targetType = qualifiedName();
+ setState(443);
+ match(COMMA);
+ setState(444);
+ ((ChangePointCommandContext)_localctx).targetPvalue = qualifiedName();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InsistCommandContext extends ParserRuleContext {
+ public TerminalNode DEV_INSIST() { return getToken(EsqlBaseParser.DEV_INSIST, 0); }
+ public QualifiedNamePatternsContext qualifiedNamePatterns() {
+ return getRuleContext(QualifiedNamePatternsContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public InsistCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_insistCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInsistCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInsistCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInsistCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final InsistCommandContext insistCommand() throws RecognitionException {
+ InsistCommandContext _localctx = new InsistCommandContext(_ctx, getState());
+ enterRule(_localctx, 92, RULE_insistCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(448);
+ match(DEV_INSIST);
+ setState(449);
+ qualifiedNamePatterns();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForkCommandContext extends ParserRuleContext {
+ public TerminalNode DEV_FORK() { return getToken(EsqlBaseParser.DEV_FORK, 0); }
+ public ForkSubQueriesContext forkSubQueries() {
+ return getRuleContext(ForkSubQueriesContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public ForkCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forkCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ForkCommandContext forkCommand() throws RecognitionException {
+ ForkCommandContext _localctx = new ForkCommandContext(_ctx, getState());
+ enterRule(_localctx, 94, RULE_forkCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(451);
+ match(DEV_FORK);
+ setState(452);
+ forkSubQueries();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForkSubQueriesContext extends ParserRuleContext {
+ public List forkSubQuery() {
+ return getRuleContexts(ForkSubQueryContext.class);
+ }
+ public ForkSubQueryContext forkSubQuery(int i) {
+ return getRuleContext(ForkSubQueryContext.class,i);
+ }
+ @SuppressWarnings("this-escape")
+ public ForkSubQueriesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forkSubQueries; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkSubQueries(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkSubQueries(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkSubQueries(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ForkSubQueriesContext forkSubQueries() throws RecognitionException {
+ ForkSubQueriesContext _localctx = new ForkSubQueriesContext(_ctx, getState());
+ enterRule(_localctx, 96, RULE_forkSubQueries);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(455);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(454);
+ forkSubQuery();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(457);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,35,_ctx);
+ } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForkSubQueryContext extends ParserRuleContext {
+ public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
+ public ForkSubQueryCommandContext forkSubQueryCommand() {
+ return getRuleContext(ForkSubQueryCommandContext.class,0);
+ }
+ public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
+ @SuppressWarnings("this-escape")
+ public ForkSubQueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forkSubQuery; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkSubQuery(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkSubQuery(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkSubQuery(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ForkSubQueryContext forkSubQuery() throws RecognitionException {
+ ForkSubQueryContext _localctx = new ForkSubQueryContext(_ctx, getState());
+ enterRule(_localctx, 98, RULE_forkSubQuery);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(459);
+ match(LP);
+ setState(460);
+ forkSubQueryCommand(0);
+ setState(461);
+ match(RP);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForkSubQueryCommandContext extends ParserRuleContext {
+ @SuppressWarnings("this-escape")
+ public ForkSubQueryCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forkSubQueryCommand; }
+
+ @SuppressWarnings("this-escape")
+ public ForkSubQueryCommandContext() { }
+ public void copyFrom(ForkSubQueryCommandContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class SingleForkSubQueryCommandContext extends ForkSubQueryCommandContext {
+ public ForkSubQueryProcessingCommandContext forkSubQueryProcessingCommand() {
+ return getRuleContext(ForkSubQueryProcessingCommandContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public SingleForkSubQueryCommandContext(ForkSubQueryCommandContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSingleForkSubQueryCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSingleForkSubQueryCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSingleForkSubQueryCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class CompositeForkSubQueryContext extends ForkSubQueryCommandContext {
+ public ForkSubQueryCommandContext forkSubQueryCommand() {
+ return getRuleContext(ForkSubQueryCommandContext.class,0);
+ }
+ public TerminalNode PIPE() { return getToken(EsqlBaseParser.PIPE, 0); }
+ public ForkSubQueryProcessingCommandContext forkSubQueryProcessingCommand() {
+ return getRuleContext(ForkSubQueryProcessingCommandContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public CompositeForkSubQueryContext(ForkSubQueryCommandContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCompositeForkSubQuery(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCompositeForkSubQuery(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCompositeForkSubQuery(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ForkSubQueryCommandContext forkSubQueryCommand() throws RecognitionException {
+ return forkSubQueryCommand(0);
+ }
+
+ private ForkSubQueryCommandContext forkSubQueryCommand(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ ForkSubQueryCommandContext _localctx = new ForkSubQueryCommandContext(_ctx, _parentState);
+ ForkSubQueryCommandContext _prevctx = _localctx;
+ int _startState = 100;
+ enterRecursionRule(_localctx, 100, RULE_forkSubQueryCommand, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ _localctx = new SingleForkSubQueryCommandContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+
+ setState(464);
+ forkSubQueryProcessingCommand();
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(471);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new CompositeForkSubQueryContext(new ForkSubQueryCommandContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_forkSubQueryCommand);
+ setState(466);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(467);
+ match(PIPE);
+ setState(468);
+ forkSubQueryProcessingCommand();
+ }
+ }
+ }
+ setState(473);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForkSubQueryProcessingCommandContext extends ParserRuleContext {
+ public WhereCommandContext whereCommand() {
+ return getRuleContext(WhereCommandContext.class,0);
+ }
+ public SortCommandContext sortCommand() {
+ return getRuleContext(SortCommandContext.class,0);
+ }
+ public LimitCommandContext limitCommand() {
+ return getRuleContext(LimitCommandContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public ForkSubQueryProcessingCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forkSubQueryProcessingCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkSubQueryProcessingCommand(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkSubQueryProcessingCommand(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkSubQueryProcessingCommand(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ForkSubQueryProcessingCommandContext forkSubQueryProcessingCommand() throws RecognitionException {
+ ForkSubQueryProcessingCommandContext _localctx = new ForkSubQueryProcessingCommandContext(_ctx, getState());
+ enterRule(_localctx, 102, RULE_forkSubQueryProcessingCommand);
+ try {
+ setState(477);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case WHERE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(474);
+ whereCommand();
+ }
+ break;
+ case SORT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(475);
+ sortCommand();
+ }
+ break;
+ case LIMIT:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(476);
+ limitCommand();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
@SuppressWarnings("CheckReturnValue")
public static class BooleanExpressionContext extends ParserRuleContext {
@SuppressWarnings("this-escape")
@@ -944,25 +4069,25 @@ public class EsqlBaseParser extends ParserConfig {
int _parentState = getState();
BooleanExpressionContext _localctx = new BooleanExpressionContext(_ctx, _parentState);
BooleanExpressionContext _prevctx = _localctx;
- int _startState = 10;
- enterRecursionRule(_localctx, 10, RULE_booleanExpression, _p);
+ int _startState = 104;
+ enterRecursionRule(_localctx, 104, RULE_booleanExpression, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(225);
+ setState(508);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
case 1:
{
_localctx = new LogicalNotContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(197);
+ setState(480);
match(NOT);
- setState(198);
+ setState(481);
booleanExpression(8);
}
break;
@@ -971,7 +4096,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new BooleanDefaultContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(199);
+ setState(482);
valueExpression();
}
break;
@@ -980,7 +4105,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new RegexExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(200);
+ setState(483);
regexBooleanExpression();
}
break;
@@ -989,41 +4114,41 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new LogicalInContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(201);
+ setState(484);
valueExpression();
- setState(203);
+ setState(486);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==NOT) {
{
- setState(202);
+ setState(485);
match(NOT);
}
}
- setState(205);
+ setState(488);
match(IN);
- setState(206);
+ setState(489);
match(LP);
- setState(207);
+ setState(490);
valueExpression();
- setState(212);
+ setState(495);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(208);
+ setState(491);
match(COMMA);
- setState(209);
+ setState(492);
valueExpression();
}
}
- setState(214);
+ setState(497);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(215);
+ setState(498);
match(RP);
}
break;
@@ -1032,21 +4157,21 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new IsNullContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(217);
+ setState(500);
valueExpression();
- setState(218);
+ setState(501);
match(IS);
- setState(220);
+ setState(503);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==NOT) {
{
- setState(219);
+ setState(502);
match(NOT);
}
}
- setState(222);
+ setState(505);
match(NULL);
}
break;
@@ -1055,33 +4180,33 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new MatchExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(224);
+ setState(507);
matchBooleanExpression();
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(235);
+ setState(518);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,43,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(233);
+ setState(516);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
case 1:
{
_localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
((LogicalBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
- setState(227);
+ setState(510);
if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
- setState(228);
+ setState(511);
((LogicalBinaryContext)_localctx).operator = match(AND);
- setState(229);
+ setState(512);
((LogicalBinaryContext)_localctx).right = booleanExpression(6);
}
break;
@@ -1090,20 +4215,20 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
((LogicalBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
- setState(230);
+ setState(513);
if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
- setState(231);
+ setState(514);
((LogicalBinaryContext)_localctx).operator = match(OR);
- setState(232);
+ setState(515);
((LogicalBinaryContext)_localctx).right = booleanExpression(5);
}
break;
}
}
}
- setState(237);
+ setState(520);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,43,_ctx);
}
}
}
@@ -1153,51 +4278,51 @@ public class EsqlBaseParser extends ParserConfig {
public final RegexBooleanExpressionContext regexBooleanExpression() throws RecognitionException {
RegexBooleanExpressionContext _localctx = new RegexBooleanExpressionContext(_ctx, getState());
- enterRule(_localctx, 12, RULE_regexBooleanExpression);
+ enterRule(_localctx, 106, RULE_regexBooleanExpression);
int _la;
try {
- setState(252);
+ setState(535);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(238);
+ setState(521);
valueExpression();
- setState(240);
+ setState(523);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==NOT) {
{
- setState(239);
+ setState(522);
match(NOT);
}
}
- setState(242);
+ setState(525);
((RegexBooleanExpressionContext)_localctx).kind = match(LIKE);
- setState(243);
+ setState(526);
((RegexBooleanExpressionContext)_localctx).pattern = string();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(245);
+ setState(528);
valueExpression();
- setState(247);
+ setState(530);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==NOT) {
{
- setState(246);
+ setState(529);
match(NOT);
}
}
- setState(249);
+ setState(532);
((RegexBooleanExpressionContext)_localctx).kind = match(RLIKE);
- setState(250);
+ setState(533);
((RegexBooleanExpressionContext)_localctx).pattern = string();
}
break;
@@ -1252,28 +4377,28 @@ public class EsqlBaseParser extends ParserConfig {
public final MatchBooleanExpressionContext matchBooleanExpression() throws RecognitionException {
MatchBooleanExpressionContext _localctx = new MatchBooleanExpressionContext(_ctx, getState());
- enterRule(_localctx, 14, RULE_matchBooleanExpression);
+ enterRule(_localctx, 108, RULE_matchBooleanExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(254);
+ setState(537);
((MatchBooleanExpressionContext)_localctx).fieldExp = qualifiedName();
- setState(257);
+ setState(540);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==CAST_OP) {
{
- setState(255);
+ setState(538);
match(CAST_OP);
- setState(256);
+ setState(539);
((MatchBooleanExpressionContext)_localctx).fieldType = dataType();
}
}
- setState(259);
+ setState(542);
match(COLON);
- setState(260);
+ setState(543);
((MatchBooleanExpressionContext)_localctx).matchQuery = constant();
}
}
@@ -1355,16 +4480,16 @@ public class EsqlBaseParser extends ParserConfig {
public final ValueExpressionContext valueExpression() throws RecognitionException {
ValueExpressionContext _localctx = new ValueExpressionContext(_ctx, getState());
- enterRule(_localctx, 16, RULE_valueExpression);
+ enterRule(_localctx, 110, RULE_valueExpression);
try {
- setState(267);
+ setState(550);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
case 1:
_localctx = new ValueExpressionDefaultContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(262);
+ setState(545);
operatorExpression(0);
}
break;
@@ -1372,11 +4497,11 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new ComparisonContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(263);
+ setState(546);
((ComparisonContext)_localctx).left = operatorExpression(0);
- setState(264);
+ setState(547);
comparisonOperator();
- setState(265);
+ setState(548);
((ComparisonContext)_localctx).right = operatorExpression(0);
}
break;
@@ -1494,23 +4619,23 @@ public class EsqlBaseParser extends ParserConfig {
int _parentState = getState();
OperatorExpressionContext _localctx = new OperatorExpressionContext(_ctx, _parentState);
OperatorExpressionContext _prevctx = _localctx;
- int _startState = 18;
- enterRecursionRule(_localctx, 18, RULE_operatorExpression, _p);
+ int _startState = 112;
+ enterRecursionRule(_localctx, 112, RULE_operatorExpression, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(273);
+ setState(556);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) {
case 1:
{
_localctx = new OperatorExpressionDefaultContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(270);
+ setState(553);
primaryExpression(0);
}
break;
@@ -1519,7 +4644,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new ArithmeticUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(271);
+ setState(554);
((ArithmeticUnaryContext)_localctx).operator = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) {
@@ -1530,34 +4655,34 @@ public class EsqlBaseParser extends ParserConfig {
_errHandler.reportMatch(this);
consume();
}
- setState(272);
+ setState(555);
operatorExpression(3);
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(283);
+ setState(566);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,51,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(281);
+ setState(564);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
case 1:
{
_localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState));
((ArithmeticBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression);
- setState(275);
+ setState(558);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(276);
+ setState(559);
((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
_la = _input.LA(1);
- if ( !(((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 7L) != 0)) ) {
+ if ( !(((((_la - 85)) & ~0x3f) == 0 && ((1L << (_la - 85)) & 7L) != 0)) ) {
((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
}
else {
@@ -1565,7 +4690,7 @@ public class EsqlBaseParser extends ParserConfig {
_errHandler.reportMatch(this);
consume();
}
- setState(277);
+ setState(560);
((ArithmeticBinaryContext)_localctx).right = operatorExpression(3);
}
break;
@@ -1574,9 +4699,9 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState));
((ArithmeticBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression);
- setState(278);
+ setState(561);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(279);
+ setState(562);
((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) {
@@ -1587,16 +4712,16 @@ public class EsqlBaseParser extends ParserConfig {
_errHandler.reportMatch(this);
consume();
}
- setState(280);
+ setState(563);
((ArithmeticBinaryContext)_localctx).right = operatorExpression(2);
}
break;
}
}
}
- setState(285);
+ setState(568);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,51,_ctx);
}
}
}
@@ -1746,22 +4871,22 @@ public class EsqlBaseParser extends ParserConfig {
int _parentState = getState();
PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, _parentState);
PrimaryExpressionContext _prevctx = _localctx;
- int _startState = 20;
- enterRecursionRule(_localctx, 20, RULE_primaryExpression, _p);
+ int _startState = 114;
+ enterRecursionRule(_localctx, 114, RULE_primaryExpression, _p);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(294);
+ setState(577);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,52,_ctx) ) {
case 1:
{
_localctx = new ConstantDefaultContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(287);
+ setState(570);
constant();
}
break;
@@ -1770,7 +4895,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new DereferenceContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(288);
+ setState(571);
qualifiedName();
}
break;
@@ -1779,7 +4904,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new FunctionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(289);
+ setState(572);
functionExpression();
}
break;
@@ -1788,19 +4913,19 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new ParenthesizedExpressionContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(290);
+ setState(573);
match(LP);
- setState(291);
+ setState(574);
booleanExpression(0);
- setState(292);
+ setState(575);
match(RP);
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(301);
+ setState(584);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,53,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
@@ -1809,18 +4934,18 @@ public class EsqlBaseParser extends ParserConfig {
{
_localctx = new InlineCastContext(new PrimaryExpressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression);
- setState(296);
+ setState(579);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(297);
+ setState(580);
match(CAST_OP);
- setState(298);
+ setState(581);
dataType();
}
}
}
- setState(303);
+ setState(586);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,53,_ctx);
}
}
}
@@ -1878,22 +5003,22 @@ public class EsqlBaseParser extends ParserConfig {
public final FunctionExpressionContext functionExpression() throws RecognitionException {
FunctionExpressionContext _localctx = new FunctionExpressionContext(_ctx, getState());
- enterRule(_localctx, 22, RULE_functionExpression);
+ enterRule(_localctx, 116, RULE_functionExpression);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(304);
+ setState(587);
functionName();
- setState(305);
+ setState(588);
match(LP);
- setState(319);
+ setState(602);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ASTERISK:
{
- setState(306);
+ setState(589);
match(ASTERISK);
}
break;
@@ -1914,34 +5039,34 @@ public class EsqlBaseParser extends ParserConfig {
case QUOTED_IDENTIFIER:
{
{
- setState(307);
+ setState(590);
booleanExpression(0);
- setState(312);
+ setState(595);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,19,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,54,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(308);
+ setState(591);
match(COMMA);
- setState(309);
+ setState(592);
booleanExpression(0);
}
}
}
- setState(314);
+ setState(597);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,19,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,54,_ctx);
}
- setState(317);
+ setState(600);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==COMMA) {
{
- setState(315);
+ setState(598);
match(COMMA);
- setState(316);
+ setState(599);
mapExpression();
}
}
@@ -1954,7 +5079,7 @@ public class EsqlBaseParser extends ParserConfig {
default:
break;
}
- setState(321);
+ setState(604);
match(RP);
}
}
@@ -1996,11 +5121,11 @@ public class EsqlBaseParser extends ParserConfig {
public final FunctionNameContext functionName() throws RecognitionException {
FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
- enterRule(_localctx, 24, RULE_functionName);
+ enterRule(_localctx, 118, RULE_functionName);
try {
enterOuterAlt(_localctx, 1);
{
- setState(323);
+ setState(606);
identifierOrParameter();
}
}
@@ -2051,32 +5176,32 @@ public class EsqlBaseParser extends ParserConfig {
public final MapExpressionContext mapExpression() throws RecognitionException {
MapExpressionContext _localctx = new MapExpressionContext(_ctx, getState());
- enterRule(_localctx, 26, RULE_mapExpression);
+ enterRule(_localctx, 120, RULE_mapExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(325);
+ setState(608);
match(LEFT_BRACES);
- setState(326);
+ setState(609);
entryExpression();
- setState(331);
+ setState(614);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(327);
+ setState(610);
match(COMMA);
- setState(328);
+ setState(611);
entryExpression();
}
}
- setState(333);
+ setState(616);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(334);
+ setState(617);
match(RIGHT_BRACES);
}
}
@@ -2124,15 +5249,15 @@ public class EsqlBaseParser extends ParserConfig {
public final EntryExpressionContext entryExpression() throws RecognitionException {
EntryExpressionContext _localctx = new EntryExpressionContext(_ctx, getState());
- enterRule(_localctx, 28, RULE_entryExpression);
+ enterRule(_localctx, 122, RULE_entryExpression);
try {
enterOuterAlt(_localctx, 1);
{
- setState(336);
+ setState(619);
((EntryExpressionContext)_localctx).key = string();
- setState(337);
+ setState(620);
match(COLON);
- setState(338);
+ setState(621);
((EntryExpressionContext)_localctx).value = constant();
}
}
@@ -2147,1275 +5272,6 @@ public class EsqlBaseParser extends ParserConfig {
return _localctx;
}
- @SuppressWarnings("CheckReturnValue")
- public static class DataTypeContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public DataTypeContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_dataType; }
-
- @SuppressWarnings("this-escape")
- public DataTypeContext() { }
- public void copyFrom(DataTypeContext ctx) {
- super.copyFrom(ctx);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class ToDataTypeContext extends DataTypeContext {
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public ToDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterToDataType(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitToDataType(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitToDataType(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final DataTypeContext dataType() throws RecognitionException {
- DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
- enterRule(_localctx, 30, RULE_dataType);
- try {
- _localctx = new ToDataTypeContext(_localctx);
- enterOuterAlt(_localctx, 1);
- {
- setState(340);
- identifier();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class RowCommandContext extends ParserRuleContext {
- public TerminalNode ROW() { return getToken(EsqlBaseParser.ROW, 0); }
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public RowCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_rowCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRowCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRowCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRowCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final RowCommandContext rowCommand() throws RecognitionException {
- RowCommandContext _localctx = new RowCommandContext(_ctx, getState());
- enterRule(_localctx, 32, RULE_rowCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(342);
- match(ROW);
- setState(343);
- fields();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class FieldsContext extends ParserRuleContext {
- public List field() {
- return getRuleContexts(FieldContext.class);
- }
- public FieldContext field(int i) {
- return getRuleContext(FieldContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- @SuppressWarnings("this-escape")
- public FieldsContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_fields; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFields(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFields(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFields(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final FieldsContext fields() throws RecognitionException {
- FieldsContext _localctx = new FieldsContext(_ctx, getState());
- enterRule(_localctx, 34, RULE_fields);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(345);
- field();
- setState(350);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,23,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(346);
- match(COMMA);
- setState(347);
- field();
- }
- }
- }
- setState(352);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,23,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class FieldContext extends ParserRuleContext {
- public BooleanExpressionContext booleanExpression() {
- return getRuleContext(BooleanExpressionContext.class,0);
- }
- public QualifiedNameContext qualifiedName() {
- return getRuleContext(QualifiedNameContext.class,0);
- }
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
- @SuppressWarnings("this-escape")
- public FieldContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_field; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterField(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitField(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitField(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final FieldContext field() throws RecognitionException {
- FieldContext _localctx = new FieldContext(_ctx, getState());
- enterRule(_localctx, 36, RULE_field);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(356);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
- case 1:
- {
- setState(353);
- qualifiedName();
- setState(354);
- match(ASSIGN);
- }
- break;
- }
- setState(358);
- booleanExpression(0);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class FromCommandContext extends ParserRuleContext {
- public TerminalNode FROM() { return getToken(EsqlBaseParser.FROM, 0); }
- public List indexPattern() {
- return getRuleContexts(IndexPatternContext.class);
- }
- public IndexPatternContext indexPattern(int i) {
- return getRuleContext(IndexPatternContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- public MetadataContext metadata() {
- return getRuleContext(MetadataContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public FromCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_fromCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFromCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFromCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFromCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final FromCommandContext fromCommand() throws RecognitionException {
- FromCommandContext _localctx = new FromCommandContext(_ctx, getState());
- enterRule(_localctx, 38, RULE_fromCommand);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(360);
- match(FROM);
- setState(361);
- indexPattern();
- setState(366);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,25,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(362);
- match(COMMA);
- setState(363);
- indexPattern();
- }
- }
- }
- setState(368);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,25,_ctx);
- }
- setState(370);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
- case 1:
- {
- setState(369);
- metadata();
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class IndexPatternContext extends ParserRuleContext {
- public IndexStringContext indexString() {
- return getRuleContext(IndexStringContext.class,0);
- }
- public ClusterStringContext clusterString() {
- return getRuleContext(ClusterStringContext.class,0);
- }
- public TerminalNode COLON() { return getToken(EsqlBaseParser.COLON, 0); }
- @SuppressWarnings("this-escape")
- public IndexPatternContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_indexPattern; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIndexPattern(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIndexPattern(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIndexPattern(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final IndexPatternContext indexPattern() throws RecognitionException {
- IndexPatternContext _localctx = new IndexPatternContext(_ctx, getState());
- enterRule(_localctx, 40, RULE_indexPattern);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(375);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
- case 1:
- {
- setState(372);
- clusterString();
- setState(373);
- match(COLON);
- }
- break;
- }
- setState(377);
- indexString();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class ClusterStringContext extends ParserRuleContext {
- public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
- public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
- @SuppressWarnings("this-escape")
- public ClusterStringContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_clusterString; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterClusterString(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitClusterString(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitClusterString(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ClusterStringContext clusterString() throws RecognitionException {
- ClusterStringContext _localctx = new ClusterStringContext(_ctx, getState());
- enterRule(_localctx, 42, RULE_clusterString);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(379);
- _la = _input.LA(1);
- if ( !(_la==QUOTED_STRING || _la==UNQUOTED_SOURCE) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class IndexStringContext extends ParserRuleContext {
- public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
- public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
- @SuppressWarnings("this-escape")
- public IndexStringContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_indexString; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIndexString(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIndexString(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIndexString(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final IndexStringContext indexString() throws RecognitionException {
- IndexStringContext _localctx = new IndexStringContext(_ctx, getState());
- enterRule(_localctx, 44, RULE_indexString);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(381);
- _la = _input.LA(1);
- if ( !(_la==QUOTED_STRING || _la==UNQUOTED_SOURCE) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class MetadataContext extends ParserRuleContext {
- public TerminalNode METADATA() { return getToken(EsqlBaseParser.METADATA, 0); }
- public List UNQUOTED_SOURCE() { return getTokens(EsqlBaseParser.UNQUOTED_SOURCE); }
- public TerminalNode UNQUOTED_SOURCE(int i) {
- return getToken(EsqlBaseParser.UNQUOTED_SOURCE, i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- @SuppressWarnings("this-escape")
- public MetadataContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_metadata; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMetadata(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMetadata(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMetadata(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final MetadataContext metadata() throws RecognitionException {
- MetadataContext _localctx = new MetadataContext(_ctx, getState());
- enterRule(_localctx, 46, RULE_metadata);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(383);
- match(METADATA);
- setState(384);
- match(UNQUOTED_SOURCE);
- setState(389);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,28,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(385);
- match(COMMA);
- setState(386);
- match(UNQUOTED_SOURCE);
- }
- }
- }
- setState(391);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,28,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class MetricsCommandContext extends ParserRuleContext {
- public AggFieldsContext aggregates;
- public FieldsContext grouping;
- public TerminalNode DEV_METRICS() { return getToken(EsqlBaseParser.DEV_METRICS, 0); }
- public List indexPattern() {
- return getRuleContexts(IndexPatternContext.class);
- }
- public IndexPatternContext indexPattern(int i) {
- return getRuleContext(IndexPatternContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
- public AggFieldsContext aggFields() {
- return getRuleContext(AggFieldsContext.class,0);
- }
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public MetricsCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_metricsCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMetricsCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMetricsCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMetricsCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final MetricsCommandContext metricsCommand() throws RecognitionException {
- MetricsCommandContext _localctx = new MetricsCommandContext(_ctx, getState());
- enterRule(_localctx, 48, RULE_metricsCommand);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(392);
- match(DEV_METRICS);
- setState(393);
- indexPattern();
- setState(398);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,29,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(394);
- match(COMMA);
- setState(395);
- indexPattern();
- }
- }
- }
- setState(400);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,29,_ctx);
- }
- setState(402);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
- case 1:
- {
- setState(401);
- ((MetricsCommandContext)_localctx).aggregates = aggFields();
- }
- break;
- }
- setState(406);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
- case 1:
- {
- setState(404);
- match(BY);
- setState(405);
- ((MetricsCommandContext)_localctx).grouping = fields();
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class EvalCommandContext extends ParserRuleContext {
- public TerminalNode EVAL() { return getToken(EsqlBaseParser.EVAL, 0); }
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public EvalCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_evalCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEvalCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEvalCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEvalCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final EvalCommandContext evalCommand() throws RecognitionException {
- EvalCommandContext _localctx = new EvalCommandContext(_ctx, getState());
- enterRule(_localctx, 50, RULE_evalCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(408);
- match(EVAL);
- setState(409);
- fields();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class StatsCommandContext extends ParserRuleContext {
- public AggFieldsContext stats;
- public FieldsContext grouping;
- public TerminalNode STATS() { return getToken(EsqlBaseParser.STATS, 0); }
- public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
- public AggFieldsContext aggFields() {
- return getRuleContext(AggFieldsContext.class,0);
- }
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public StatsCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_statsCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterStatsCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitStatsCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitStatsCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final StatsCommandContext statsCommand() throws RecognitionException {
- StatsCommandContext _localctx = new StatsCommandContext(_ctx, getState());
- enterRule(_localctx, 52, RULE_statsCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(411);
- match(STATS);
- setState(413);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) {
- case 1:
- {
- setState(412);
- ((StatsCommandContext)_localctx).stats = aggFields();
- }
- break;
- }
- setState(417);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
- case 1:
- {
- setState(415);
- match(BY);
- setState(416);
- ((StatsCommandContext)_localctx).grouping = fields();
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class AggFieldsContext extends ParserRuleContext {
- public List aggField() {
- return getRuleContexts(AggFieldContext.class);
- }
- public AggFieldContext aggField(int i) {
- return getRuleContext(AggFieldContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- @SuppressWarnings("this-escape")
- public AggFieldsContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_aggFields; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterAggFields(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitAggFields(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitAggFields(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final AggFieldsContext aggFields() throws RecognitionException {
- AggFieldsContext _localctx = new AggFieldsContext(_ctx, getState());
- enterRule(_localctx, 54, RULE_aggFields);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(419);
- aggField();
- setState(424);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,34,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(420);
- match(COMMA);
- setState(421);
- aggField();
- }
- }
- }
- setState(426);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,34,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class AggFieldContext extends ParserRuleContext {
- public FieldContext field() {
- return getRuleContext(FieldContext.class,0);
- }
- public TerminalNode WHERE() { return getToken(EsqlBaseParser.WHERE, 0); }
- public BooleanExpressionContext booleanExpression() {
- return getRuleContext(BooleanExpressionContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public AggFieldContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_aggField; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterAggField(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitAggField(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitAggField(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final AggFieldContext aggField() throws RecognitionException {
- AggFieldContext _localctx = new AggFieldContext(_ctx, getState());
- enterRule(_localctx, 56, RULE_aggField);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(427);
- field();
- setState(430);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
- case 1:
- {
- setState(428);
- match(WHERE);
- setState(429);
- booleanExpression(0);
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class QualifiedNameContext extends ParserRuleContext {
- public List identifierOrParameter() {
- return getRuleContexts(IdentifierOrParameterContext.class);
- }
- public IdentifierOrParameterContext identifierOrParameter(int i) {
- return getRuleContext(IdentifierOrParameterContext.class,i);
- }
- public List DOT() { return getTokens(EsqlBaseParser.DOT); }
- public TerminalNode DOT(int i) {
- return getToken(EsqlBaseParser.DOT, i);
- }
- @SuppressWarnings("this-escape")
- public QualifiedNameContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_qualifiedName; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedName(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedName(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedName(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final QualifiedNameContext qualifiedName() throws RecognitionException {
- QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState());
- enterRule(_localctx, 58, RULE_qualifiedName);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(432);
- identifierOrParameter();
- setState(437);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(433);
- match(DOT);
- setState(434);
- identifierOrParameter();
- }
- }
- }
- setState(439);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class QualifiedNamePatternContext extends ParserRuleContext {
- public List identifierPattern() {
- return getRuleContexts(IdentifierPatternContext.class);
- }
- public IdentifierPatternContext identifierPattern(int i) {
- return getRuleContext(IdentifierPatternContext.class,i);
- }
- public List DOT() { return getTokens(EsqlBaseParser.DOT); }
- public TerminalNode DOT(int i) {
- return getToken(EsqlBaseParser.DOT, i);
- }
- @SuppressWarnings("this-escape")
- public QualifiedNamePatternContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_qualifiedNamePattern; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedNamePattern(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedNamePattern(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedNamePattern(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final QualifiedNamePatternContext qualifiedNamePattern() throws RecognitionException {
- QualifiedNamePatternContext _localctx = new QualifiedNamePatternContext(_ctx, getState());
- enterRule(_localctx, 60, RULE_qualifiedNamePattern);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(440);
- identifierPattern();
- setState(445);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,37,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(441);
- match(DOT);
- setState(442);
- identifierPattern();
- }
- }
- }
- setState(447);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,37,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class QualifiedNamePatternsContext extends ParserRuleContext {
- public List qualifiedNamePattern() {
- return getRuleContexts(QualifiedNamePatternContext.class);
- }
- public QualifiedNamePatternContext qualifiedNamePattern(int i) {
- return getRuleContext(QualifiedNamePatternContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- @SuppressWarnings("this-escape")
- public QualifiedNamePatternsContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_qualifiedNamePatterns; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedNamePatterns(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedNamePatterns(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedNamePatterns(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final QualifiedNamePatternsContext qualifiedNamePatterns() throws RecognitionException {
- QualifiedNamePatternsContext _localctx = new QualifiedNamePatternsContext(_ctx, getState());
- enterRule(_localctx, 62, RULE_qualifiedNamePatterns);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(448);
- qualifiedNamePattern();
- setState(453);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,38,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(449);
- match(COMMA);
- setState(450);
- qualifiedNamePattern();
- }
- }
- }
- setState(455);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,38,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class IdentifierContext extends ParserRuleContext {
- public TerminalNode UNQUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.UNQUOTED_IDENTIFIER, 0); }
- public TerminalNode QUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.QUOTED_IDENTIFIER, 0); }
- @SuppressWarnings("this-escape")
- public IdentifierContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_identifier; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifier(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifier(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifier(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final IdentifierContext identifier() throws RecognitionException {
- IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
- enterRule(_localctx, 64, RULE_identifier);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(456);
- _la = _input.LA(1);
- if ( !(_la==UNQUOTED_IDENTIFIER || _la==QUOTED_IDENTIFIER) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class IdentifierPatternContext extends ParserRuleContext {
- public TerminalNode ID_PATTERN() { return getToken(EsqlBaseParser.ID_PATTERN, 0); }
- public ParameterContext parameter() {
- return getRuleContext(ParameterContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public IdentifierPatternContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_identifierPattern; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifierPattern(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifierPattern(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifierPattern(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final IdentifierPatternContext identifierPattern() throws RecognitionException {
- IdentifierPatternContext _localctx = new IdentifierPatternContext(_ctx, getState());
- enterRule(_localctx, 66, RULE_identifierPattern);
- try {
- setState(460);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case ID_PATTERN:
- enterOuterAlt(_localctx, 1);
- {
- setState(458);
- match(ID_PATTERN);
- }
- break;
- case PARAM:
- case NAMED_OR_POSITIONAL_PARAM:
- enterOuterAlt(_localctx, 2);
- {
- setState(459);
- parameter();
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
@SuppressWarnings("CheckReturnValue")
public static class ConstantContext extends ParserRuleContext {
@SuppressWarnings("this-escape")
@@ -3669,17 +5525,17 @@ public class EsqlBaseParser extends ParserConfig {
public final ConstantContext constant() throws RecognitionException {
ConstantContext _localctx = new ConstantContext(_ctx, getState());
- enterRule(_localctx, 68, RULE_constant);
+ enterRule(_localctx, 124, RULE_constant);
int _la;
try {
- setState(504);
+ setState(665);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) {
case 1:
_localctx = new NullLiteralContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(462);
+ setState(623);
match(NULL);
}
break;
@@ -3687,9 +5543,9 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new QualifiedIntegerLiteralContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(463);
+ setState(624);
integerValue();
- setState(464);
+ setState(625);
match(UNQUOTED_IDENTIFIER);
}
break;
@@ -3697,7 +5553,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new DecimalLiteralContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(466);
+ setState(627);
decimalValue();
}
break;
@@ -3705,7 +5561,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new IntegerLiteralContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(467);
+ setState(628);
integerValue();
}
break;
@@ -3713,7 +5569,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new BooleanLiteralContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(468);
+ setState(629);
booleanValue();
}
break;
@@ -3721,7 +5577,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new InputParameterContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(469);
+ setState(630);
parameter();
}
break;
@@ -3729,7 +5585,7 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new StringLiteralContext(_localctx);
enterOuterAlt(_localctx, 7);
{
- setState(470);
+ setState(631);
string();
}
break;
@@ -3737,27 +5593,27 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new NumericArrayLiteralContext(_localctx);
enterOuterAlt(_localctx, 8);
{
- setState(471);
+ setState(632);
match(OPENING_BRACKET);
- setState(472);
+ setState(633);
numericValue();
- setState(477);
+ setState(638);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(473);
+ setState(634);
match(COMMA);
- setState(474);
+ setState(635);
numericValue();
}
}
- setState(479);
+ setState(640);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(480);
+ setState(641);
match(CLOSING_BRACKET);
}
break;
@@ -3765,27 +5621,27 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new BooleanArrayLiteralContext(_localctx);
enterOuterAlt(_localctx, 9);
{
- setState(482);
+ setState(643);
match(OPENING_BRACKET);
- setState(483);
+ setState(644);
booleanValue();
- setState(488);
+ setState(649);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(484);
+ setState(645);
match(COMMA);
- setState(485);
+ setState(646);
booleanValue();
}
}
- setState(490);
+ setState(651);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(491);
+ setState(652);
match(CLOSING_BRACKET);
}
break;
@@ -3793,27 +5649,27 @@ public class EsqlBaseParser extends ParserConfig {
_localctx = new StringArrayLiteralContext(_localctx);
enterOuterAlt(_localctx, 10);
{
- setState(493);
+ setState(654);
match(OPENING_BRACKET);
- setState(494);
+ setState(655);
string();
- setState(499);
+ setState(660);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(495);
+ setState(656);
match(COMMA);
- setState(496);
+ setState(657);
string();
}
}
- setState(501);
+ setState(662);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(502);
+ setState(663);
match(CLOSING_BRACKET);
}
break;
@@ -3830,904 +5686,6 @@ public class EsqlBaseParser extends ParserConfig {
return _localctx;
}
- @SuppressWarnings("CheckReturnValue")
- public static class ParameterContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public ParameterContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_parameter; }
-
- @SuppressWarnings("this-escape")
- public ParameterContext() { }
- public void copyFrom(ParameterContext ctx) {
- super.copyFrom(ctx);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class InputNamedOrPositionalParamContext extends ParameterContext {
- public TerminalNode NAMED_OR_POSITIONAL_PARAM() { return getToken(EsqlBaseParser.NAMED_OR_POSITIONAL_PARAM, 0); }
- @SuppressWarnings("this-escape")
- public InputNamedOrPositionalParamContext(ParameterContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputNamedOrPositionalParam(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputNamedOrPositionalParam(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputNamedOrPositionalParam(this);
- else return visitor.visitChildren(this);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class InputParamContext extends ParameterContext {
- public TerminalNode PARAM() { return getToken(EsqlBaseParser.PARAM, 0); }
- @SuppressWarnings("this-escape")
- public InputParamContext(ParameterContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputParam(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputParam(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputParam(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ParameterContext parameter() throws RecognitionException {
- ParameterContext _localctx = new ParameterContext(_ctx, getState());
- enterRule(_localctx, 70, RULE_parameter);
- try {
- setState(508);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case PARAM:
- _localctx = new InputParamContext(_localctx);
- enterOuterAlt(_localctx, 1);
- {
- setState(506);
- match(PARAM);
- }
- break;
- case NAMED_OR_POSITIONAL_PARAM:
- _localctx = new InputNamedOrPositionalParamContext(_localctx);
- enterOuterAlt(_localctx, 2);
- {
- setState(507);
- match(NAMED_OR_POSITIONAL_PARAM);
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class IdentifierOrParameterContext extends ParserRuleContext {
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
- public ParameterContext parameter() {
- return getRuleContext(ParameterContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public IdentifierOrParameterContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_identifierOrParameter; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifierOrParameter(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifierOrParameter(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifierOrParameter(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final IdentifierOrParameterContext identifierOrParameter() throws RecognitionException {
- IdentifierOrParameterContext _localctx = new IdentifierOrParameterContext(_ctx, getState());
- enterRule(_localctx, 72, RULE_identifierOrParameter);
- try {
- setState(512);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case UNQUOTED_IDENTIFIER:
- case QUOTED_IDENTIFIER:
- enterOuterAlt(_localctx, 1);
- {
- setState(510);
- identifier();
- }
- break;
- case PARAM:
- case NAMED_OR_POSITIONAL_PARAM:
- enterOuterAlt(_localctx, 2);
- {
- setState(511);
- parameter();
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class LimitCommandContext extends ParserRuleContext {
- public TerminalNode LIMIT() { return getToken(EsqlBaseParser.LIMIT, 0); }
- public TerminalNode INTEGER_LITERAL() { return getToken(EsqlBaseParser.INTEGER_LITERAL, 0); }
- @SuppressWarnings("this-escape")
- public LimitCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_limitCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLimitCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLimitCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLimitCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final LimitCommandContext limitCommand() throws RecognitionException {
- LimitCommandContext _localctx = new LimitCommandContext(_ctx, getState());
- enterRule(_localctx, 74, RULE_limitCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(514);
- match(LIMIT);
- setState(515);
- match(INTEGER_LITERAL);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class SortCommandContext extends ParserRuleContext {
- public TerminalNode SORT() { return getToken(EsqlBaseParser.SORT, 0); }
- public List orderExpression() {
- return getRuleContexts(OrderExpressionContext.class);
- }
- public OrderExpressionContext orderExpression(int i) {
- return getRuleContext(OrderExpressionContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- @SuppressWarnings("this-escape")
- public SortCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_sortCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSortCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSortCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSortCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final SortCommandContext sortCommand() throws RecognitionException {
- SortCommandContext _localctx = new SortCommandContext(_ctx, getState());
- enterRule(_localctx, 76, RULE_sortCommand);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(517);
- match(SORT);
- setState(518);
- orderExpression();
- setState(523);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,46,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(519);
- match(COMMA);
- setState(520);
- orderExpression();
- }
- }
- }
- setState(525);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,46,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class OrderExpressionContext extends ParserRuleContext {
- public Token ordering;
- public Token nullOrdering;
- public BooleanExpressionContext booleanExpression() {
- return getRuleContext(BooleanExpressionContext.class,0);
- }
- public TerminalNode NULLS() { return getToken(EsqlBaseParser.NULLS, 0); }
- public TerminalNode ASC() { return getToken(EsqlBaseParser.ASC, 0); }
- public TerminalNode DESC() { return getToken(EsqlBaseParser.DESC, 0); }
- public TerminalNode FIRST() { return getToken(EsqlBaseParser.FIRST, 0); }
- public TerminalNode LAST() { return getToken(EsqlBaseParser.LAST, 0); }
- @SuppressWarnings("this-escape")
- public OrderExpressionContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_orderExpression; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterOrderExpression(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitOrderExpression(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitOrderExpression(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final OrderExpressionContext orderExpression() throws RecognitionException {
- OrderExpressionContext _localctx = new OrderExpressionContext(_ctx, getState());
- enterRule(_localctx, 78, RULE_orderExpression);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(526);
- booleanExpression(0);
- setState(528);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
- case 1:
- {
- setState(527);
- ((OrderExpressionContext)_localctx).ordering = _input.LT(1);
- _la = _input.LA(1);
- if ( !(_la==ASC || _la==DESC) ) {
- ((OrderExpressionContext)_localctx).ordering = (Token)_errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
- break;
- }
- setState(532);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
- case 1:
- {
- setState(530);
- match(NULLS);
- setState(531);
- ((OrderExpressionContext)_localctx).nullOrdering = _input.LT(1);
- _la = _input.LA(1);
- if ( !(_la==FIRST || _la==LAST) ) {
- ((OrderExpressionContext)_localctx).nullOrdering = (Token)_errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class KeepCommandContext extends ParserRuleContext {
- public TerminalNode KEEP() { return getToken(EsqlBaseParser.KEEP, 0); }
- public QualifiedNamePatternsContext qualifiedNamePatterns() {
- return getRuleContext(QualifiedNamePatternsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public KeepCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_keepCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterKeepCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitKeepCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitKeepCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final KeepCommandContext keepCommand() throws RecognitionException {
- KeepCommandContext _localctx = new KeepCommandContext(_ctx, getState());
- enterRule(_localctx, 80, RULE_keepCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(534);
- match(KEEP);
- setState(535);
- qualifiedNamePatterns();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class DropCommandContext extends ParserRuleContext {
- public TerminalNode DROP() { return getToken(EsqlBaseParser.DROP, 0); }
- public QualifiedNamePatternsContext qualifiedNamePatterns() {
- return getRuleContext(QualifiedNamePatternsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public DropCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_dropCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDropCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDropCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDropCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final DropCommandContext dropCommand() throws RecognitionException {
- DropCommandContext _localctx = new DropCommandContext(_ctx, getState());
- enterRule(_localctx, 82, RULE_dropCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(537);
- match(DROP);
- setState(538);
- qualifiedNamePatterns();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class RenameCommandContext extends ParserRuleContext {
- public TerminalNode RENAME() { return getToken(EsqlBaseParser.RENAME, 0); }
- public List renameClause() {
- return getRuleContexts(RenameClauseContext.class);
- }
- public RenameClauseContext renameClause(int i) {
- return getRuleContext(RenameClauseContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- @SuppressWarnings("this-escape")
- public RenameCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_renameCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRenameCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRenameCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRenameCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final RenameCommandContext renameCommand() throws RecognitionException {
- RenameCommandContext _localctx = new RenameCommandContext(_ctx, getState());
- enterRule(_localctx, 84, RULE_renameCommand);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(540);
- match(RENAME);
- setState(541);
- renameClause();
- setState(546);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,49,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(542);
- match(COMMA);
- setState(543);
- renameClause();
- }
- }
- }
- setState(548);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,49,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class RenameClauseContext extends ParserRuleContext {
- public QualifiedNamePatternContext oldName;
- public QualifiedNamePatternContext newName;
- public TerminalNode AS() { return getToken(EsqlBaseParser.AS, 0); }
- public List qualifiedNamePattern() {
- return getRuleContexts(QualifiedNamePatternContext.class);
- }
- public QualifiedNamePatternContext qualifiedNamePattern(int i) {
- return getRuleContext(QualifiedNamePatternContext.class,i);
- }
- @SuppressWarnings("this-escape")
- public RenameClauseContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_renameClause; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRenameClause(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRenameClause(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRenameClause(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final RenameClauseContext renameClause() throws RecognitionException {
- RenameClauseContext _localctx = new RenameClauseContext(_ctx, getState());
- enterRule(_localctx, 86, RULE_renameClause);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(549);
- ((RenameClauseContext)_localctx).oldName = qualifiedNamePattern();
- setState(550);
- match(AS);
- setState(551);
- ((RenameClauseContext)_localctx).newName = qualifiedNamePattern();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class DissectCommandContext extends ParserRuleContext {
- public TerminalNode DISSECT() { return getToken(EsqlBaseParser.DISSECT, 0); }
- public PrimaryExpressionContext primaryExpression() {
- return getRuleContext(PrimaryExpressionContext.class,0);
- }
- public StringContext string() {
- return getRuleContext(StringContext.class,0);
- }
- public CommandOptionsContext commandOptions() {
- return getRuleContext(CommandOptionsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public DissectCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_dissectCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDissectCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDissectCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDissectCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final DissectCommandContext dissectCommand() throws RecognitionException {
- DissectCommandContext _localctx = new DissectCommandContext(_ctx, getState());
- enterRule(_localctx, 88, RULE_dissectCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(553);
- match(DISSECT);
- setState(554);
- primaryExpression(0);
- setState(555);
- string();
- setState(557);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
- case 1:
- {
- setState(556);
- commandOptions();
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class GrokCommandContext extends ParserRuleContext {
- public TerminalNode GROK() { return getToken(EsqlBaseParser.GROK, 0); }
- public PrimaryExpressionContext primaryExpression() {
- return getRuleContext(PrimaryExpressionContext.class,0);
- }
- public StringContext string() {
- return getRuleContext(StringContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public GrokCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_grokCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterGrokCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitGrokCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitGrokCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final GrokCommandContext grokCommand() throws RecognitionException {
- GrokCommandContext _localctx = new GrokCommandContext(_ctx, getState());
- enterRule(_localctx, 90, RULE_grokCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(559);
- match(GROK);
- setState(560);
- primaryExpression(0);
- setState(561);
- string();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class MvExpandCommandContext extends ParserRuleContext {
- public TerminalNode MV_EXPAND() { return getToken(EsqlBaseParser.MV_EXPAND, 0); }
- public QualifiedNameContext qualifiedName() {
- return getRuleContext(QualifiedNameContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public MvExpandCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_mvExpandCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMvExpandCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMvExpandCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMvExpandCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final MvExpandCommandContext mvExpandCommand() throws RecognitionException {
- MvExpandCommandContext _localctx = new MvExpandCommandContext(_ctx, getState());
- enterRule(_localctx, 92, RULE_mvExpandCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(563);
- match(MV_EXPAND);
- setState(564);
- qualifiedName();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class CommandOptionsContext extends ParserRuleContext {
- public List commandOption() {
- return getRuleContexts(CommandOptionContext.class);
- }
- public CommandOptionContext commandOption(int i) {
- return getRuleContext(CommandOptionContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- @SuppressWarnings("this-escape")
- public CommandOptionsContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_commandOptions; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCommandOptions(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCommandOptions(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCommandOptions(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final CommandOptionsContext commandOptions() throws RecognitionException {
- CommandOptionsContext _localctx = new CommandOptionsContext(_ctx, getState());
- enterRule(_localctx, 94, RULE_commandOptions);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(566);
- commandOption();
- setState(571);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,51,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(567);
- match(COMMA);
- setState(568);
- commandOption();
- }
- }
- }
- setState(573);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,51,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class CommandOptionContext extends ParserRuleContext {
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
- public ConstantContext constant() {
- return getRuleContext(ConstantContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public CommandOptionContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_commandOption; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCommandOption(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCommandOption(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCommandOption(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final CommandOptionContext commandOption() throws RecognitionException {
- CommandOptionContext _localctx = new CommandOptionContext(_ctx, getState());
- enterRule(_localctx, 96, RULE_commandOption);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(574);
- identifier();
- setState(575);
- match(ASSIGN);
- setState(576);
- constant();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
@SuppressWarnings("CheckReturnValue")
public static class BooleanValueContext extends ParserRuleContext {
public TerminalNode TRUE() { return getToken(EsqlBaseParser.TRUE, 0); }
@@ -4754,12 +5712,12 @@ public class EsqlBaseParser extends ParserConfig {
public final BooleanValueContext booleanValue() throws RecognitionException {
BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState());
- enterRule(_localctx, 98, RULE_booleanValue);
+ enterRule(_localctx, 126, RULE_booleanValue);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(578);
+ setState(667);
_la = _input.LA(1);
if ( !(_la==FALSE || _la==TRUE) ) {
_errHandler.recoverInline(this);
@@ -4812,22 +5770,22 @@ public class EsqlBaseParser extends ParserConfig {
public final NumericValueContext numericValue() throws RecognitionException {
NumericValueContext _localctx = new NumericValueContext(_ctx, getState());
- enterRule(_localctx, 100, RULE_numericValue);
+ enterRule(_localctx, 128, RULE_numericValue);
try {
- setState(582);
+ setState(671);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,52,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(580);
+ setState(669);
decimalValue();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(581);
+ setState(670);
integerValue();
}
break;
@@ -4871,17 +5829,17 @@ public class EsqlBaseParser extends ParserConfig {
public final DecimalValueContext decimalValue() throws RecognitionException {
DecimalValueContext _localctx = new DecimalValueContext(_ctx, getState());
- enterRule(_localctx, 102, RULE_decimalValue);
+ enterRule(_localctx, 130, RULE_decimalValue);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(585);
+ setState(674);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==PLUS || _la==MINUS) {
{
- setState(584);
+ setState(673);
_la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) {
_errHandler.recoverInline(this);
@@ -4894,7 +5852,7 @@ public class EsqlBaseParser extends ParserConfig {
}
}
- setState(587);
+ setState(676);
match(DECIMAL_LITERAL);
}
}
@@ -4936,17 +5894,17 @@ public class EsqlBaseParser extends ParserConfig {
public final IntegerValueContext integerValue() throws RecognitionException {
IntegerValueContext _localctx = new IntegerValueContext(_ctx, getState());
- enterRule(_localctx, 104, RULE_integerValue);
+ enterRule(_localctx, 132, RULE_integerValue);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(590);
+ setState(679);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==PLUS || _la==MINUS) {
{
- setState(589);
+ setState(678);
_la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) {
_errHandler.recoverInline(this);
@@ -4959,7 +5917,7 @@ public class EsqlBaseParser extends ParserConfig {
}
}
- setState(592);
+ setState(681);
match(INTEGER_LITERAL);
}
}
@@ -4999,11 +5957,11 @@ public class EsqlBaseParser extends ParserConfig {
public final StringContext string() throws RecognitionException {
StringContext _localctx = new StringContext(_ctx, getState());
- enterRule(_localctx, 106, RULE_string);
+ enterRule(_localctx, 134, RULE_string);
try {
enterOuterAlt(_localctx, 1);
{
- setState(594);
+ setState(683);
match(QUOTED_STRING);
}
}
@@ -5048,14 +6006,14 @@ public class EsqlBaseParser extends ParserConfig {
public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
- enterRule(_localctx, 108, RULE_comparisonOperator);
+ enterRule(_localctx, 136, RULE_comparisonOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(596);
+ setState(685);
_la = _input.LA(1);
- if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & -432345564227567616L) != 0)) ) {
+ if ( !(((((_la - 76)) & ~0x3f) == 0 && ((1L << (_la - 76)) & 125L) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
@@ -5076,463 +6034,6 @@ public class EsqlBaseParser extends ParserConfig {
return _localctx;
}
- @SuppressWarnings("CheckReturnValue")
- public static class ExplainCommandContext extends ParserRuleContext {
- public TerminalNode EXPLAIN() { return getToken(EsqlBaseParser.EXPLAIN, 0); }
- public SubqueryExpressionContext subqueryExpression() {
- return getRuleContext(SubqueryExpressionContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public ExplainCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_explainCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterExplainCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitExplainCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitExplainCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ExplainCommandContext explainCommand() throws RecognitionException {
- ExplainCommandContext _localctx = new ExplainCommandContext(_ctx, getState());
- enterRule(_localctx, 110, RULE_explainCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(598);
- match(EXPLAIN);
- setState(599);
- subqueryExpression();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class SubqueryExpressionContext extends ParserRuleContext {
- public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
- public QueryContext query() {
- return getRuleContext(QueryContext.class,0);
- }
- public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
- @SuppressWarnings("this-escape")
- public SubqueryExpressionContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_subqueryExpression; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSubqueryExpression(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSubqueryExpression(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSubqueryExpression(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final SubqueryExpressionContext subqueryExpression() throws RecognitionException {
- SubqueryExpressionContext _localctx = new SubqueryExpressionContext(_ctx, getState());
- enterRule(_localctx, 112, RULE_subqueryExpression);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(601);
- match(OPENING_BRACKET);
- setState(602);
- query(0);
- setState(603);
- match(CLOSING_BRACKET);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class ShowCommandContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public ShowCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_showCommand; }
-
- @SuppressWarnings("this-escape")
- public ShowCommandContext() { }
- public void copyFrom(ShowCommandContext ctx) {
- super.copyFrom(ctx);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class ShowInfoContext extends ShowCommandContext {
- public TerminalNode SHOW() { return getToken(EsqlBaseParser.SHOW, 0); }
- public TerminalNode INFO() { return getToken(EsqlBaseParser.INFO, 0); }
- @SuppressWarnings("this-escape")
- public ShowInfoContext(ShowCommandContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterShowInfo(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitShowInfo(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitShowInfo(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ShowCommandContext showCommand() throws RecognitionException {
- ShowCommandContext _localctx = new ShowCommandContext(_ctx, getState());
- enterRule(_localctx, 114, RULE_showCommand);
- try {
- _localctx = new ShowInfoContext(_localctx);
- enterOuterAlt(_localctx, 1);
- {
- setState(605);
- match(SHOW);
- setState(606);
- match(INFO);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class EnrichCommandContext extends ParserRuleContext {
- public Token policyName;
- public QualifiedNamePatternContext matchField;
- public TerminalNode ENRICH() { return getToken(EsqlBaseParser.ENRICH, 0); }
- public TerminalNode ENRICH_POLICY_NAME() { return getToken(EsqlBaseParser.ENRICH_POLICY_NAME, 0); }
- public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
- public TerminalNode WITH() { return getToken(EsqlBaseParser.WITH, 0); }
- public List enrichWithClause() {
- return getRuleContexts(EnrichWithClauseContext.class);
- }
- public EnrichWithClauseContext enrichWithClause(int i) {
- return getRuleContext(EnrichWithClauseContext.class,i);
- }
- public QualifiedNamePatternContext qualifiedNamePattern() {
- return getRuleContext(QualifiedNamePatternContext.class,0);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- @SuppressWarnings("this-escape")
- public EnrichCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_enrichCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final EnrichCommandContext enrichCommand() throws RecognitionException {
- EnrichCommandContext _localctx = new EnrichCommandContext(_ctx, getState());
- enterRule(_localctx, 116, RULE_enrichCommand);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(608);
- match(ENRICH);
- setState(609);
- ((EnrichCommandContext)_localctx).policyName = match(ENRICH_POLICY_NAME);
- setState(612);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,55,_ctx) ) {
- case 1:
- {
- setState(610);
- match(ON);
- setState(611);
- ((EnrichCommandContext)_localctx).matchField = qualifiedNamePattern();
- }
- break;
- }
- setState(623);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) {
- case 1:
- {
- setState(614);
- match(WITH);
- setState(615);
- enrichWithClause();
- setState(620);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,56,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(616);
- match(COMMA);
- setState(617);
- enrichWithClause();
- }
- }
- }
- setState(622);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,56,_ctx);
- }
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class EnrichWithClauseContext extends ParserRuleContext {
- public QualifiedNamePatternContext newName;
- public QualifiedNamePatternContext enrichField;
- public List qualifiedNamePattern() {
- return getRuleContexts(QualifiedNamePatternContext.class);
- }
- public QualifiedNamePatternContext qualifiedNamePattern(int i) {
- return getRuleContext(QualifiedNamePatternContext.class,i);
- }
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
- @SuppressWarnings("this-escape")
- public EnrichWithClauseContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_enrichWithClause; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichWithClause(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichWithClause(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichWithClause(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final EnrichWithClauseContext enrichWithClause() throws RecognitionException {
- EnrichWithClauseContext _localctx = new EnrichWithClauseContext(_ctx, getState());
- enterRule(_localctx, 118, RULE_enrichWithClause);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(628);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,58,_ctx) ) {
- case 1:
- {
- setState(625);
- ((EnrichWithClauseContext)_localctx).newName = qualifiedNamePattern();
- setState(626);
- match(ASSIGN);
- }
- break;
- }
- setState(630);
- ((EnrichWithClauseContext)_localctx).enrichField = qualifiedNamePattern();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class LookupCommandContext extends ParserRuleContext {
- public IndexPatternContext tableName;
- public QualifiedNamePatternsContext matchFields;
- public TerminalNode DEV_LOOKUP() { return getToken(EsqlBaseParser.DEV_LOOKUP, 0); }
- public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
- public IndexPatternContext indexPattern() {
- return getRuleContext(IndexPatternContext.class,0);
- }
- public QualifiedNamePatternsContext qualifiedNamePatterns() {
- return getRuleContext(QualifiedNamePatternsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public LookupCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_lookupCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLookupCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLookupCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLookupCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final LookupCommandContext lookupCommand() throws RecognitionException {
- LookupCommandContext _localctx = new LookupCommandContext(_ctx, getState());
- enterRule(_localctx, 120, RULE_lookupCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(632);
- match(DEV_LOOKUP);
- setState(633);
- ((LookupCommandContext)_localctx).tableName = indexPattern();
- setState(634);
- match(ON);
- setState(635);
- ((LookupCommandContext)_localctx).matchFields = qualifiedNamePatterns();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class InlinestatsCommandContext extends ParserRuleContext {
- public AggFieldsContext stats;
- public FieldsContext grouping;
- public TerminalNode DEV_INLINESTATS() { return getToken(EsqlBaseParser.DEV_INLINESTATS, 0); }
- public AggFieldsContext aggFields() {
- return getRuleContext(AggFieldsContext.class,0);
- }
- public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public InlinestatsCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_inlinestatsCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInlinestatsCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInlinestatsCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInlinestatsCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final InlinestatsCommandContext inlinestatsCommand() throws RecognitionException {
- InlinestatsCommandContext _localctx = new InlinestatsCommandContext(_ctx, getState());
- enterRule(_localctx, 122, RULE_inlinestatsCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(637);
- match(DEV_INLINESTATS);
- setState(638);
- ((InlinestatsCommandContext)_localctx).stats = aggFields();
- setState(641);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
- case 1:
- {
- setState(639);
- match(BY);
- setState(640);
- ((InlinestatsCommandContext)_localctx).grouping = fields();
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
@SuppressWarnings("CheckReturnValue")
public static class JoinCommandContext extends ParserRuleContext {
public Token type;
@@ -5568,15 +6069,15 @@ public class EsqlBaseParser extends ParserConfig {
public final JoinCommandContext joinCommand() throws RecognitionException {
JoinCommandContext _localctx = new JoinCommandContext(_ctx, getState());
- enterRule(_localctx, 124, RULE_joinCommand);
+ enterRule(_localctx, 138, RULE_joinCommand);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(643);
+ setState(687);
((JoinCommandContext)_localctx).type = _input.LT(1);
_la = _input.LA(1);
- if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 50462720L) != 0)) ) {
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 3407872L) != 0)) ) {
((JoinCommandContext)_localctx).type = (Token)_errHandler.recoverInline(this);
}
else {
@@ -5584,11 +6085,11 @@ public class EsqlBaseParser extends ParserConfig {
_errHandler.reportMatch(this);
consume();
}
- setState(644);
+ setState(688);
match(JOIN);
- setState(645);
+ setState(689);
joinTarget();
- setState(646);
+ setState(690);
joinCondition();
}
}
@@ -5631,11 +6132,11 @@ public class EsqlBaseParser extends ParserConfig {
public final JoinTargetContext joinTarget() throws RecognitionException {
JoinTargetContext _localctx = new JoinTargetContext(_ctx, getState());
- enterRule(_localctx, 126, RULE_joinTarget);
+ enterRule(_localctx, 140, RULE_joinTarget);
try {
enterOuterAlt(_localctx, 1);
{
- setState(648);
+ setState(692);
((JoinTargetContext)_localctx).index = indexPattern();
}
}
@@ -5685,32 +6186,32 @@ public class EsqlBaseParser extends ParserConfig {
public final JoinConditionContext joinCondition() throws RecognitionException {
JoinConditionContext _localctx = new JoinConditionContext(_ctx, getState());
- enterRule(_localctx, 128, RULE_joinCondition);
+ enterRule(_localctx, 142, RULE_joinCondition);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(650);
+ setState(694);
match(ON);
- setState(651);
+ setState(695);
joinPredicate();
- setState(656);
+ setState(700);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,60,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,65,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(652);
+ setState(696);
match(COMMA);
- setState(653);
+ setState(697);
joinPredicate();
}
}
}
- setState(658);
+ setState(702);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,60,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,65,_ctx);
}
}
}
@@ -5752,513 +6253,12 @@ public class EsqlBaseParser extends ParserConfig {
public final JoinPredicateContext joinPredicate() throws RecognitionException {
JoinPredicateContext _localctx = new JoinPredicateContext(_ctx, getState());
- enterRule(_localctx, 130, RULE_joinPredicate);
+ enterRule(_localctx, 144, RULE_joinPredicate);
try {
enterOuterAlt(_localctx, 1);
{
- setState(659);
- valueExpression();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class ChangePointCommandContext extends ParserRuleContext {
- public QualifiedNameContext value;
- public QualifiedNameContext key;
- public QualifiedNameContext targetType;
- public QualifiedNameContext targetPvalue;
- public TerminalNode DEV_CHANGE_POINT() { return getToken(EsqlBaseParser.DEV_CHANGE_POINT, 0); }
- public List qualifiedName() {
- return getRuleContexts(QualifiedNameContext.class);
- }
- public QualifiedNameContext qualifiedName(int i) {
- return getRuleContext(QualifiedNameContext.class,i);
- }
- public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
- public TerminalNode AS() { return getToken(EsqlBaseParser.AS, 0); }
- public TerminalNode COMMA() { return getToken(EsqlBaseParser.COMMA, 0); }
- @SuppressWarnings("this-escape")
- public ChangePointCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_changePointCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterChangePointCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitChangePointCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitChangePointCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ChangePointCommandContext changePointCommand() throws RecognitionException {
- ChangePointCommandContext _localctx = new ChangePointCommandContext(_ctx, getState());
- enterRule(_localctx, 132, RULE_changePointCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(661);
- match(DEV_CHANGE_POINT);
- setState(662);
- ((ChangePointCommandContext)_localctx).value = qualifiedName();
- setState(665);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) {
- case 1:
- {
- setState(663);
- match(ON);
- setState(664);
- ((ChangePointCommandContext)_localctx).key = qualifiedName();
- }
- break;
- }
- setState(672);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
- case 1:
- {
- setState(667);
- match(AS);
- setState(668);
- ((ChangePointCommandContext)_localctx).targetType = qualifiedName();
- setState(669);
- match(COMMA);
- setState(670);
- ((ChangePointCommandContext)_localctx).targetPvalue = qualifiedName();
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class InsistCommandContext extends ParserRuleContext {
- public TerminalNode DEV_INSIST() { return getToken(EsqlBaseParser.DEV_INSIST, 0); }
- public QualifiedNamePatternsContext qualifiedNamePatterns() {
- return getRuleContext(QualifiedNamePatternsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public InsistCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_insistCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInsistCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInsistCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInsistCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final InsistCommandContext insistCommand() throws RecognitionException {
- InsistCommandContext _localctx = new InsistCommandContext(_ctx, getState());
- enterRule(_localctx, 134, RULE_insistCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(674);
- match(DEV_INSIST);
- setState(675);
- qualifiedNamePatterns();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class ForkCommandContext extends ParserRuleContext {
- public TerminalNode DEV_FORK() { return getToken(EsqlBaseParser.DEV_FORK, 0); }
- public ForkSubQueriesContext forkSubQueries() {
- return getRuleContext(ForkSubQueriesContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public ForkCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_forkCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ForkCommandContext forkCommand() throws RecognitionException {
- ForkCommandContext _localctx = new ForkCommandContext(_ctx, getState());
- enterRule(_localctx, 136, RULE_forkCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(677);
- match(DEV_FORK);
- setState(678);
- forkSubQueries();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class ForkSubQueriesContext extends ParserRuleContext {
- public List forkSubQuery() {
- return getRuleContexts(ForkSubQueryContext.class);
- }
- public ForkSubQueryContext forkSubQuery(int i) {
- return getRuleContext(ForkSubQueryContext.class,i);
- }
- @SuppressWarnings("this-escape")
- public ForkSubQueriesContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_forkSubQueries; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkSubQueries(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkSubQueries(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkSubQueries(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ForkSubQueriesContext forkSubQueries() throws RecognitionException {
- ForkSubQueriesContext _localctx = new ForkSubQueriesContext(_ctx, getState());
- enterRule(_localctx, 138, RULE_forkSubQueries);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(681);
- _errHandler.sync(this);
- _alt = 1;
- do {
- switch (_alt) {
- case 1:
- {
- {
- setState(680);
- forkSubQuery();
- }
- }
- break;
- default:
- throw new NoViableAltException(this);
- }
- setState(683);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,63,_ctx);
- } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class ForkSubQueryContext extends ParserRuleContext {
- public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
- public ForkSubQueryCommandContext forkSubQueryCommand() {
- return getRuleContext(ForkSubQueryCommandContext.class,0);
- }
- public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
- @SuppressWarnings("this-escape")
- public ForkSubQueryContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_forkSubQuery; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkSubQuery(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkSubQuery(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkSubQuery(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ForkSubQueryContext forkSubQuery() throws RecognitionException {
- ForkSubQueryContext _localctx = new ForkSubQueryContext(_ctx, getState());
- enterRule(_localctx, 140, RULE_forkSubQuery);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(685);
- match(LP);
- setState(686);
- forkSubQueryCommand(0);
- setState(687);
- match(RP);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class ForkSubQueryCommandContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public ForkSubQueryCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_forkSubQueryCommand; }
-
- @SuppressWarnings("this-escape")
- public ForkSubQueryCommandContext() { }
- public void copyFrom(ForkSubQueryCommandContext ctx) {
- super.copyFrom(ctx);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class SingleForkSubQueryCommandContext extends ForkSubQueryCommandContext {
- public ForkSubQueryProcessingCommandContext forkSubQueryProcessingCommand() {
- return getRuleContext(ForkSubQueryProcessingCommandContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public SingleForkSubQueryCommandContext(ForkSubQueryCommandContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSingleForkSubQueryCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSingleForkSubQueryCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSingleForkSubQueryCommand(this);
- else return visitor.visitChildren(this);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class CompositeForkSubQueryContext extends ForkSubQueryCommandContext {
- public ForkSubQueryCommandContext forkSubQueryCommand() {
- return getRuleContext(ForkSubQueryCommandContext.class,0);
- }
- public TerminalNode PIPE() { return getToken(EsqlBaseParser.PIPE, 0); }
- public ForkSubQueryProcessingCommandContext forkSubQueryProcessingCommand() {
- return getRuleContext(ForkSubQueryProcessingCommandContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public CompositeForkSubQueryContext(ForkSubQueryCommandContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCompositeForkSubQuery(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCompositeForkSubQuery(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCompositeForkSubQuery(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ForkSubQueryCommandContext forkSubQueryCommand() throws RecognitionException {
- return forkSubQueryCommand(0);
- }
-
- private ForkSubQueryCommandContext forkSubQueryCommand(int _p) throws RecognitionException {
- ParserRuleContext _parentctx = _ctx;
- int _parentState = getState();
- ForkSubQueryCommandContext _localctx = new ForkSubQueryCommandContext(_ctx, _parentState);
- ForkSubQueryCommandContext _prevctx = _localctx;
- int _startState = 142;
- enterRecursionRule(_localctx, 142, RULE_forkSubQueryCommand, _p);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- {
- _localctx = new SingleForkSubQueryCommandContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
-
- setState(690);
- forkSubQueryProcessingCommand();
- }
- _ctx.stop = _input.LT(-1);
- setState(697);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,64,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- if ( _parseListeners!=null ) triggerExitRuleEvent();
- _prevctx = _localctx;
- {
- {
- _localctx = new CompositeForkSubQueryContext(new ForkSubQueryCommandContext(_parentctx, _parentState));
- pushNewRecursionContext(_localctx, _startState, RULE_forkSubQueryCommand);
- setState(692);
- if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(693);
- match(PIPE);
- setState(694);
- forkSubQueryProcessingCommand();
- }
- }
- }
- setState(699);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,64,_ctx);
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- unrollRecursionContexts(_parentctx);
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class ForkSubQueryProcessingCommandContext extends ParserRuleContext {
- public WhereCommandContext whereCommand() {
- return getRuleContext(WhereCommandContext.class,0);
- }
- public SortCommandContext sortCommand() {
- return getRuleContext(SortCommandContext.class,0);
- }
- public LimitCommandContext limitCommand() {
- return getRuleContext(LimitCommandContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public ForkSubQueryProcessingCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_forkSubQueryProcessingCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkSubQueryProcessingCommand(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkSubQueryProcessingCommand(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkSubQueryProcessingCommand(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ForkSubQueryProcessingCommandContext forkSubQueryProcessingCommand() throws RecognitionException {
- ForkSubQueryProcessingCommandContext _localctx = new ForkSubQueryProcessingCommandContext(_ctx, getState());
- enterRule(_localctx, 144, RULE_forkSubQueryProcessingCommand);
- try {
setState(703);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case WHERE:
- enterOuterAlt(_localctx, 1);
- {
- setState(700);
- whereCommand();
- }
- break;
- case SORT:
- enterOuterAlt(_localctx, 2);
- {
- setState(701);
- sortCommand();
- }
- break;
- case LIMIT:
- enterOuterAlt(_localctx, 3);
- {
- setState(702);
- limitCommand();
- }
- break;
- default:
- throw new NoViableAltException(this);
+ valueExpression();
}
}
catch (RecognitionException re) {
@@ -6280,14 +6280,14 @@ public class EsqlBaseParser extends ParserConfig {
return sourceCommand_sempred((SourceCommandContext)_localctx, predIndex);
case 3:
return processingCommand_sempred((ProcessingCommandContext)_localctx, predIndex);
- case 5:
- return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex);
- case 9:
- return operatorExpression_sempred((OperatorExpressionContext)_localctx, predIndex);
- case 10:
- return primaryExpression_sempred((PrimaryExpressionContext)_localctx, predIndex);
- case 71:
+ case 50:
return forkSubQueryCommand_sempred((ForkSubQueryCommandContext)_localctx, predIndex);
+ case 52:
+ return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex);
+ case 56:
+ return operatorExpression_sempred((OperatorExpressionContext)_localctx, predIndex);
+ case 57:
+ return primaryExpression_sempred((PrimaryExpressionContext)_localctx, predIndex);
}
return true;
}
@@ -6320,32 +6320,32 @@ public class EsqlBaseParser extends ParserConfig {
}
return true;
}
- private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) {
+ private boolean forkSubQueryCommand_sempred(ForkSubQueryCommandContext _localctx, int predIndex) {
switch (predIndex) {
case 7:
- return precpred(_ctx, 5);
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
case 8:
+ return precpred(_ctx, 5);
+ case 9:
return precpred(_ctx, 4);
}
return true;
}
private boolean operatorExpression_sempred(OperatorExpressionContext _localctx, int predIndex) {
switch (predIndex) {
- case 9:
- return precpred(_ctx, 2);
case 10:
- return precpred(_ctx, 1);
- }
- return true;
- }
- private boolean primaryExpression_sempred(PrimaryExpressionContext _localctx, int predIndex) {
- switch (predIndex) {
+ return precpred(_ctx, 2);
case 11:
return precpred(_ctx, 1);
}
return true;
}
- private boolean forkSubQueryCommand_sempred(ForkSubQueryCommandContext _localctx, int predIndex) {
+ private boolean primaryExpression_sempred(PrimaryExpressionContext _localctx, int predIndex) {
switch (predIndex) {
case 12:
return precpred(_ctx, 1);
@@ -6354,7 +6354,7 @@ public class EsqlBaseParser extends ParserConfig {
}
public static final String _serializedATN =
- "\u0004\u0001\u008e\u02c2\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
+ "\u0004\u0001\u008b\u02c2\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
@@ -6381,421 +6381,414 @@ public class EsqlBaseParser extends ParserConfig {
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0003\u0003\u00c0\b\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005"+
- "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
- "\u0003\u0005\u00cc\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
- "\u0001\u0005\u0005\u0005\u00d3\b\u0005\n\u0005\f\u0005\u00d6\t\u0005\u0001"+
- "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u00dd"+
- "\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u00e2\b\u0005"+
- "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
- "\u0005\u0005\u00ea\b\u0005\n\u0005\f\u0005\u00ed\t\u0005\u0001\u0006\u0001"+
- "\u0006\u0003\u0006\u00f1\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+
- "\u0006\u0001\u0006\u0003\u0006\u00f8\b\u0006\u0001\u0006\u0001\u0006\u0001"+
- "\u0006\u0003\u0006\u00fd\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0003"+
- "\u0007\u0102\b\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001"+
- "\b\u0001\b\u0001\b\u0001\b\u0003\b\u010c\b\b\u0001\t\u0001\t\u0001\t\u0001"+
- "\t\u0003\t\u0112\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0005"+
- "\t\u011a\b\t\n\t\f\t\u011d\t\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n"+
- "\u0001\n\u0001\n\u0001\n\u0003\n\u0127\b\n\u0001\n\u0001\n\u0001\n\u0005"+
- "\n\u012c\b\n\n\n\f\n\u012f\t\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+
- "\u000b\u0001\u000b\u0001\u000b\u0005\u000b\u0137\b\u000b\n\u000b\f\u000b"+
- "\u013a\t\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u013e\b\u000b\u0003"+
- "\u000b\u0140\b\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\r\u0001"+
- "\r\u0001\r\u0001\r\u0005\r\u014a\b\r\n\r\f\r\u014d\t\r\u0001\r\u0001\r"+
- "\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f"+
- "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011"+
- "\u0005\u0011\u015d\b\u0011\n\u0011\f\u0011\u0160\t\u0011\u0001\u0012\u0001"+
- "\u0012\u0001\u0012\u0003\u0012\u0165\b\u0012\u0001\u0012\u0001\u0012\u0001"+
- "\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0005\u0013\u016d\b\u0013\n"+
- "\u0013\f\u0013\u0170\t\u0013\u0001\u0013\u0003\u0013\u0173\b\u0013\u0001"+
- "\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u0178\b\u0014\u0001\u0014\u0001"+
- "\u0014\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0017\u0001"+
- "\u0017\u0001\u0017\u0001\u0017\u0005\u0017\u0184\b\u0017\n\u0017\f\u0017"+
- "\u0187\t\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0005\u0018"+
- "\u018d\b\u0018\n\u0018\f\u0018\u0190\t\u0018\u0001\u0018\u0003\u0018\u0193"+
- "\b\u0018\u0001\u0018\u0001\u0018\u0003\u0018\u0197\b\u0018\u0001\u0019"+
- "\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0003\u001a\u019e\b\u001a"+
- "\u0001\u001a\u0001\u001a\u0003\u001a\u01a2\b\u001a\u0001\u001b\u0001\u001b"+
- "\u0001\u001b\u0005\u001b\u01a7\b\u001b\n\u001b\f\u001b\u01aa\t\u001b\u0001"+
- "\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u01af\b\u001c\u0001\u001d\u0001"+
- "\u001d\u0001\u001d\u0005\u001d\u01b4\b\u001d\n\u001d\f\u001d\u01b7\t\u001d"+
- "\u0001\u001e\u0001\u001e\u0001\u001e\u0005\u001e\u01bc\b\u001e\n\u001e"+
- "\f\u001e\u01bf\t\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0005\u001f"+
- "\u01c4\b\u001f\n\u001f\f\u001f\u01c7\t\u001f\u0001 \u0001 \u0001!\u0001"+
- "!\u0003!\u01cd\b!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001"+
- "\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0005\"\u01dc\b\"\n"+
- "\"\f\"\u01df\t\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0005"+
- "\"\u01e7\b\"\n\"\f\"\u01ea\t\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\""+
- "\u0001\"\u0005\"\u01f2\b\"\n\"\f\"\u01f5\t\"\u0001\"\u0001\"\u0003\"\u01f9"+
- "\b\"\u0001#\u0001#\u0003#\u01fd\b#\u0001$\u0001$\u0003$\u0201\b$\u0001"+
- "%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0005&\u020a\b&\n&\f&\u020d"+
- "\t&\u0001\'\u0001\'\u0003\'\u0211\b\'\u0001\'\u0001\'\u0003\'\u0215\b"+
- "\'\u0001(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001*\u0001*\u0001*\u0001"+
- "*\u0005*\u0221\b*\n*\f*\u0224\t*\u0001+\u0001+\u0001+\u0001+\u0001,\u0001"+
- ",\u0001,\u0001,\u0003,\u022e\b,\u0001-\u0001-\u0001-\u0001-\u0001.\u0001"+
- ".\u0001.\u0001/\u0001/\u0001/\u0005/\u023a\b/\n/\f/\u023d\t/\u00010\u0001"+
- "0\u00010\u00010\u00011\u00011\u00012\u00012\u00032\u0247\b2\u00013\u0003"+
- "3\u024a\b3\u00013\u00013\u00014\u00034\u024f\b4\u00014\u00014\u00015\u0001"+
- "5\u00016\u00016\u00017\u00017\u00017\u00018\u00018\u00018\u00018\u0001"+
- "9\u00019\u00019\u0001:\u0001:\u0001:\u0001:\u0003:\u0265\b:\u0001:\u0001"+
- ":\u0001:\u0001:\u0005:\u026b\b:\n:\f:\u026e\t:\u0003:\u0270\b:\u0001;"+
- "\u0001;\u0001;\u0003;\u0275\b;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001"+
- "<\u0001<\u0001=\u0001=\u0001=\u0001=\u0003=\u0282\b=\u0001>\u0001>\u0001"+
- ">\u0001>\u0001>\u0001?\u0001?\u0001@\u0001@\u0001@\u0001@\u0005@\u028f"+
- "\b@\n@\f@\u0292\t@\u0001A\u0001A\u0001B\u0001B\u0001B\u0001B\u0003B\u029a"+
- "\bB\u0001B\u0001B\u0001B\u0001B\u0001B\u0003B\u02a1\bB\u0001C\u0001C\u0001"+
- "C\u0001D\u0001D\u0001D\u0001E\u0004E\u02aa\bE\u000bE\fE\u02ab\u0001F\u0001"+
- "F\u0001F\u0001F\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0005G\u02b8"+
- "\bG\nG\fG\u02bb\tG\u0001H\u0001H\u0001H\u0003H\u02c0\bH\u0001H\u0000\u0005"+
- "\u0002\n\u0012\u0014\u008eI\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010"+
- "\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPR"+
- "TVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e"+
- "\u0090\u0000\t\u0001\u0000@A\u0001\u0000BD\u0002\u0000 UU\u0001\u0000"+
- "LM\u0002\u0000%%**\u0002\u0000--00\u0002\u0000,,88\u0002\u000099;?\u0002"+
- "\u0000\u0011\u0011\u0018\u0019\u02dd\u0000\u0092\u0001\u0000\u0000\u0000"+
- "\u0002\u0095\u0001\u0000\u0000\u0000\u0004\u00a6\u0001\u0000\u0000\u0000"+
- "\u0006\u00bf\u0001\u0000\u0000\u0000\b\u00c1\u0001\u0000\u0000\u0000\n"+
- "\u00e1\u0001\u0000\u0000\u0000\f\u00fc\u0001\u0000\u0000\u0000\u000e\u00fe"+
- "\u0001\u0000\u0000\u0000\u0010\u010b\u0001\u0000\u0000\u0000\u0012\u0111"+
- "\u0001\u0000\u0000\u0000\u0014\u0126\u0001\u0000\u0000\u0000\u0016\u0130"+
- "\u0001\u0000\u0000\u0000\u0018\u0143\u0001\u0000\u0000\u0000\u001a\u0145"+
- "\u0001\u0000\u0000\u0000\u001c\u0150\u0001\u0000\u0000\u0000\u001e\u0154"+
- "\u0001\u0000\u0000\u0000 \u0156\u0001\u0000\u0000\u0000\"\u0159\u0001"+
- "\u0000\u0000\u0000$\u0164\u0001\u0000\u0000\u0000&\u0168\u0001\u0000\u0000"+
- "\u0000(\u0177\u0001\u0000\u0000\u0000*\u017b\u0001\u0000\u0000\u0000,"+
- "\u017d\u0001\u0000\u0000\u0000.\u017f\u0001\u0000\u0000\u00000\u0188\u0001"+
- "\u0000\u0000\u00002\u0198\u0001\u0000\u0000\u00004\u019b\u0001\u0000\u0000"+
- "\u00006\u01a3\u0001\u0000\u0000\u00008\u01ab\u0001\u0000\u0000\u0000:"+
- "\u01b0\u0001\u0000\u0000\u0000<\u01b8\u0001\u0000\u0000\u0000>\u01c0\u0001"+
- "\u0000\u0000\u0000@\u01c8\u0001\u0000\u0000\u0000B\u01cc\u0001\u0000\u0000"+
- "\u0000D\u01f8\u0001\u0000\u0000\u0000F\u01fc\u0001\u0000\u0000\u0000H"+
- "\u0200\u0001\u0000\u0000\u0000J\u0202\u0001\u0000\u0000\u0000L\u0205\u0001"+
- "\u0000\u0000\u0000N\u020e\u0001\u0000\u0000\u0000P\u0216\u0001\u0000\u0000"+
- "\u0000R\u0219\u0001\u0000\u0000\u0000T\u021c\u0001\u0000\u0000\u0000V"+
- "\u0225\u0001\u0000\u0000\u0000X\u0229\u0001\u0000\u0000\u0000Z\u022f\u0001"+
- "\u0000\u0000\u0000\\\u0233\u0001\u0000\u0000\u0000^\u0236\u0001\u0000"+
- "\u0000\u0000`\u023e\u0001\u0000\u0000\u0000b\u0242\u0001\u0000\u0000\u0000"+
- "d\u0246\u0001\u0000\u0000\u0000f\u0249\u0001\u0000\u0000\u0000h\u024e"+
- "\u0001\u0000\u0000\u0000j\u0252\u0001\u0000\u0000\u0000l\u0254\u0001\u0000"+
- "\u0000\u0000n\u0256\u0001\u0000\u0000\u0000p\u0259\u0001\u0000\u0000\u0000"+
- "r\u025d\u0001\u0000\u0000\u0000t\u0260\u0001\u0000\u0000\u0000v\u0274"+
- "\u0001\u0000\u0000\u0000x\u0278\u0001\u0000\u0000\u0000z\u027d\u0001\u0000"+
- "\u0000\u0000|\u0283\u0001\u0000\u0000\u0000~\u0288\u0001\u0000\u0000\u0000"+
- "\u0080\u028a\u0001\u0000\u0000\u0000\u0082\u0293\u0001\u0000\u0000\u0000"+
- "\u0084\u0295\u0001\u0000\u0000\u0000\u0086\u02a2\u0001\u0000\u0000\u0000"+
- "\u0088\u02a5\u0001\u0000\u0000\u0000\u008a\u02a9\u0001\u0000\u0000\u0000"+
- "\u008c\u02ad\u0001\u0000\u0000\u0000\u008e\u02b1\u0001\u0000\u0000\u0000"+
- "\u0090\u02bf\u0001\u0000\u0000\u0000\u0092\u0093\u0003\u0002\u0001\u0000"+
- "\u0093\u0094\u0005\u0000\u0000\u0001\u0094\u0001\u0001\u0000\u0000\u0000"+
- "\u0095\u0096\u0006\u0001\uffff\uffff\u0000\u0096\u0097\u0003\u0004\u0002"+
- "\u0000\u0097\u009d\u0001\u0000\u0000\u0000\u0098\u0099\n\u0001\u0000\u0000"+
- "\u0099\u009a\u0005\u001f\u0000\u0000\u009a\u009c\u0003\u0006\u0003\u0000"+
- "\u009b\u0098\u0001\u0000\u0000\u0000\u009c\u009f\u0001\u0000\u0000\u0000"+
- "\u009d\u009b\u0001\u0000\u0000\u0000\u009d\u009e\u0001\u0000\u0000\u0000"+
- "\u009e\u0003\u0001\u0000\u0000\u0000\u009f\u009d\u0001\u0000\u0000\u0000"+
- "\u00a0\u00a7\u0003n7\u0000\u00a1\u00a7\u0003&\u0013\u0000\u00a2\u00a7"+
- "\u0003 \u0010\u0000\u00a3\u00a7\u0003r9\u0000\u00a4\u00a5\u0004\u0002"+
- "\u0001\u0000\u00a5\u00a7\u00030\u0018\u0000\u00a6\u00a0\u0001\u0000\u0000"+
- "\u0000\u00a6\u00a1\u0001\u0000\u0000\u0000\u00a6\u00a2\u0001\u0000\u0000"+
- "\u0000\u00a6\u00a3\u0001\u0000\u0000\u0000\u00a6\u00a4\u0001\u0000\u0000"+
- "\u0000\u00a7\u0005\u0001\u0000\u0000\u0000\u00a8\u00c0\u00032\u0019\u0000"+
- "\u00a9\u00c0\u0003\b\u0004\u0000\u00aa\u00c0\u0003P(\u0000\u00ab\u00c0"+
- "\u0003J%\u0000\u00ac\u00c0\u00034\u001a\u0000\u00ad\u00c0\u0003L&\u0000"+
- "\u00ae\u00c0\u0003R)\u0000\u00af\u00c0\u0003T*\u0000\u00b0\u00c0\u0003"+
- "X,\u0000\u00b1\u00c0\u0003Z-\u0000\u00b2\u00c0\u0003t:\u0000\u00b3\u00c0"+
- "\u0003\\.\u0000\u00b4\u00c0\u0003|>\u0000\u00b5\u00b6\u0004\u0003\u0002"+
- "\u0000\u00b6\u00c0\u0003z=\u0000\u00b7\u00b8\u0004\u0003\u0003\u0000\u00b8"+
- "\u00c0\u0003x<\u0000\u00b9\u00ba\u0004\u0003\u0004\u0000\u00ba\u00c0\u0003"+
- "\u0084B\u0000\u00bb\u00bc\u0004\u0003\u0005\u0000\u00bc\u00c0\u0003\u0086"+
- "C\u0000\u00bd\u00be\u0004\u0003\u0006\u0000\u00be\u00c0\u0003\u0088D\u0000"+
- "\u00bf\u00a8\u0001\u0000\u0000\u0000\u00bf\u00a9\u0001\u0000\u0000\u0000"+
- "\u00bf\u00aa\u0001\u0000\u0000\u0000\u00bf\u00ab\u0001\u0000\u0000\u0000"+
- "\u00bf\u00ac\u0001\u0000\u0000\u0000\u00bf\u00ad\u0001\u0000\u0000\u0000"+
- "\u00bf\u00ae\u0001\u0000\u0000\u0000\u00bf\u00af\u0001\u0000\u0000\u0000"+
- "\u00bf\u00b0\u0001\u0000\u0000\u0000\u00bf\u00b1\u0001\u0000\u0000\u0000"+
- "\u00bf\u00b2\u0001\u0000\u0000\u0000\u00bf\u00b3\u0001\u0000\u0000\u0000"+
- "\u00bf\u00b4\u0001\u0000\u0000\u0000\u00bf\u00b5\u0001\u0000\u0000\u0000"+
- "\u00bf\u00b7\u0001\u0000\u0000\u0000\u00bf\u00b9\u0001\u0000\u0000\u0000"+
- "\u00bf\u00bb\u0001\u0000\u0000\u0000\u00bf\u00bd\u0001\u0000\u0000\u0000"+
- "\u00c0\u0007\u0001\u0000\u0000\u0000\u00c1\u00c2\u0005\u0010\u0000\u0000"+
- "\u00c2\u00c3\u0003\n\u0005\u0000\u00c3\t\u0001\u0000\u0000\u0000\u00c4"+
- "\u00c5\u0006\u0005\uffff\uffff\u0000\u00c5\u00c6\u00052\u0000\u0000\u00c6"+
- "\u00e2\u0003\n\u0005\b\u00c7\u00e2\u0003\u0010\b\u0000\u00c8\u00e2\u0003"+
- "\f\u0006\u0000\u00c9\u00cb\u0003\u0010\b\u0000\u00ca\u00cc\u00052\u0000"+
- "\u0000\u00cb\u00ca\u0001\u0000\u0000\u0000\u00cb\u00cc\u0001\u0000\u0000"+
- "\u0000\u00cc\u00cd\u0001\u0000\u0000\u0000\u00cd\u00ce\u0005.\u0000\u0000"+
- "\u00ce\u00cf\u0005J\u0000\u0000\u00cf\u00d4\u0003\u0010\b\u0000\u00d0"+
- "\u00d1\u0005)\u0000\u0000\u00d1\u00d3\u0003\u0010\b\u0000\u00d2\u00d0"+
- "\u0001\u0000\u0000\u0000\u00d3\u00d6\u0001\u0000\u0000\u0000\u00d4\u00d2"+
- "\u0001\u0000\u0000\u0000\u00d4\u00d5\u0001\u0000\u0000\u0000\u00d5\u00d7"+
- "\u0001\u0000\u0000\u0000\u00d6\u00d4\u0001\u0000\u0000\u0000\u00d7\u00d8"+
- "\u0005K\u0000\u0000\u00d8\u00e2\u0001\u0000\u0000\u0000\u00d9\u00da\u0003"+
- "\u0010\b\u0000\u00da\u00dc\u0005/\u0000\u0000\u00db\u00dd\u00052\u0000"+
- "\u0000\u00dc\u00db\u0001\u0000\u0000\u0000\u00dc\u00dd\u0001\u0000\u0000"+
- "\u0000\u00dd\u00de\u0001\u0000\u0000\u0000\u00de\u00df\u00053\u0000\u0000"+
- "\u00df\u00e2\u0001\u0000\u0000\u0000\u00e0\u00e2\u0003\u000e\u0007\u0000"+
- "\u00e1\u00c4\u0001\u0000\u0000\u0000\u00e1\u00c7\u0001\u0000\u0000\u0000"+
- "\u00e1\u00c8\u0001\u0000\u0000\u0000\u00e1\u00c9\u0001\u0000\u0000\u0000"+
- "\u00e1\u00d9\u0001\u0000\u0000\u0000\u00e1\u00e0\u0001\u0000\u0000\u0000"+
- "\u00e2\u00eb\u0001\u0000\u0000\u0000\u00e3\u00e4\n\u0005\u0000\u0000\u00e4"+
- "\u00e5\u0005$\u0000\u0000\u00e5\u00ea\u0003\n\u0005\u0006\u00e6\u00e7"+
- "\n\u0004\u0000\u0000\u00e7\u00e8\u00055\u0000\u0000\u00e8\u00ea\u0003"+
- "\n\u0005\u0005\u00e9\u00e3\u0001\u0000\u0000\u0000\u00e9\u00e6\u0001\u0000"+
- "\u0000\u0000\u00ea\u00ed\u0001\u0000\u0000\u0000\u00eb\u00e9\u0001\u0000"+
- "\u0000\u0000\u00eb\u00ec\u0001\u0000\u0000\u0000\u00ec\u000b\u0001\u0000"+
- "\u0000\u0000\u00ed\u00eb\u0001\u0000\u0000\u0000\u00ee\u00f0\u0003\u0010"+
- "\b\u0000\u00ef\u00f1\u00052\u0000\u0000\u00f0\u00ef\u0001\u0000\u0000"+
- "\u0000\u00f0\u00f1\u0001\u0000\u0000\u0000\u00f1\u00f2\u0001\u0000\u0000"+
- "\u0000\u00f2\u00f3\u00051\u0000\u0000\u00f3\u00f4\u0003j5\u0000\u00f4"+
- "\u00fd\u0001\u0000\u0000\u0000\u00f5\u00f7\u0003\u0010\b\u0000\u00f6\u00f8"+
- "\u00052\u0000\u0000\u00f7\u00f6\u0001\u0000\u0000\u0000\u00f7\u00f8\u0001"+
- "\u0000\u0000\u0000\u00f8\u00f9\u0001\u0000\u0000\u0000\u00f9\u00fa\u0005"+
- "7\u0000\u0000\u00fa\u00fb\u0003j5\u0000\u00fb\u00fd\u0001\u0000\u0000"+
- "\u0000\u00fc\u00ee\u0001\u0000\u0000\u0000\u00fc\u00f5\u0001\u0000\u0000"+
- "\u0000\u00fd\r\u0001\u0000\u0000\u0000\u00fe\u0101\u0003:\u001d\u0000"+
- "\u00ff\u0100\u0005\'\u0000\u0000\u0100\u0102\u0003\u001e\u000f\u0000\u0101"+
- "\u00ff\u0001\u0000\u0000\u0000\u0101\u0102\u0001\u0000\u0000\u0000\u0102"+
- "\u0103\u0001\u0000\u0000\u0000\u0103\u0104\u0005(\u0000\u0000\u0104\u0105"+
- "\u0003D\"\u0000\u0105\u000f\u0001\u0000\u0000\u0000\u0106\u010c\u0003"+
- "\u0012\t\u0000\u0107\u0108\u0003\u0012\t\u0000\u0108\u0109\u0003l6\u0000"+
- "\u0109\u010a\u0003\u0012\t\u0000\u010a\u010c\u0001\u0000\u0000\u0000\u010b"+
- "\u0106\u0001\u0000\u0000\u0000\u010b\u0107\u0001\u0000\u0000\u0000\u010c"+
- "\u0011\u0001\u0000\u0000\u0000\u010d\u010e\u0006\t\uffff\uffff\u0000\u010e"+
- "\u0112\u0003\u0014\n\u0000\u010f\u0110\u0007\u0000\u0000\u0000\u0110\u0112"+
- "\u0003\u0012\t\u0003\u0111\u010d\u0001\u0000\u0000\u0000\u0111\u010f\u0001"+
- "\u0000\u0000\u0000\u0112\u011b\u0001\u0000\u0000\u0000\u0113\u0114\n\u0002"+
- "\u0000\u0000\u0114\u0115\u0007\u0001\u0000\u0000\u0115\u011a\u0003\u0012"+
- "\t\u0003\u0116\u0117\n\u0001\u0000\u0000\u0117\u0118\u0007\u0000\u0000"+
- "\u0000\u0118\u011a\u0003\u0012\t\u0002\u0119\u0113\u0001\u0000\u0000\u0000"+
- "\u0119\u0116\u0001\u0000\u0000\u0000\u011a\u011d\u0001\u0000\u0000\u0000"+
- "\u011b\u0119\u0001\u0000\u0000\u0000\u011b\u011c\u0001\u0000\u0000\u0000"+
- "\u011c\u0013\u0001\u0000\u0000\u0000\u011d\u011b\u0001\u0000\u0000\u0000"+
- "\u011e\u011f\u0006\n\uffff\uffff\u0000\u011f\u0127\u0003D\"\u0000\u0120"+
- "\u0127\u0003:\u001d\u0000\u0121\u0127\u0003\u0016\u000b\u0000\u0122\u0123"+
- "\u0005J\u0000\u0000\u0123\u0124\u0003\n\u0005\u0000\u0124\u0125\u0005"+
- "K\u0000\u0000\u0125\u0127\u0001\u0000\u0000\u0000\u0126\u011e\u0001\u0000"+
- "\u0000\u0000\u0126\u0120\u0001\u0000\u0000\u0000\u0126\u0121\u0001\u0000"+
- "\u0000\u0000\u0126\u0122\u0001\u0000\u0000\u0000\u0127\u012d\u0001\u0000"+
- "\u0000\u0000\u0128\u0129\n\u0001\u0000\u0000\u0129\u012a\u0005\'\u0000"+
- "\u0000\u012a\u012c\u0003\u001e\u000f\u0000\u012b\u0128\u0001\u0000\u0000"+
- "\u0000\u012c\u012f\u0001\u0000\u0000\u0000\u012d\u012b\u0001\u0000\u0000"+
- "\u0000\u012d\u012e\u0001\u0000\u0000\u0000\u012e\u0015\u0001\u0000\u0000"+
- "\u0000\u012f\u012d\u0001\u0000\u0000\u0000\u0130\u0131\u0003\u0018\f\u0000"+
- "\u0131\u013f\u0005J\u0000\u0000\u0132\u0140\u0005B\u0000\u0000\u0133\u0138"+
- "\u0003\n\u0005\u0000\u0134\u0135\u0005)\u0000\u0000\u0135\u0137\u0003"+
- "\n\u0005\u0000\u0136\u0134\u0001\u0000\u0000\u0000\u0137\u013a\u0001\u0000"+
- "\u0000\u0000\u0138\u0136\u0001\u0000\u0000\u0000\u0138\u0139\u0001\u0000"+
- "\u0000\u0000\u0139\u013d\u0001\u0000\u0000\u0000\u013a\u0138\u0001\u0000"+
- "\u0000\u0000\u013b\u013c\u0005)\u0000\u0000\u013c\u013e\u0003\u001a\r"+
- "\u0000\u013d\u013b\u0001\u0000\u0000\u0000\u013d\u013e\u0001\u0000\u0000"+
- "\u0000\u013e\u0140\u0001\u0000\u0000\u0000\u013f\u0132\u0001\u0000\u0000"+
- "\u0000\u013f\u0133\u0001\u0000\u0000\u0000\u013f\u0140\u0001\u0000\u0000"+
- "\u0000\u0140\u0141\u0001\u0000\u0000\u0000\u0141\u0142\u0005K\u0000\u0000"+
- "\u0142\u0017\u0001\u0000\u0000\u0000\u0143\u0144\u0003H$\u0000\u0144\u0019"+
- "\u0001\u0000\u0000\u0000\u0145\u0146\u0005E\u0000\u0000\u0146\u014b\u0003"+
- "\u001c\u000e\u0000\u0147\u0148\u0005)\u0000\u0000\u0148\u014a\u0003\u001c"+
- "\u000e\u0000\u0149\u0147\u0001\u0000\u0000\u0000\u014a\u014d\u0001\u0000"+
- "\u0000\u0000\u014b\u0149\u0001\u0000\u0000\u0000\u014b\u014c\u0001\u0000"+
- "\u0000\u0000\u014c\u014e\u0001\u0000\u0000\u0000\u014d\u014b\u0001\u0000"+
- "\u0000\u0000\u014e\u014f\u0005F\u0000\u0000\u014f\u001b\u0001\u0000\u0000"+
- "\u0000\u0150\u0151\u0003j5\u0000\u0151\u0152\u0005(\u0000\u0000\u0152"+
- "\u0153\u0003D\"\u0000\u0153\u001d\u0001\u0000\u0000\u0000\u0154\u0155"+
- "\u0003@ \u0000\u0155\u001f\u0001\u0000\u0000\u0000\u0156\u0157\u0005\f"+
- "\u0000\u0000\u0157\u0158\u0003\"\u0011\u0000\u0158!\u0001\u0000\u0000"+
- "\u0000\u0159\u015e\u0003$\u0012\u0000\u015a\u015b\u0005)\u0000\u0000\u015b"+
- "\u015d\u0003$\u0012\u0000\u015c\u015a\u0001\u0000\u0000\u0000\u015d\u0160"+
- "\u0001\u0000\u0000\u0000\u015e\u015c\u0001\u0000\u0000\u0000\u015e\u015f"+
- "\u0001\u0000\u0000\u0000\u015f#\u0001\u0000\u0000\u0000\u0160\u015e\u0001"+
- "\u0000\u0000\u0000\u0161\u0162\u0003:\u001d\u0000\u0162\u0163\u0005&\u0000"+
- "\u0000\u0163\u0165\u0001\u0000\u0000\u0000\u0164\u0161\u0001\u0000\u0000"+
- "\u0000\u0164\u0165\u0001\u0000\u0000\u0000\u0165\u0166\u0001\u0000\u0000"+
- "\u0000\u0166\u0167\u0003\n\u0005\u0000\u0167%\u0001\u0000\u0000\u0000"+
- "\u0168\u0169\u0005\u0006\u0000\u0000\u0169\u016e\u0003(\u0014\u0000\u016a"+
- "\u016b\u0005)\u0000\u0000\u016b\u016d\u0003(\u0014\u0000\u016c\u016a\u0001"+
- "\u0000\u0000\u0000\u016d\u0170\u0001\u0000\u0000\u0000\u016e\u016c\u0001"+
- "\u0000\u0000\u0000\u016e\u016f\u0001\u0000\u0000\u0000\u016f\u0172\u0001"+
- "\u0000\u0000\u0000\u0170\u016e\u0001\u0000\u0000\u0000\u0171\u0173\u0003"+
- ".\u0017\u0000\u0172\u0171\u0001\u0000\u0000\u0000\u0172\u0173\u0001\u0000"+
- "\u0000\u0000\u0173\'\u0001\u0000\u0000\u0000\u0174\u0175\u0003*\u0015"+
- "\u0000\u0175\u0176\u0005(\u0000\u0000\u0176\u0178\u0001\u0000\u0000\u0000"+
- "\u0177\u0174\u0001\u0000\u0000\u0000\u0177\u0178\u0001\u0000\u0000\u0000"+
- "\u0178\u0179\u0001\u0000\u0000\u0000\u0179\u017a\u0003,\u0016\u0000\u017a"+
- ")\u0001\u0000\u0000\u0000\u017b\u017c\u0007\u0002\u0000\u0000\u017c+\u0001"+
- "\u0000\u0000\u0000\u017d\u017e\u0007\u0002\u0000\u0000\u017e-\u0001\u0000"+
- "\u0000\u0000\u017f\u0180\u0005T\u0000\u0000\u0180\u0185\u0005U\u0000\u0000"+
- "\u0181\u0182\u0005)\u0000\u0000\u0182\u0184\u0005U\u0000\u0000\u0183\u0181"+
- "\u0001\u0000\u0000\u0000\u0184\u0187\u0001\u0000\u0000\u0000\u0185\u0183"+
- "\u0001\u0000\u0000\u0000\u0185\u0186\u0001\u0000\u0000\u0000\u0186/\u0001"+
- "\u0000\u0000\u0000\u0187\u0185\u0001\u0000\u0000\u0000\u0188\u0189\u0005"+
- "\u0016\u0000\u0000\u0189\u018e\u0003(\u0014\u0000\u018a\u018b\u0005)\u0000"+
- "\u0000\u018b\u018d\u0003(\u0014\u0000\u018c\u018a\u0001\u0000\u0000\u0000"+
- "\u018d\u0190\u0001\u0000\u0000\u0000\u018e\u018c\u0001\u0000\u0000\u0000"+
- "\u018e\u018f\u0001\u0000\u0000\u0000\u018f\u0192\u0001\u0000\u0000\u0000"+
- "\u0190\u018e\u0001\u0000\u0000\u0000\u0191\u0193\u00036\u001b\u0000\u0192"+
- "\u0191\u0001\u0000\u0000\u0000\u0192\u0193\u0001\u0000\u0000\u0000\u0193"+
- "\u0196\u0001\u0000\u0000\u0000\u0194\u0195\u0005#\u0000\u0000\u0195\u0197"+
- "\u0003\"\u0011\u0000\u0196\u0194\u0001\u0000\u0000\u0000\u0196\u0197\u0001"+
- "\u0000\u0000\u0000\u01971\u0001\u0000\u0000\u0000\u0198\u0199\u0005\u0004"+
- "\u0000\u0000\u0199\u019a\u0003\"\u0011\u0000\u019a3\u0001\u0000\u0000"+
- "\u0000\u019b\u019d\u0005\u000f\u0000\u0000\u019c\u019e\u00036\u001b\u0000"+
- "\u019d\u019c\u0001\u0000\u0000\u0000\u019d\u019e\u0001\u0000\u0000\u0000"+
- "\u019e\u01a1\u0001\u0000\u0000\u0000\u019f\u01a0\u0005#\u0000\u0000\u01a0"+
- "\u01a2\u0003\"\u0011\u0000\u01a1\u019f\u0001\u0000\u0000\u0000\u01a1\u01a2"+
- "\u0001\u0000\u0000\u0000\u01a25\u0001\u0000\u0000\u0000\u01a3\u01a8\u0003"+
- "8\u001c\u0000\u01a4\u01a5\u0005)\u0000\u0000\u01a5\u01a7\u00038\u001c"+
- "\u0000\u01a6\u01a4\u0001\u0000\u0000\u0000\u01a7\u01aa\u0001\u0000\u0000"+
- "\u0000\u01a8\u01a6\u0001\u0000\u0000\u0000\u01a8\u01a9\u0001\u0000\u0000"+
- "\u0000\u01a97\u0001\u0000\u0000\u0000\u01aa\u01a8\u0001\u0000\u0000\u0000"+
- "\u01ab\u01ae\u0003$\u0012\u0000\u01ac\u01ad\u0005\u0010\u0000\u0000\u01ad"+
- "\u01af\u0003\n\u0005\u0000\u01ae\u01ac\u0001\u0000\u0000\u0000\u01ae\u01af"+
- "\u0001\u0000\u0000\u0000\u01af9\u0001\u0000\u0000\u0000\u01b0\u01b5\u0003"+
- "H$\u0000\u01b1\u01b2\u0005+\u0000\u0000\u01b2\u01b4\u0003H$\u0000\u01b3"+
- "\u01b1\u0001\u0000\u0000\u0000\u01b4\u01b7\u0001\u0000\u0000\u0000\u01b5"+
- "\u01b3\u0001\u0000\u0000\u0000\u01b5\u01b6\u0001\u0000\u0000\u0000\u01b6"+
- ";\u0001\u0000\u0000\u0000\u01b7\u01b5\u0001\u0000\u0000\u0000\u01b8\u01bd"+
- "\u0003B!\u0000\u01b9\u01ba\u0005+\u0000\u0000\u01ba\u01bc\u0003B!\u0000"+
- "\u01bb\u01b9\u0001\u0000\u0000\u0000\u01bc\u01bf\u0001\u0000\u0000\u0000"+
- "\u01bd\u01bb\u0001\u0000\u0000\u0000\u01bd\u01be\u0001\u0000\u0000\u0000"+
- "\u01be=\u0001\u0000\u0000\u0000\u01bf\u01bd\u0001\u0000\u0000\u0000\u01c0"+
- "\u01c5\u0003<\u001e\u0000\u01c1\u01c2\u0005)\u0000\u0000\u01c2\u01c4\u0003"+
- "<\u001e\u0000\u01c3\u01c1\u0001\u0000\u0000\u0000\u01c4\u01c7\u0001\u0000"+
- "\u0000\u0000\u01c5\u01c3\u0001\u0000\u0000\u0000\u01c5\u01c6\u0001\u0000"+
- "\u0000\u0000\u01c6?\u0001\u0000\u0000\u0000\u01c7\u01c5\u0001\u0000\u0000"+
- "\u0000\u01c8\u01c9\u0007\u0003\u0000\u0000\u01c9A\u0001\u0000\u0000\u0000"+
- "\u01ca\u01cd\u0005Y\u0000\u0000\u01cb\u01cd\u0003F#\u0000\u01cc\u01ca"+
- "\u0001\u0000\u0000\u0000\u01cc\u01cb\u0001\u0000\u0000\u0000\u01cdC\u0001"+
- "\u0000\u0000\u0000\u01ce\u01f9\u00053\u0000\u0000\u01cf\u01d0\u0003h4"+
- "\u0000\u01d0\u01d1\u0005L\u0000\u0000\u01d1\u01f9\u0001\u0000\u0000\u0000"+
- "\u01d2\u01f9\u0003f3\u0000\u01d3\u01f9\u0003h4\u0000\u01d4\u01f9\u0003"+
- "b1\u0000\u01d5\u01f9\u0003F#\u0000\u01d6\u01f9\u0003j5\u0000\u01d7\u01d8"+
- "\u0005H\u0000\u0000\u01d8\u01dd\u0003d2\u0000\u01d9\u01da\u0005)\u0000"+
- "\u0000\u01da\u01dc\u0003d2\u0000\u01db\u01d9\u0001\u0000\u0000\u0000\u01dc"+
- "\u01df\u0001\u0000\u0000\u0000\u01dd\u01db\u0001\u0000\u0000\u0000\u01dd"+
- "\u01de\u0001\u0000\u0000\u0000\u01de\u01e0\u0001\u0000\u0000\u0000\u01df"+
- "\u01dd\u0001\u0000\u0000\u0000\u01e0\u01e1\u0005I\u0000\u0000\u01e1\u01f9"+
- "\u0001\u0000\u0000\u0000\u01e2\u01e3\u0005H\u0000\u0000\u01e3\u01e8\u0003"+
- "b1\u0000\u01e4\u01e5\u0005)\u0000\u0000\u01e5\u01e7\u0003b1\u0000\u01e6"+
- "\u01e4\u0001\u0000\u0000\u0000\u01e7\u01ea\u0001\u0000\u0000\u0000\u01e8"+
- "\u01e6\u0001\u0000\u0000\u0000\u01e8\u01e9\u0001\u0000\u0000\u0000\u01e9"+
- "\u01eb\u0001\u0000\u0000\u0000\u01ea\u01e8\u0001\u0000\u0000\u0000\u01eb"+
- "\u01ec\u0005I\u0000\u0000\u01ec\u01f9\u0001\u0000\u0000\u0000\u01ed\u01ee"+
- "\u0005H\u0000\u0000\u01ee\u01f3\u0003j5\u0000\u01ef\u01f0\u0005)\u0000"+
- "\u0000\u01f0\u01f2\u0003j5\u0000\u01f1\u01ef\u0001\u0000\u0000\u0000\u01f2"+
- "\u01f5\u0001\u0000\u0000\u0000\u01f3\u01f1\u0001\u0000\u0000\u0000\u01f3"+
- "\u01f4\u0001\u0000\u0000\u0000\u01f4\u01f6\u0001\u0000\u0000\u0000\u01f5"+
- "\u01f3\u0001\u0000\u0000\u0000\u01f6\u01f7\u0005I\u0000\u0000\u01f7\u01f9"+
- "\u0001\u0000\u0000\u0000\u01f8\u01ce\u0001\u0000\u0000\u0000\u01f8\u01cf"+
- "\u0001\u0000\u0000\u0000\u01f8\u01d2\u0001\u0000\u0000\u0000\u01f8\u01d3"+
- "\u0001\u0000\u0000\u0000\u01f8\u01d4\u0001\u0000\u0000\u0000\u01f8\u01d5"+
- "\u0001\u0000\u0000\u0000\u01f8\u01d6\u0001\u0000\u0000\u0000\u01f8\u01d7"+
- "\u0001\u0000\u0000\u0000\u01f8\u01e2\u0001\u0000\u0000\u0000\u01f8\u01ed"+
- "\u0001\u0000\u0000\u0000\u01f9E\u0001\u0000\u0000\u0000\u01fa\u01fd\u0005"+
- "6\u0000\u0000\u01fb\u01fd\u0005G\u0000\u0000\u01fc\u01fa\u0001\u0000\u0000"+
- "\u0000\u01fc\u01fb\u0001\u0000\u0000\u0000\u01fdG\u0001\u0000\u0000\u0000"+
- "\u01fe\u0201\u0003@ \u0000\u01ff\u0201\u0003F#\u0000\u0200\u01fe\u0001"+
- "\u0000\u0000\u0000\u0200\u01ff\u0001\u0000\u0000\u0000\u0201I\u0001\u0000"+
- "\u0000\u0000\u0202\u0203\u0005\t\u0000\u0000\u0203\u0204\u0005!\u0000"+
- "\u0000\u0204K\u0001\u0000\u0000\u0000\u0205\u0206\u0005\u000e\u0000\u0000"+
- "\u0206\u020b\u0003N\'\u0000\u0207\u0208\u0005)\u0000\u0000\u0208\u020a"+
- "\u0003N\'\u0000\u0209\u0207\u0001\u0000\u0000\u0000\u020a\u020d\u0001"+
- "\u0000\u0000\u0000\u020b\u0209\u0001\u0000\u0000\u0000\u020b\u020c\u0001"+
- "\u0000\u0000\u0000\u020cM\u0001\u0000\u0000\u0000\u020d\u020b\u0001\u0000"+
- "\u0000\u0000\u020e\u0210\u0003\n\u0005\u0000\u020f\u0211\u0007\u0004\u0000"+
- "\u0000\u0210\u020f\u0001\u0000\u0000\u0000\u0210\u0211\u0001\u0000\u0000"+
- "\u0000\u0211\u0214\u0001\u0000\u0000\u0000\u0212\u0213\u00054\u0000\u0000"+
- "\u0213\u0215\u0007\u0005\u0000\u0000\u0214\u0212\u0001\u0000\u0000\u0000"+
- "\u0214\u0215\u0001\u0000\u0000\u0000\u0215O\u0001\u0000\u0000\u0000\u0216"+
- "\u0217\u0005\b\u0000\u0000\u0217\u0218\u0003>\u001f\u0000\u0218Q\u0001"+
- "\u0000\u0000\u0000\u0219\u021a\u0005\u0002\u0000\u0000\u021a\u021b\u0003"+
- ">\u001f\u0000\u021bS\u0001\u0000\u0000\u0000\u021c\u021d\u0005\u000b\u0000"+
- "\u0000\u021d\u0222\u0003V+\u0000\u021e\u021f\u0005)\u0000\u0000\u021f"+
- "\u0221\u0003V+\u0000\u0220\u021e\u0001\u0000\u0000\u0000\u0221\u0224\u0001"+
- "\u0000\u0000\u0000\u0222\u0220\u0001\u0000\u0000\u0000\u0222\u0223\u0001"+
- "\u0000\u0000\u0000\u0223U\u0001\u0000\u0000\u0000\u0224\u0222\u0001\u0000"+
- "\u0000\u0000\u0225\u0226\u0003<\u001e\u0000\u0226\u0227\u0005]\u0000\u0000"+
- "\u0227\u0228\u0003<\u001e\u0000\u0228W\u0001\u0000\u0000\u0000\u0229\u022a"+
- "\u0005\u0001\u0000\u0000\u022a\u022b\u0003\u0014\n\u0000\u022b\u022d\u0003"+
- "j5\u0000\u022c\u022e\u0003^/\u0000\u022d\u022c\u0001\u0000\u0000\u0000"+
- "\u022d\u022e\u0001\u0000\u0000\u0000\u022eY\u0001\u0000\u0000\u0000\u022f"+
- "\u0230\u0005\u0007\u0000\u0000\u0230\u0231\u0003\u0014\n\u0000\u0231\u0232"+
- "\u0003j5\u0000\u0232[\u0001\u0000\u0000\u0000\u0233\u0234\u0005\n\u0000"+
- "\u0000\u0234\u0235\u0003:\u001d\u0000\u0235]\u0001\u0000\u0000\u0000\u0236"+
- "\u023b\u0003`0\u0000\u0237\u0238\u0005)\u0000\u0000\u0238\u023a\u0003"+
- "`0\u0000\u0239\u0237\u0001\u0000\u0000\u0000\u023a\u023d\u0001\u0000\u0000"+
- "\u0000\u023b\u0239\u0001\u0000\u0000\u0000\u023b\u023c\u0001\u0000\u0000"+
- "\u0000\u023c_\u0001\u0000\u0000\u0000\u023d\u023b\u0001\u0000\u0000\u0000"+
- "\u023e\u023f\u0003@ \u0000\u023f\u0240\u0005&\u0000\u0000\u0240\u0241"+
- "\u0003D\"\u0000\u0241a\u0001\u0000\u0000\u0000\u0242\u0243\u0007\u0006"+
- "\u0000\u0000\u0243c\u0001\u0000\u0000\u0000\u0244\u0247\u0003f3\u0000"+
- "\u0245\u0247\u0003h4\u0000\u0246\u0244\u0001\u0000\u0000\u0000\u0246\u0245"+
- "\u0001\u0000\u0000\u0000\u0247e\u0001\u0000\u0000\u0000\u0248\u024a\u0007"+
- "\u0000\u0000\u0000\u0249\u0248\u0001\u0000\u0000\u0000\u0249\u024a\u0001"+
- "\u0000\u0000\u0000\u024a\u024b\u0001\u0000\u0000\u0000\u024b\u024c\u0005"+
- "\"\u0000\u0000\u024cg\u0001\u0000\u0000\u0000\u024d\u024f\u0007\u0000"+
- "\u0000\u0000\u024e\u024d\u0001\u0000\u0000\u0000\u024e\u024f\u0001\u0000"+
- "\u0000\u0000\u024f\u0250\u0001\u0000\u0000\u0000\u0250\u0251\u0005!\u0000"+
- "\u0000\u0251i\u0001\u0000\u0000\u0000\u0252\u0253\u0005 \u0000\u0000\u0253"+
- "k\u0001\u0000\u0000\u0000\u0254\u0255\u0007\u0007\u0000\u0000\u0255m\u0001"+
- "\u0000\u0000\u0000\u0256\u0257\u0005\u0005\u0000\u0000\u0257\u0258\u0003"+
- "p8\u0000\u0258o\u0001\u0000\u0000\u0000\u0259\u025a\u0005H\u0000\u0000"+
- "\u025a\u025b\u0003\u0002\u0001\u0000\u025b\u025c\u0005I\u0000\u0000\u025c"+
- "q\u0001\u0000\u0000\u0000\u025d\u025e\u0005\r\u0000\u0000\u025e\u025f"+
- "\u0005m\u0000\u0000\u025fs\u0001\u0000\u0000\u0000\u0260\u0261\u0005\u0003"+
- "\u0000\u0000\u0261\u0264\u0005c\u0000\u0000\u0262\u0263\u0005a\u0000\u0000"+
- "\u0263\u0265\u0003<\u001e\u0000\u0264\u0262\u0001\u0000\u0000\u0000\u0264"+
- "\u0265\u0001\u0000\u0000\u0000\u0265\u026f\u0001\u0000\u0000\u0000\u0266"+
- "\u0267\u0005b\u0000\u0000\u0267\u026c\u0003v;\u0000\u0268\u0269\u0005"+
- ")\u0000\u0000\u0269\u026b\u0003v;\u0000\u026a\u0268\u0001\u0000\u0000"+
- "\u0000\u026b\u026e\u0001\u0000\u0000\u0000\u026c\u026a\u0001\u0000\u0000"+
- "\u0000\u026c\u026d\u0001\u0000\u0000\u0000\u026d\u0270\u0001\u0000\u0000"+
- "\u0000\u026e\u026c\u0001\u0000\u0000\u0000\u026f\u0266\u0001\u0000\u0000"+
- "\u0000\u026f\u0270\u0001\u0000\u0000\u0000\u0270u\u0001\u0000\u0000\u0000"+
- "\u0271\u0272\u0003<\u001e\u0000\u0272\u0273\u0005&\u0000\u0000\u0273\u0275"+
- "\u0001\u0000\u0000\u0000\u0274\u0271\u0001\u0000\u0000\u0000\u0274\u0275"+
- "\u0001\u0000\u0000\u0000\u0275\u0276\u0001\u0000\u0000\u0000\u0276\u0277"+
- "\u0003<\u001e\u0000\u0277w\u0001\u0000\u0000\u0000\u0278\u0279\u0005\u0015"+
- "\u0000\u0000\u0279\u027a\u0003(\u0014\u0000\u027a\u027b\u0005a\u0000\u0000"+
- "\u027b\u027c\u0003>\u001f\u0000\u027cy\u0001\u0000\u0000\u0000\u027d\u027e"+
- "\u0005\u0013\u0000\u0000\u027e\u0281\u00036\u001b\u0000\u027f\u0280\u0005"+
- "#\u0000\u0000\u0280\u0282\u0003\"\u0011\u0000\u0281\u027f\u0001\u0000"+
- "\u0000\u0000\u0281\u0282\u0001\u0000\u0000\u0000\u0282{\u0001\u0000\u0000"+
- "\u0000\u0283\u0284\u0007\b\u0000\u0000\u0284\u0285\u0005{\u0000\u0000"+
- "\u0285\u0286\u0003~?\u0000\u0286\u0287\u0003\u0080@\u0000\u0287}\u0001"+
- "\u0000\u0000\u0000\u0288\u0289\u0003(\u0014\u0000\u0289\u007f\u0001\u0000"+
- "\u0000\u0000\u028a\u028b\u0005a\u0000\u0000\u028b\u0290\u0003\u0082A\u0000"+
- "\u028c\u028d\u0005)\u0000\u0000\u028d\u028f\u0003\u0082A\u0000\u028e\u028c"+
- "\u0001\u0000\u0000\u0000\u028f\u0292\u0001\u0000\u0000\u0000\u0290\u028e"+
- "\u0001\u0000\u0000\u0000\u0290\u0291\u0001\u0000\u0000\u0000\u0291\u0081"+
- "\u0001\u0000\u0000\u0000\u0292\u0290\u0001\u0000\u0000\u0000\u0293\u0294"+
- "\u0003\u0010\b\u0000\u0294\u0083\u0001\u0000\u0000\u0000\u0295\u0296\u0005"+
- "\u0012\u0000\u0000\u0296\u0299\u0003:\u001d\u0000\u0297\u0298\u0005a\u0000"+
- "\u0000\u0298\u029a\u0003:\u001d\u0000\u0299\u0297\u0001\u0000\u0000\u0000"+
- "\u0299\u029a\u0001\u0000\u0000\u0000\u029a\u02a0\u0001\u0000\u0000\u0000"+
- "\u029b\u029c\u0005]\u0000\u0000\u029c\u029d\u0003:\u001d\u0000\u029d\u029e"+
- "\u0005)\u0000\u0000\u029e\u029f\u0003:\u001d\u0000\u029f\u02a1\u0001\u0000"+
- "\u0000\u0000\u02a0\u029b\u0001\u0000\u0000\u0000\u02a0\u02a1\u0001\u0000"+
- "\u0000\u0000\u02a1\u0085\u0001\u0000\u0000\u0000\u02a2\u02a3\u0005\u0014"+
- "\u0000\u0000\u02a3\u02a4\u0003>\u001f\u0000\u02a4\u0087\u0001\u0000\u0000"+
- "\u0000\u02a5\u02a6\u0005\u001a\u0000\u0000\u02a6\u02a7\u0003\u008aE\u0000"+
- "\u02a7\u0089\u0001\u0000\u0000\u0000\u02a8\u02aa\u0003\u008cF\u0000\u02a9"+
- "\u02a8\u0001\u0000\u0000\u0000\u02aa\u02ab\u0001\u0000\u0000\u0000\u02ab"+
- "\u02a9\u0001\u0000\u0000\u0000\u02ab\u02ac\u0001\u0000\u0000\u0000\u02ac"+
- "\u008b\u0001\u0000\u0000\u0000\u02ad\u02ae\u0005J\u0000\u0000\u02ae\u02af"+
- "\u0003\u008eG\u0000\u02af\u02b0\u0005K\u0000\u0000\u02b0\u008d\u0001\u0000"+
- "\u0000\u0000\u02b1\u02b2\u0006G\uffff\uffff\u0000\u02b2\u02b3\u0003\u0090"+
- "H\u0000\u02b3\u02b9\u0001\u0000\u0000\u0000\u02b4\u02b5\n\u0001\u0000"+
- "\u0000\u02b5\u02b6\u0005\u001f\u0000\u0000\u02b6\u02b8\u0003\u0090H\u0000"+
- "\u02b7\u02b4\u0001\u0000\u0000\u0000\u02b8\u02bb\u0001\u0000\u0000\u0000"+
- "\u02b9\u02b7\u0001\u0000\u0000\u0000\u02b9\u02ba\u0001\u0000\u0000\u0000"+
- "\u02ba\u008f\u0001\u0000\u0000\u0000\u02bb\u02b9\u0001\u0000\u0000\u0000"+
- "\u02bc\u02c0\u0003\b\u0004\u0000\u02bd\u02c0\u0003L&\u0000\u02be\u02c0"+
- "\u0003J%\u0000\u02bf\u02bc\u0001\u0000\u0000\u0000\u02bf\u02bd\u0001\u0000"+
- "\u0000\u0000\u02bf\u02be\u0001\u0000\u0000\u0000\u02c0\u0091\u0001\u0000"+
- "\u0000\u0000B\u009d\u00a6\u00bf\u00cb\u00d4\u00dc\u00e1\u00e9\u00eb\u00f0"+
- "\u00f7\u00fc\u0101\u010b\u0111\u0119\u011b\u0126\u012d\u0138\u013d\u013f"+
- "\u014b\u015e\u0164\u016e\u0172\u0177\u0185\u018e\u0192\u0196\u019d\u01a1"+
- "\u01a8\u01ae\u01b5\u01bd\u01c5\u01cc\u01dd\u01e8\u01f3\u01f8\u01fc\u0200"+
- "\u020b\u0210\u0214\u0222\u022d\u023b\u0246\u0249\u024e\u0264\u026c\u026f"+
- "\u0274\u0281\u0290\u0299\u02a0\u02ab\u02b9\u02bf";
+ "\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007"+
+ "\u0001\u0007\u0005\u0007\u00cd\b\u0007\n\u0007\f\u0007\u00d0\t\u0007\u0001"+
+ "\b\u0001\b\u0001\b\u0003\b\u00d5\b\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001"+
+ "\t\u0001\t\u0005\t\u00dd\b\t\n\t\f\t\u00e0\t\t\u0001\t\u0003\t\u00e3\b"+
+ "\t\u0001\n\u0001\n\u0001\n\u0003\n\u00e8\b\n\u0001\n\u0001\n\u0001\u000b"+
+ "\u0001\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0005\r\u00f4"+
+ "\b\r\n\r\f\r\u00f7\t\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+
+ "\u0005\u000e\u00fd\b\u000e\n\u000e\f\u000e\u0100\t\u000e\u0001\u000e\u0003"+
+ "\u000e\u0103\b\u000e\u0001\u000e\u0001\u000e\u0003\u000e\u0107\b\u000e"+
+ "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0003\u0010"+
+ "\u010e\b\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u0112\b\u0010\u0001"+
+ "\u0011\u0001\u0011\u0001\u0011\u0005\u0011\u0117\b\u0011\n\u0011\f\u0011"+
+ "\u011a\t\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u011f\b"+
+ "\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0005\u0013\u0124\b\u0013\n"+
+ "\u0013\f\u0013\u0127\t\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0005"+
+ "\u0014\u012c\b\u0014\n\u0014\f\u0014\u012f\t\u0014\u0001\u0015\u0001\u0015"+
+ "\u0001\u0015\u0005\u0015\u0134\b\u0015\n\u0015\f\u0015\u0137\t\u0015\u0001"+
+ "\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0003\u0017\u013d\b\u0017\u0001"+
+ "\u0018\u0001\u0018\u0003\u0018\u0141\b\u0018\u0001\u0019\u0001\u0019\u0003"+
+ "\u0019\u0145\b\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001"+
+ "\u001b\u0001\u001b\u0001\u001b\u0005\u001b\u014e\b\u001b\n\u001b\f\u001b"+
+ "\u0151\t\u001b\u0001\u001c\u0001\u001c\u0003\u001c\u0155\b\u001c\u0001"+
+ "\u001c\u0001\u001c\u0003\u001c\u0159\b\u001c\u0001\u001d\u0001\u001d\u0001"+
+ "\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001"+
+ "\u001f\u0001\u001f\u0005\u001f\u0165\b\u001f\n\u001f\f\u001f\u0168\t\u001f"+
+ "\u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001!\u0001!\u0003!\u0172"+
+ "\b!\u0001\"\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001$\u0001"+
+ "$\u0001$\u0005$\u017e\b$\n$\f$\u0181\t$\u0001%\u0001%\u0001%\u0001%\u0001"+
+ "&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001"+
+ ")\u0001)\u0001)\u0001)\u0003)\u0195\b)\u0001)\u0001)\u0001)\u0001)\u0005"+
+ ")\u019b\b)\n)\f)\u019e\t)\u0003)\u01a0\b)\u0001*\u0001*\u0001*\u0003*"+
+ "\u01a5\b*\u0001*\u0001*\u0001+\u0001+\u0001+\u0001+\u0001+\u0001,\u0001"+
+ ",\u0001,\u0001,\u0003,\u01b2\b,\u0001-\u0001-\u0001-\u0001-\u0003-\u01b8"+
+ "\b-\u0001-\u0001-\u0001-\u0001-\u0001-\u0003-\u01bf\b-\u0001.\u0001.\u0001"+
+ ".\u0001/\u0001/\u0001/\u00010\u00040\u01c8\b0\u000b0\f0\u01c9\u00011\u0001"+
+ "1\u00011\u00011\u00012\u00012\u00012\u00012\u00012\u00012\u00052\u01d6"+
+ "\b2\n2\f2\u01d9\t2\u00013\u00013\u00013\u00033\u01de\b3\u00014\u00014"+
+ "\u00014\u00014\u00014\u00014\u00014\u00034\u01e7\b4\u00014\u00014\u0001"+
+ "4\u00014\u00014\u00054\u01ee\b4\n4\f4\u01f1\t4\u00014\u00014\u00014\u0001"+
+ "4\u00014\u00034\u01f8\b4\u00014\u00014\u00014\u00034\u01fd\b4\u00014\u0001"+
+ "4\u00014\u00014\u00014\u00014\u00054\u0205\b4\n4\f4\u0208\t4\u00015\u0001"+
+ "5\u00035\u020c\b5\u00015\u00015\u00015\u00015\u00015\u00035\u0213\b5\u0001"+
+ "5\u00015\u00015\u00035\u0218\b5\u00016\u00016\u00016\u00036\u021d\b6\u0001"+
+ "6\u00016\u00016\u00017\u00017\u00017\u00017\u00017\u00037\u0227\b7\u0001"+
+ "8\u00018\u00018\u00018\u00038\u022d\b8\u00018\u00018\u00018\u00018\u0001"+
+ "8\u00018\u00058\u0235\b8\n8\f8\u0238\t8\u00019\u00019\u00019\u00019\u0001"+
+ "9\u00019\u00019\u00019\u00039\u0242\b9\u00019\u00019\u00019\u00059\u0247"+
+ "\b9\n9\f9\u024a\t9\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0005:\u0252"+
+ "\b:\n:\f:\u0255\t:\u0001:\u0001:\u0003:\u0259\b:\u0003:\u025b\b:\u0001"+
+ ":\u0001:\u0001;\u0001;\u0001<\u0001<\u0001<\u0001<\u0005<\u0265\b<\n<"+
+ "\f<\u0268\t<\u0001<\u0001<\u0001=\u0001=\u0001=\u0001=\u0001>\u0001>\u0001"+
+ ">\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+
+ ">\u0005>\u027d\b>\n>\f>\u0280\t>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+
+ ">\u0005>\u0288\b>\n>\f>\u028b\t>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+
+ ">\u0005>\u0293\b>\n>\f>\u0296\t>\u0001>\u0001>\u0003>\u029a\b>\u0001?"+
+ "\u0001?\u0001@\u0001@\u0003@\u02a0\b@\u0001A\u0003A\u02a3\bA\u0001A\u0001"+
+ "A\u0001B\u0003B\u02a8\bB\u0001B\u0001B\u0001C\u0001C\u0001D\u0001D\u0001"+
+ "E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001G\u0001G\u0001G\u0001"+
+ "G\u0005G\u02bb\bG\nG\fG\u02be\tG\u0001H\u0001H\u0001H\u0000\u0005\u0002"+
+ "dhprI\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018"+
+ "\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080"+
+ "\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0000\t\u0002\u00003"+
+ "3ee\u0001\u0000_`\u0002\u000088==\u0002\u0000@@CC\u0001\u0000ST\u0001"+
+ "\u0000UW\u0002\u0000??KK\u0002\u0000LLNR\u0002\u0000\u0012\u0012\u0014"+
+ "\u0015\u02dd\u0000\u0092\u0001\u0000\u0000\u0000\u0002\u0095\u0001\u0000"+
+ "\u0000\u0000\u0004\u00a6\u0001\u0000\u0000\u0000\u0006\u00bf\u0001\u0000"+
+ "\u0000\u0000\b\u00c1\u0001\u0000\u0000\u0000\n\u00c4\u0001\u0000\u0000"+
+ "\u0000\f\u00c6\u0001\u0000\u0000\u0000\u000e\u00c9\u0001\u0000\u0000\u0000"+
+ "\u0010\u00d4\u0001\u0000\u0000\u0000\u0012\u00d8\u0001\u0000\u0000\u0000"+
+ "\u0014\u00e7\u0001\u0000\u0000\u0000\u0016\u00eb\u0001\u0000\u0000\u0000"+
+ "\u0018\u00ed\u0001\u0000\u0000\u0000\u001a\u00ef\u0001\u0000\u0000\u0000"+
+ "\u001c\u00f8\u0001\u0000\u0000\u0000\u001e\u0108\u0001\u0000\u0000\u0000"+
+ " \u010b\u0001\u0000\u0000\u0000\"\u0113\u0001\u0000\u0000\u0000$\u011b"+
+ "\u0001\u0000\u0000\u0000&\u0120\u0001\u0000\u0000\u0000(\u0128\u0001\u0000"+
+ "\u0000\u0000*\u0130\u0001\u0000\u0000\u0000,\u0138\u0001\u0000\u0000\u0000"+
+ ".\u013c\u0001\u0000\u0000\u00000\u0140\u0001\u0000\u0000\u00002\u0144"+
+ "\u0001\u0000\u0000\u00004\u0146\u0001\u0000\u0000\u00006\u0149\u0001\u0000"+
+ "\u0000\u00008\u0152\u0001\u0000\u0000\u0000:\u015a\u0001\u0000\u0000\u0000"+
+ "<\u015d\u0001\u0000\u0000\u0000>\u0160\u0001\u0000\u0000\u0000@\u0169"+
+ "\u0001\u0000\u0000\u0000B\u016d\u0001\u0000\u0000\u0000D\u0173\u0001\u0000"+
+ "\u0000\u0000F\u0177\u0001\u0000\u0000\u0000H\u017a\u0001\u0000\u0000\u0000"+
+ "J\u0182\u0001\u0000\u0000\u0000L\u0186\u0001\u0000\u0000\u0000N\u0189"+
+ "\u0001\u0000\u0000\u0000P\u018d\u0001\u0000\u0000\u0000R\u0190\u0001\u0000"+
+ "\u0000\u0000T\u01a4\u0001\u0000\u0000\u0000V\u01a8\u0001\u0000\u0000\u0000"+
+ "X\u01ad\u0001\u0000\u0000\u0000Z\u01b3\u0001\u0000\u0000\u0000\\\u01c0"+
+ "\u0001\u0000\u0000\u0000^\u01c3\u0001\u0000\u0000\u0000`\u01c7\u0001\u0000"+
+ "\u0000\u0000b\u01cb\u0001\u0000\u0000\u0000d\u01cf\u0001\u0000\u0000\u0000"+
+ "f\u01dd\u0001\u0000\u0000\u0000h\u01fc\u0001\u0000\u0000\u0000j\u0217"+
+ "\u0001\u0000\u0000\u0000l\u0219\u0001\u0000\u0000\u0000n\u0226\u0001\u0000"+
+ "\u0000\u0000p\u022c\u0001\u0000\u0000\u0000r\u0241\u0001\u0000\u0000\u0000"+
+ "t\u024b\u0001\u0000\u0000\u0000v\u025e\u0001\u0000\u0000\u0000x\u0260"+
+ "\u0001\u0000\u0000\u0000z\u026b\u0001\u0000\u0000\u0000|\u0299\u0001\u0000"+
+ "\u0000\u0000~\u029b\u0001\u0000\u0000\u0000\u0080\u029f\u0001\u0000\u0000"+
+ "\u0000\u0082\u02a2\u0001\u0000\u0000\u0000\u0084\u02a7\u0001\u0000\u0000"+
+ "\u0000\u0086\u02ab\u0001\u0000\u0000\u0000\u0088\u02ad\u0001\u0000\u0000"+
+ "\u0000\u008a\u02af\u0001\u0000\u0000\u0000\u008c\u02b4\u0001\u0000\u0000"+
+ "\u0000\u008e\u02b6\u0001\u0000\u0000\u0000\u0090\u02bf\u0001\u0000\u0000"+
+ "\u0000\u0092\u0093\u0003\u0002\u0001\u0000\u0093\u0094\u0005\u0000\u0000"+
+ "\u0001\u0094\u0001\u0001\u0000\u0000\u0000\u0095\u0096\u0006\u0001\uffff"+
+ "\uffff\u0000\u0096\u0097\u0003\u0004\u0002\u0000\u0097\u009d\u0001\u0000"+
+ "\u0000\u0000\u0098\u0099\n\u0001\u0000\u0000\u0099\u009a\u00052\u0000"+
+ "\u0000\u009a\u009c\u0003\u0006\u0003\u0000\u009b\u0098\u0001\u0000\u0000"+
+ "\u0000\u009c\u009f\u0001\u0000\u0000\u0000\u009d\u009b\u0001\u0000\u0000"+
+ "\u0000\u009d\u009e\u0001\u0000\u0000\u0000\u009e\u0003\u0001\u0000\u0000"+
+ "\u0000\u009f\u009d\u0001\u0000\u0000\u0000\u00a0\u00a7\u0003L&\u0000\u00a1"+
+ "\u00a7\u0003\u0012\t\u0000\u00a2\u00a7\u0003\f\u0006\u0000\u00a3\u00a7"+
+ "\u0003P(\u0000\u00a4\u00a5\u0004\u0002\u0001\u0000\u00a5\u00a7\u0003\u001c"+
+ "\u000e\u0000\u00a6\u00a0\u0001\u0000\u0000\u0000\u00a6\u00a1\u0001\u0000"+
+ "\u0000\u0000\u00a6\u00a2\u0001\u0000\u0000\u0000\u00a6\u00a3\u0001\u0000"+
+ "\u0000\u0000\u00a6\u00a4\u0001\u0000\u0000\u0000\u00a7\u0005\u0001\u0000"+
+ "\u0000\u0000\u00a8\u00c0\u0003\u001e\u000f\u0000\u00a9\u00c0\u0003\b\u0004"+
+ "\u0000\u00aa\u00c0\u0003:\u001d\u0000\u00ab\u00c0\u00034\u001a\u0000\u00ac"+
+ "\u00c0\u0003 \u0010\u0000\u00ad\u00c0\u00036\u001b\u0000\u00ae\u00c0\u0003"+
+ "<\u001e\u0000\u00af\u00c0\u0003>\u001f\u0000\u00b0\u00c0\u0003B!\u0000"+
+ "\u00b1\u00c0\u0003D\"\u0000\u00b2\u00c0\u0003R)\u0000\u00b3\u00c0\u0003"+
+ "F#\u0000\u00b4\u00c0\u0003\u008aE\u0000\u00b5\u00b6\u0004\u0003\u0002"+
+ "\u0000\u00b6\u00c0\u0003X,\u0000\u00b7\u00b8\u0004\u0003\u0003\u0000\u00b8"+
+ "\u00c0\u0003V+\u0000\u00b9\u00ba\u0004\u0003\u0004\u0000\u00ba\u00c0\u0003"+
+ "Z-\u0000\u00bb\u00bc\u0004\u0003\u0005\u0000\u00bc\u00c0\u0003\\.\u0000"+
+ "\u00bd\u00be\u0004\u0003\u0006\u0000\u00be\u00c0\u0003^/\u0000\u00bf\u00a8"+
+ "\u0001\u0000\u0000\u0000\u00bf\u00a9\u0001\u0000\u0000\u0000\u00bf\u00aa"+
+ "\u0001\u0000\u0000\u0000\u00bf\u00ab\u0001\u0000\u0000\u0000\u00bf\u00ac"+
+ "\u0001\u0000\u0000\u0000\u00bf\u00ad\u0001\u0000\u0000\u0000\u00bf\u00ae"+
+ "\u0001\u0000\u0000\u0000\u00bf\u00af\u0001\u0000\u0000\u0000\u00bf\u00b0"+
+ "\u0001\u0000\u0000\u0000\u00bf\u00b1\u0001\u0000\u0000\u0000\u00bf\u00b2"+
+ "\u0001\u0000\u0000\u0000\u00bf\u00b3\u0001\u0000\u0000\u0000\u00bf\u00b4"+
+ "\u0001\u0000\u0000\u0000\u00bf\u00b5\u0001\u0000\u0000\u0000\u00bf\u00b7"+
+ "\u0001\u0000\u0000\u0000\u00bf\u00b9\u0001\u0000\u0000\u0000\u00bf\u00bb"+
+ "\u0001\u0000\u0000\u0000\u00bf\u00bd\u0001\u0000\u0000\u0000\u00c0\u0007"+
+ "\u0001\u0000\u0000\u0000\u00c1\u00c2\u0005\u000e\u0000\u0000\u00c2\u00c3"+
+ "\u0003h4\u0000\u00c3\t\u0001\u0000\u0000\u0000\u00c4\u00c5\u0003,\u0016"+
+ "\u0000\u00c5\u000b\u0001\u0000\u0000\u0000\u00c6\u00c7\u0005\u000b\u0000"+
+ "\u0000\u00c7\u00c8\u0003\u000e\u0007\u0000\u00c8\r\u0001\u0000\u0000\u0000"+
+ "\u00c9\u00ce\u0003\u0010\b\u0000\u00ca\u00cb\u0005<\u0000\u0000\u00cb"+
+ "\u00cd\u0003\u0010\b\u0000\u00cc\u00ca\u0001\u0000\u0000\u0000\u00cd\u00d0"+
+ "\u0001\u0000\u0000\u0000\u00ce\u00cc\u0001\u0000\u0000\u0000\u00ce\u00cf"+
+ "\u0001\u0000\u0000\u0000\u00cf\u000f\u0001\u0000\u0000\u0000\u00d0\u00ce"+
+ "\u0001\u0000\u0000\u0000\u00d1\u00d2\u0003&\u0013\u0000\u00d2\u00d3\u0005"+
+ "9\u0000\u0000\u00d3\u00d5\u0001\u0000\u0000\u0000\u00d4\u00d1\u0001\u0000"+
+ "\u0000\u0000\u00d4\u00d5\u0001\u0000\u0000\u0000\u00d5\u00d6\u0001\u0000"+
+ "\u0000\u0000\u00d6\u00d7\u0003h4\u0000\u00d7\u0011\u0001\u0000\u0000\u0000"+
+ "\u00d8\u00d9\u0005\u0010\u0000\u0000\u00d9\u00de\u0003\u0014\n\u0000\u00da"+
+ "\u00db\u0005<\u0000\u0000\u00db\u00dd\u0003\u0014\n\u0000\u00dc\u00da"+
+ "\u0001\u0000\u0000\u0000\u00dd\u00e0\u0001\u0000\u0000\u0000\u00de\u00dc"+
+ "\u0001\u0000\u0000\u0000\u00de\u00df\u0001\u0000\u0000\u0000\u00df\u00e2"+
+ "\u0001\u0000\u0000\u0000\u00e0\u00de\u0001\u0000\u0000\u0000\u00e1\u00e3"+
+ "\u0003\u001a\r\u0000\u00e2\u00e1\u0001\u0000\u0000\u0000\u00e2\u00e3\u0001"+
+ "\u0000\u0000\u0000\u00e3\u0013\u0001\u0000\u0000\u0000\u00e4\u00e5\u0003"+
+ "\u0016\u000b\u0000\u00e5\u00e6\u0005;\u0000\u0000\u00e6\u00e8\u0001\u0000"+
+ "\u0000\u0000\u00e7\u00e4\u0001\u0000\u0000\u0000\u00e7\u00e8\u0001\u0000"+
+ "\u0000\u0000\u00e8\u00e9\u0001\u0000\u0000\u0000\u00e9\u00ea\u0003\u0018"+
+ "\f\u0000\u00ea\u0015\u0001\u0000\u0000\u0000\u00eb\u00ec\u0007\u0000\u0000"+
+ "\u0000\u00ec\u0017\u0001\u0000\u0000\u0000\u00ed\u00ee\u0007\u0000\u0000"+
+ "\u0000\u00ee\u0019\u0001\u0000\u0000\u0000\u00ef\u00f0\u0005d\u0000\u0000"+
+ "\u00f0\u00f5\u0005e\u0000\u0000\u00f1\u00f2\u0005<\u0000\u0000\u00f2\u00f4"+
+ "\u0005e\u0000\u0000\u00f3\u00f1\u0001\u0000\u0000\u0000\u00f4\u00f7\u0001"+
+ "\u0000\u0000\u0000\u00f5\u00f3\u0001\u0000\u0000\u0000\u00f5\u00f6\u0001"+
+ "\u0000\u0000\u0000\u00f6\u001b\u0001\u0000\u0000\u0000\u00f7\u00f5\u0001"+
+ "\u0000\u0000\u0000\u00f8\u00f9\u0005\u0017\u0000\u0000\u00f9\u00fe\u0003"+
+ "\u0014\n\u0000\u00fa\u00fb\u0005<\u0000\u0000\u00fb\u00fd\u0003\u0014"+
+ "\n\u0000\u00fc\u00fa\u0001\u0000\u0000\u0000\u00fd\u0100\u0001\u0000\u0000"+
+ "\u0000\u00fe\u00fc\u0001\u0000\u0000\u0000\u00fe\u00ff\u0001\u0000\u0000"+
+ "\u0000\u00ff\u0102\u0001\u0000\u0000\u0000\u0100\u00fe\u0001\u0000\u0000"+
+ "\u0000\u0101\u0103\u0003\"\u0011\u0000\u0102\u0101\u0001\u0000\u0000\u0000"+
+ "\u0102\u0103\u0001\u0000\u0000\u0000\u0103\u0106\u0001\u0000\u0000\u0000"+
+ "\u0104\u0105\u00056\u0000\u0000\u0105\u0107\u0003\u000e\u0007\u0000\u0106"+
+ "\u0104\u0001\u0000\u0000\u0000\u0106\u0107\u0001\u0000\u0000\u0000\u0107"+
+ "\u001d\u0001\u0000\u0000\u0000\u0108\u0109\u0005\b\u0000\u0000\u0109\u010a"+
+ "\u0003\u000e\u0007\u0000\u010a\u001f\u0001\u0000\u0000\u0000\u010b\u010d"+
+ "\u0005\r\u0000\u0000\u010c\u010e\u0003\"\u0011\u0000\u010d\u010c\u0001"+
+ "\u0000\u0000\u0000\u010d\u010e\u0001\u0000\u0000\u0000\u010e\u0111\u0001"+
+ "\u0000\u0000\u0000\u010f\u0110\u00056\u0000\u0000\u0110\u0112\u0003\u000e"+
+ "\u0007\u0000\u0111\u010f\u0001\u0000\u0000\u0000\u0111\u0112\u0001\u0000"+
+ "\u0000\u0000\u0112!\u0001\u0000\u0000\u0000\u0113\u0118\u0003$\u0012\u0000"+
+ "\u0114\u0115\u0005<\u0000\u0000\u0115\u0117\u0003$\u0012\u0000\u0116\u0114"+
+ "\u0001\u0000\u0000\u0000\u0117\u011a\u0001\u0000\u0000\u0000\u0118\u0116"+
+ "\u0001\u0000\u0000\u0000\u0118\u0119\u0001\u0000\u0000\u0000\u0119#\u0001"+
+ "\u0000\u0000\u0000\u011a\u0118\u0001\u0000\u0000\u0000\u011b\u011e\u0003"+
+ "\u0010\b\u0000\u011c\u011d\u0005\u000e\u0000\u0000\u011d\u011f\u0003h"+
+ "4\u0000\u011e\u011c\u0001\u0000\u0000\u0000\u011e\u011f\u0001\u0000\u0000"+
+ "\u0000\u011f%\u0001\u0000\u0000\u0000\u0120\u0125\u00032\u0019\u0000\u0121"+
+ "\u0122\u0005>\u0000\u0000\u0122\u0124\u00032\u0019\u0000\u0123\u0121\u0001"+
+ "\u0000\u0000\u0000\u0124\u0127\u0001\u0000\u0000\u0000\u0125\u0123\u0001"+
+ "\u0000\u0000\u0000\u0125\u0126\u0001\u0000\u0000\u0000\u0126\'\u0001\u0000"+
+ "\u0000\u0000\u0127\u0125\u0001\u0000\u0000\u0000\u0128\u012d\u0003.\u0017"+
+ "\u0000\u0129\u012a\u0005>\u0000\u0000\u012a\u012c\u0003.\u0017\u0000\u012b"+
+ "\u0129\u0001\u0000\u0000\u0000\u012c\u012f\u0001\u0000\u0000\u0000\u012d"+
+ "\u012b\u0001\u0000\u0000\u0000\u012d\u012e\u0001\u0000\u0000\u0000\u012e"+
+ ")\u0001\u0000\u0000\u0000\u012f\u012d\u0001\u0000\u0000\u0000\u0130\u0135"+
+ "\u0003(\u0014\u0000\u0131\u0132\u0005<\u0000\u0000\u0132\u0134\u0003("+
+ "\u0014\u0000\u0133\u0131\u0001\u0000\u0000\u0000\u0134\u0137\u0001\u0000"+
+ "\u0000\u0000\u0135\u0133\u0001\u0000\u0000\u0000\u0135\u0136\u0001\u0000"+
+ "\u0000\u0000\u0136+\u0001\u0000\u0000\u0000\u0137\u0135\u0001\u0000\u0000"+
+ "\u0000\u0138\u0139\u0007\u0001\u0000\u0000\u0139-\u0001\u0000\u0000\u0000"+
+ "\u013a\u013d\u0005\u0080\u0000\u0000\u013b\u013d\u00030\u0018\u0000\u013c"+
+ "\u013a\u0001\u0000\u0000\u0000\u013c\u013b\u0001\u0000\u0000\u0000\u013d"+
+ "/\u0001\u0000\u0000\u0000\u013e\u0141\u0005I\u0000\u0000\u013f\u0141\u0005"+
+ "Z\u0000\u0000\u0140\u013e\u0001\u0000\u0000\u0000\u0140\u013f\u0001\u0000"+
+ "\u0000\u0000\u01411\u0001\u0000\u0000\u0000\u0142\u0145\u0003,\u0016\u0000"+
+ "\u0143\u0145\u00030\u0018\u0000\u0144\u0142\u0001\u0000\u0000\u0000\u0144"+
+ "\u0143\u0001\u0000\u0000\u0000\u01453\u0001\u0000\u0000\u0000\u0146\u0147"+
+ "\u0005\n\u0000\u0000\u0147\u0148\u00054\u0000\u0000\u01485\u0001\u0000"+
+ "\u0000\u0000\u0149\u014a\u0005\f\u0000\u0000\u014a\u014f\u00038\u001c"+
+ "\u0000\u014b\u014c\u0005<\u0000\u0000\u014c\u014e\u00038\u001c\u0000\u014d"+
+ "\u014b\u0001\u0000\u0000\u0000\u014e\u0151\u0001\u0000\u0000\u0000\u014f"+
+ "\u014d\u0001\u0000\u0000\u0000\u014f\u0150\u0001\u0000\u0000\u0000\u0150"+
+ "7\u0001\u0000\u0000\u0000\u0151\u014f\u0001\u0000\u0000\u0000\u0152\u0154"+
+ "\u0003h4\u0000\u0153\u0155\u0007\u0002\u0000\u0000\u0154\u0153\u0001\u0000"+
+ "\u0000\u0000\u0154\u0155\u0001\u0000\u0000\u0000\u0155\u0158\u0001\u0000"+
+ "\u0000\u0000\u0156\u0157\u0005G\u0000\u0000\u0157\u0159\u0007\u0003\u0000"+
+ "\u0000\u0158\u0156\u0001\u0000\u0000\u0000\u0158\u0159\u0001\u0000\u0000"+
+ "\u0000\u01599\u0001\u0000\u0000\u0000\u015a\u015b\u0005\u001a\u0000\u0000"+
+ "\u015b\u015c\u0003*\u0015\u0000\u015c;\u0001\u0000\u0000\u0000\u015d\u015e"+
+ "\u0005\u0019\u0000\u0000\u015e\u015f\u0003*\u0015\u0000\u015f=\u0001\u0000"+
+ "\u0000\u0000\u0160\u0161\u0005\u001c\u0000\u0000\u0161\u0166\u0003@ \u0000"+
+ "\u0162\u0163\u0005<\u0000\u0000\u0163\u0165\u0003@ \u0000\u0164\u0162"+
+ "\u0001\u0000\u0000\u0000\u0165\u0168\u0001\u0000\u0000\u0000\u0166\u0164"+
+ "\u0001\u0000\u0000\u0000\u0166\u0167\u0001\u0000\u0000\u0000\u0167?\u0001"+
+ "\u0000\u0000\u0000\u0168\u0166\u0001\u0000\u0000\u0000\u0169\u016a\u0003"+
+ "(\u0014\u0000\u016a\u016b\u0005\u0084\u0000\u0000\u016b\u016c\u0003(\u0014"+
+ "\u0000\u016cA\u0001\u0000\u0000\u0000\u016d\u016e\u0005\u0007\u0000\u0000"+
+ "\u016e\u016f\u0003r9\u0000\u016f\u0171\u0003\u0086C\u0000\u0170\u0172"+
+ "\u0003H$\u0000\u0171\u0170\u0001\u0000\u0000\u0000\u0171\u0172\u0001\u0000"+
+ "\u0000\u0000\u0172C\u0001\u0000\u0000\u0000\u0173\u0174\u0005\t\u0000"+
+ "\u0000\u0174\u0175\u0003r9\u0000\u0175\u0176\u0003\u0086C\u0000\u0176"+
+ "E\u0001\u0000\u0000\u0000\u0177\u0178\u0005\u0018\u0000\u0000\u0178\u0179"+
+ "\u0003&\u0013\u0000\u0179G\u0001\u0000\u0000\u0000\u017a\u017f\u0003J"+
+ "%\u0000\u017b\u017c\u0005<\u0000\u0000\u017c\u017e\u0003J%\u0000\u017d"+
+ "\u017b\u0001\u0000\u0000\u0000\u017e\u0181\u0001\u0000\u0000\u0000\u017f"+
+ "\u017d\u0001\u0000\u0000\u0000\u017f\u0180\u0001\u0000\u0000\u0000\u0180"+
+ "I\u0001\u0000\u0000\u0000\u0181\u017f\u0001\u0000\u0000\u0000\u0182\u0183"+
+ "\u0003,\u0016\u0000\u0183\u0184\u00059\u0000\u0000\u0184\u0185\u0003|"+
+ ">\u0000\u0185K\u0001\u0000\u0000\u0000\u0186\u0187\u0005\u0006\u0000\u0000"+
+ "\u0187\u0188\u0003N\'\u0000\u0188M\u0001\u0000\u0000\u0000\u0189\u018a"+
+ "\u0005[\u0000\u0000\u018a\u018b\u0003\u0002\u0001\u0000\u018b\u018c\u0005"+
+ "\\\u0000\u0000\u018cO\u0001\u0000\u0000\u0000\u018d\u018e\u0005\u001d"+
+ "\u0000\u0000\u018e\u018f\u0005\u0088\u0000\u0000\u018fQ\u0001\u0000\u0000"+
+ "\u0000\u0190\u0191\u0005\u0005\u0000\u0000\u0191\u0194\u0005$\u0000\u0000"+
+ "\u0192\u0193\u0005\"\u0000\u0000\u0193\u0195\u0003(\u0014\u0000\u0194"+
+ "\u0192\u0001\u0000\u0000\u0000\u0194\u0195\u0001\u0000\u0000\u0000\u0195"+
+ "\u019f\u0001\u0000\u0000\u0000\u0196\u0197\u0005#\u0000\u0000\u0197\u019c"+
+ "\u0003T*\u0000\u0198\u0199\u0005<\u0000\u0000\u0199\u019b\u0003T*\u0000"+
+ "\u019a\u0198\u0001\u0000\u0000\u0000\u019b\u019e\u0001\u0000\u0000\u0000"+
+ "\u019c\u019a\u0001\u0000\u0000\u0000\u019c\u019d\u0001\u0000\u0000\u0000"+
+ "\u019d\u01a0\u0001\u0000\u0000\u0000\u019e\u019c\u0001\u0000\u0000\u0000"+
+ "\u019f\u0196\u0001\u0000\u0000\u0000\u019f\u01a0\u0001\u0000\u0000\u0000"+
+ "\u01a0S\u0001\u0000\u0000\u0000\u01a1\u01a2\u0003(\u0014\u0000\u01a2\u01a3"+
+ "\u00059\u0000\u0000\u01a3\u01a5\u0001\u0000\u0000\u0000\u01a4\u01a1\u0001"+
+ "\u0000\u0000\u0000\u01a4\u01a5\u0001\u0000\u0000\u0000\u01a5\u01a6\u0001"+
+ "\u0000\u0000\u0000\u01a6\u01a7\u0003(\u0014\u0000\u01a7U\u0001\u0000\u0000"+
+ "\u0000\u01a8\u01a9\u0005\u0016\u0000\u0000\u01a9\u01aa\u0003\u0014\n\u0000"+
+ "\u01aa\u01ab\u0005\"\u0000\u0000\u01ab\u01ac\u0003*\u0015\u0000\u01ac"+
+ "W\u0001\u0000\u0000\u0000\u01ad\u01ae\u0005\u000f\u0000\u0000\u01ae\u01b1"+
+ "\u0003\"\u0011\u0000\u01af\u01b0\u00056\u0000\u0000\u01b0\u01b2\u0003"+
+ "\u000e\u0007\u0000\u01b1\u01af\u0001\u0000\u0000\u0000\u01b1\u01b2\u0001"+
+ "\u0000\u0000\u0000\u01b2Y\u0001\u0000\u0000\u0000\u01b3\u01b4\u0005\u0004"+
+ "\u0000\u0000\u01b4\u01b7\u0003&\u0013\u0000\u01b5\u01b6\u0005\"\u0000"+
+ "\u0000\u01b6\u01b8\u0003&\u0013\u0000\u01b7\u01b5\u0001\u0000\u0000\u0000"+
+ "\u01b7\u01b8\u0001\u0000\u0000\u0000\u01b8\u01be\u0001\u0000\u0000\u0000"+
+ "\u01b9\u01ba\u0005\u0084\u0000\u0000\u01ba\u01bb\u0003&\u0013\u0000\u01bb"+
+ "\u01bc\u0005<\u0000\u0000\u01bc\u01bd\u0003&\u0013\u0000\u01bd\u01bf\u0001"+
+ "\u0000\u0000\u0000\u01be\u01b9\u0001\u0000\u0000\u0000\u01be\u01bf\u0001"+
+ "\u0000\u0000\u0000\u01bf[\u0001\u0000\u0000\u0000\u01c0\u01c1\u0005\u001b"+
+ "\u0000\u0000\u01c1\u01c2\u0003*\u0015\u0000\u01c2]\u0001\u0000\u0000\u0000"+
+ "\u01c3\u01c4\u0005\u0011\u0000\u0000\u01c4\u01c5\u0003`0\u0000\u01c5_"+
+ "\u0001\u0000\u0000\u0000\u01c6\u01c8\u0003b1\u0000\u01c7\u01c6\u0001\u0000"+
+ "\u0000\u0000\u01c8\u01c9\u0001\u0000\u0000\u0000\u01c9\u01c7\u0001\u0000"+
+ "\u0000\u0000\u01c9\u01ca\u0001\u0000\u0000\u0000\u01caa\u0001\u0000\u0000"+
+ "\u0000\u01cb\u01cc\u0005]\u0000\u0000\u01cc\u01cd\u0003d2\u0000\u01cd"+
+ "\u01ce\u0005^\u0000\u0000\u01cec\u0001\u0000\u0000\u0000\u01cf\u01d0\u0006"+
+ "2\uffff\uffff\u0000\u01d0\u01d1\u0003f3\u0000\u01d1\u01d7\u0001\u0000"+
+ "\u0000\u0000\u01d2\u01d3\n\u0001\u0000\u0000\u01d3\u01d4\u00052\u0000"+
+ "\u0000\u01d4\u01d6\u0003f3\u0000\u01d5\u01d2\u0001\u0000\u0000\u0000\u01d6"+
+ "\u01d9\u0001\u0000\u0000\u0000\u01d7\u01d5\u0001\u0000\u0000\u0000\u01d7"+
+ "\u01d8\u0001\u0000\u0000\u0000\u01d8e\u0001\u0000\u0000\u0000\u01d9\u01d7"+
+ "\u0001\u0000\u0000\u0000\u01da\u01de\u0003\b\u0004\u0000\u01db\u01de\u0003"+
+ "6\u001b\u0000\u01dc\u01de\u00034\u001a\u0000\u01dd\u01da\u0001\u0000\u0000"+
+ "\u0000\u01dd\u01db\u0001\u0000\u0000\u0000\u01dd\u01dc\u0001\u0000\u0000"+
+ "\u0000\u01deg\u0001\u0000\u0000\u0000\u01df\u01e0\u00064\uffff\uffff\u0000"+
+ "\u01e0\u01e1\u0005E\u0000\u0000\u01e1\u01fd\u0003h4\b\u01e2\u01fd\u0003"+
+ "n7\u0000\u01e3\u01fd\u0003j5\u0000\u01e4\u01e6\u0003n7\u0000\u01e5\u01e7"+
+ "\u0005E\u0000\u0000\u01e6\u01e5\u0001\u0000\u0000\u0000\u01e6\u01e7\u0001"+
+ "\u0000\u0000\u0000\u01e7\u01e8\u0001\u0000\u0000\u0000\u01e8\u01e9\u0005"+
+ "A\u0000\u0000\u01e9\u01ea\u0005]\u0000\u0000\u01ea\u01ef\u0003n7\u0000"+
+ "\u01eb\u01ec\u0005<\u0000\u0000\u01ec\u01ee\u0003n7\u0000\u01ed\u01eb"+
+ "\u0001\u0000\u0000\u0000\u01ee\u01f1\u0001\u0000\u0000\u0000\u01ef\u01ed"+
+ "\u0001\u0000\u0000\u0000\u01ef\u01f0\u0001\u0000\u0000\u0000\u01f0\u01f2"+
+ "\u0001\u0000\u0000\u0000\u01f1\u01ef\u0001\u0000\u0000\u0000\u01f2\u01f3"+
+ "\u0005^\u0000\u0000\u01f3\u01fd\u0001\u0000\u0000\u0000\u01f4\u01f5\u0003"+
+ "n7\u0000\u01f5\u01f7\u0005B\u0000\u0000\u01f6\u01f8\u0005E\u0000\u0000"+
+ "\u01f7\u01f6\u0001\u0000\u0000\u0000\u01f7\u01f8\u0001\u0000\u0000\u0000"+
+ "\u01f8\u01f9\u0001\u0000\u0000\u0000\u01f9\u01fa\u0005F\u0000\u0000\u01fa"+
+ "\u01fd\u0001\u0000\u0000\u0000\u01fb\u01fd\u0003l6\u0000\u01fc\u01df\u0001"+
+ "\u0000\u0000\u0000\u01fc\u01e2\u0001\u0000\u0000\u0000\u01fc\u01e3\u0001"+
+ "\u0000\u0000\u0000\u01fc\u01e4\u0001\u0000\u0000\u0000\u01fc\u01f4\u0001"+
+ "\u0000\u0000\u0000\u01fc\u01fb\u0001\u0000\u0000\u0000\u01fd\u0206\u0001"+
+ "\u0000\u0000\u0000\u01fe\u01ff\n\u0005\u0000\u0000\u01ff\u0200\u00057"+
+ "\u0000\u0000\u0200\u0205\u0003h4\u0006\u0201\u0202\n\u0004\u0000\u0000"+
+ "\u0202\u0203\u0005H\u0000\u0000\u0203\u0205\u0003h4\u0005\u0204\u01fe"+
+ "\u0001\u0000\u0000\u0000\u0204\u0201\u0001\u0000\u0000\u0000\u0205\u0208"+
+ "\u0001\u0000\u0000\u0000\u0206\u0204\u0001\u0000\u0000\u0000\u0206\u0207"+
+ "\u0001\u0000\u0000\u0000\u0207i\u0001\u0000\u0000\u0000\u0208\u0206\u0001"+
+ "\u0000\u0000\u0000\u0209\u020b\u0003n7\u0000\u020a\u020c\u0005E\u0000"+
+ "\u0000\u020b\u020a\u0001\u0000\u0000\u0000\u020b\u020c\u0001\u0000\u0000"+
+ "\u0000\u020c\u020d\u0001\u0000\u0000\u0000\u020d\u020e\u0005D\u0000\u0000"+
+ "\u020e\u020f\u0003\u0086C\u0000\u020f\u0218\u0001\u0000\u0000\u0000\u0210"+
+ "\u0212\u0003n7\u0000\u0211\u0213\u0005E\u0000\u0000\u0212\u0211\u0001"+
+ "\u0000\u0000\u0000\u0212\u0213\u0001\u0000\u0000\u0000\u0213\u0214\u0001"+
+ "\u0000\u0000\u0000\u0214\u0215\u0005J\u0000\u0000\u0215\u0216\u0003\u0086"+
+ "C\u0000\u0216\u0218\u0001\u0000\u0000\u0000\u0217\u0209\u0001\u0000\u0000"+
+ "\u0000\u0217\u0210\u0001\u0000\u0000\u0000\u0218k\u0001\u0000\u0000\u0000"+
+ "\u0219\u021c\u0003&\u0013\u0000\u021a\u021b\u0005:\u0000\u0000\u021b\u021d"+
+ "\u0003\n\u0005\u0000\u021c\u021a\u0001\u0000\u0000\u0000\u021c\u021d\u0001"+
+ "\u0000\u0000\u0000\u021d\u021e\u0001\u0000\u0000\u0000\u021e\u021f\u0005"+
+ ";\u0000\u0000\u021f\u0220\u0003|>\u0000\u0220m\u0001\u0000\u0000\u0000"+
+ "\u0221\u0227\u0003p8\u0000\u0222\u0223\u0003p8\u0000\u0223\u0224\u0003"+
+ "\u0088D\u0000\u0224\u0225\u0003p8\u0000\u0225\u0227\u0001\u0000\u0000"+
+ "\u0000\u0226\u0221\u0001\u0000\u0000\u0000\u0226\u0222\u0001\u0000\u0000"+
+ "\u0000\u0227o\u0001\u0000\u0000\u0000\u0228\u0229\u00068\uffff\uffff\u0000"+
+ "\u0229\u022d\u0003r9\u0000\u022a\u022b\u0007\u0004\u0000\u0000\u022b\u022d"+
+ "\u0003p8\u0003\u022c\u0228\u0001\u0000\u0000\u0000\u022c\u022a\u0001\u0000"+
+ "\u0000\u0000\u022d\u0236\u0001\u0000\u0000\u0000\u022e\u022f\n\u0002\u0000"+
+ "\u0000\u022f\u0230\u0007\u0005\u0000\u0000\u0230\u0235\u0003p8\u0003\u0231"+
+ "\u0232\n\u0001\u0000\u0000\u0232\u0233\u0007\u0004\u0000\u0000\u0233\u0235"+
+ "\u0003p8\u0002\u0234\u022e\u0001\u0000\u0000\u0000\u0234\u0231\u0001\u0000"+
+ "\u0000\u0000\u0235\u0238\u0001\u0000\u0000\u0000\u0236\u0234\u0001\u0000"+
+ "\u0000\u0000\u0236\u0237\u0001\u0000\u0000\u0000\u0237q\u0001\u0000\u0000"+
+ "\u0000\u0238\u0236\u0001\u0000\u0000\u0000\u0239\u023a\u00069\uffff\uffff"+
+ "\u0000\u023a\u0242\u0003|>\u0000\u023b\u0242\u0003&\u0013\u0000\u023c"+
+ "\u0242\u0003t:\u0000\u023d\u023e\u0005]\u0000\u0000\u023e\u023f\u0003"+
+ "h4\u0000\u023f\u0240\u0005^\u0000\u0000\u0240\u0242\u0001\u0000\u0000"+
+ "\u0000\u0241\u0239\u0001\u0000\u0000\u0000\u0241\u023b\u0001\u0000\u0000"+
+ "\u0000\u0241\u023c\u0001\u0000\u0000\u0000\u0241\u023d\u0001\u0000\u0000"+
+ "\u0000\u0242\u0248\u0001\u0000\u0000\u0000\u0243\u0244\n\u0001\u0000\u0000"+
+ "\u0244\u0245\u0005:\u0000\u0000\u0245\u0247\u0003\n\u0005\u0000\u0246"+
+ "\u0243\u0001\u0000\u0000\u0000\u0247\u024a\u0001\u0000\u0000\u0000\u0248"+
+ "\u0246\u0001\u0000\u0000\u0000\u0248\u0249\u0001\u0000\u0000\u0000\u0249"+
+ "s\u0001\u0000\u0000\u0000\u024a\u0248\u0001\u0000\u0000\u0000\u024b\u024c"+
+ "\u0003v;\u0000\u024c\u025a\u0005]\u0000\u0000\u024d\u025b\u0005U\u0000"+
+ "\u0000\u024e\u0253\u0003h4\u0000\u024f\u0250\u0005<\u0000\u0000\u0250"+
+ "\u0252\u0003h4\u0000\u0251\u024f\u0001\u0000\u0000\u0000\u0252\u0255\u0001"+
+ "\u0000\u0000\u0000\u0253\u0251\u0001\u0000\u0000\u0000\u0253\u0254\u0001"+
+ "\u0000\u0000\u0000\u0254\u0258\u0001\u0000\u0000\u0000\u0255\u0253\u0001"+
+ "\u0000\u0000\u0000\u0256\u0257\u0005<\u0000\u0000\u0257\u0259\u0003x<"+
+ "\u0000\u0258\u0256\u0001\u0000\u0000\u0000\u0258\u0259\u0001\u0000\u0000"+
+ "\u0000\u0259\u025b\u0001\u0000\u0000\u0000\u025a\u024d\u0001\u0000\u0000"+
+ "\u0000\u025a\u024e\u0001\u0000\u0000\u0000\u025a\u025b\u0001\u0000\u0000"+
+ "\u0000\u025b\u025c\u0001\u0000\u0000\u0000\u025c\u025d\u0005^\u0000\u0000"+
+ "\u025du\u0001\u0000\u0000\u0000\u025e\u025f\u00032\u0019\u0000\u025fw"+
+ "\u0001\u0000\u0000\u0000\u0260\u0261\u0005X\u0000\u0000\u0261\u0266\u0003"+
+ "z=\u0000\u0262\u0263\u0005<\u0000\u0000\u0263\u0265\u0003z=\u0000\u0264"+
+ "\u0262\u0001\u0000\u0000\u0000\u0265\u0268\u0001\u0000\u0000\u0000\u0266"+
+ "\u0264\u0001\u0000\u0000\u0000\u0266\u0267\u0001\u0000\u0000\u0000\u0267"+
+ "\u0269\u0001\u0000\u0000\u0000\u0268\u0266\u0001\u0000\u0000\u0000\u0269"+
+ "\u026a\u0005Y\u0000\u0000\u026ay\u0001\u0000\u0000\u0000\u026b\u026c\u0003"+
+ "\u0086C\u0000\u026c\u026d\u0005;\u0000\u0000\u026d\u026e\u0003|>\u0000"+
+ "\u026e{\u0001\u0000\u0000\u0000\u026f\u029a\u0005F\u0000\u0000\u0270\u0271"+
+ "\u0003\u0084B\u0000\u0271\u0272\u0005_\u0000\u0000\u0272\u029a\u0001\u0000"+
+ "\u0000\u0000\u0273\u029a\u0003\u0082A\u0000\u0274\u029a\u0003\u0084B\u0000"+
+ "\u0275\u029a\u0003~?\u0000\u0276\u029a\u00030\u0018\u0000\u0277\u029a"+
+ "\u0003\u0086C\u0000\u0278\u0279\u0005[\u0000\u0000\u0279\u027e\u0003\u0080"+
+ "@\u0000\u027a\u027b\u0005<\u0000\u0000\u027b\u027d\u0003\u0080@\u0000"+
+ "\u027c\u027a\u0001\u0000\u0000\u0000\u027d\u0280\u0001\u0000\u0000\u0000"+
+ "\u027e\u027c\u0001\u0000\u0000\u0000\u027e\u027f\u0001\u0000\u0000\u0000"+
+ "\u027f\u0281\u0001\u0000\u0000\u0000\u0280\u027e\u0001\u0000\u0000\u0000"+
+ "\u0281\u0282\u0005\\\u0000\u0000\u0282\u029a\u0001\u0000\u0000\u0000\u0283"+
+ "\u0284\u0005[\u0000\u0000\u0284\u0289\u0003~?\u0000\u0285\u0286\u0005"+
+ "<\u0000\u0000\u0286\u0288\u0003~?\u0000\u0287\u0285\u0001\u0000\u0000"+
+ "\u0000\u0288\u028b\u0001\u0000\u0000\u0000\u0289\u0287\u0001\u0000\u0000"+
+ "\u0000\u0289\u028a\u0001\u0000\u0000\u0000\u028a\u028c\u0001\u0000\u0000"+
+ "\u0000\u028b\u0289\u0001\u0000\u0000\u0000\u028c\u028d\u0005\\\u0000\u0000"+
+ "\u028d\u029a\u0001\u0000\u0000\u0000\u028e\u028f\u0005[\u0000\u0000\u028f"+
+ "\u0294\u0003\u0086C\u0000\u0290\u0291\u0005<\u0000\u0000\u0291\u0293\u0003"+
+ "\u0086C\u0000\u0292\u0290\u0001\u0000\u0000\u0000\u0293\u0296\u0001\u0000"+
+ "\u0000\u0000\u0294\u0292\u0001\u0000\u0000\u0000\u0294\u0295\u0001\u0000"+
+ "\u0000\u0000\u0295\u0297\u0001\u0000\u0000\u0000\u0296\u0294\u0001\u0000"+
+ "\u0000\u0000\u0297\u0298\u0005\\\u0000\u0000\u0298\u029a\u0001\u0000\u0000"+
+ "\u0000\u0299\u026f\u0001\u0000\u0000\u0000\u0299\u0270\u0001\u0000\u0000"+
+ "\u0000\u0299\u0273\u0001\u0000\u0000\u0000\u0299\u0274\u0001\u0000\u0000"+
+ "\u0000\u0299\u0275\u0001\u0000\u0000\u0000\u0299\u0276\u0001\u0000\u0000"+
+ "\u0000\u0299\u0277\u0001\u0000\u0000\u0000\u0299\u0278\u0001\u0000\u0000"+
+ "\u0000\u0299\u0283\u0001\u0000\u0000\u0000\u0299\u028e\u0001\u0000\u0000"+
+ "\u0000\u029a}\u0001\u0000\u0000\u0000\u029b\u029c\u0007\u0006\u0000\u0000"+
+ "\u029c\u007f\u0001\u0000\u0000\u0000\u029d\u02a0\u0003\u0082A\u0000\u029e"+
+ "\u02a0\u0003\u0084B\u0000\u029f\u029d\u0001\u0000\u0000\u0000\u029f\u029e"+
+ "\u0001\u0000\u0000\u0000\u02a0\u0081\u0001\u0000\u0000\u0000\u02a1\u02a3"+
+ "\u0007\u0004\u0000\u0000\u02a2\u02a1\u0001\u0000\u0000\u0000\u02a2\u02a3"+
+ "\u0001\u0000\u0000\u0000\u02a3\u02a4\u0001\u0000\u0000\u0000\u02a4\u02a5"+
+ "\u00055\u0000\u0000\u02a5\u0083\u0001\u0000\u0000\u0000\u02a6\u02a8\u0007"+
+ "\u0004\u0000\u0000\u02a7\u02a6\u0001\u0000\u0000\u0000\u02a7\u02a8\u0001"+
+ "\u0000\u0000\u0000\u02a8\u02a9\u0001\u0000\u0000\u0000\u02a9\u02aa\u0005"+
+ "4\u0000\u0000\u02aa\u0085\u0001\u0000\u0000\u0000\u02ab\u02ac\u00053\u0000"+
+ "\u0000\u02ac\u0087\u0001\u0000\u0000\u0000\u02ad\u02ae\u0007\u0007\u0000"+
+ "\u0000\u02ae\u0089\u0001\u0000\u0000\u0000\u02af\u02b0\u0007\b\u0000\u0000"+
+ "\u02b0\u02b1\u0005l\u0000\u0000\u02b1\u02b2\u0003\u008cF\u0000\u02b2\u02b3"+
+ "\u0003\u008eG\u0000\u02b3\u008b\u0001\u0000\u0000\u0000\u02b4\u02b5\u0003"+
+ "\u0014\n\u0000\u02b5\u008d\u0001\u0000\u0000\u0000\u02b6\u02b7\u0005\""+
+ "\u0000\u0000\u02b7\u02bc\u0003\u0090H\u0000\u02b8\u02b9\u0005<\u0000\u0000"+
+ "\u02b9\u02bb\u0003\u0090H\u0000\u02ba\u02b8\u0001\u0000\u0000\u0000\u02bb"+
+ "\u02be\u0001\u0000\u0000\u0000\u02bc\u02ba\u0001\u0000\u0000\u0000\u02bc"+
+ "\u02bd\u0001\u0000\u0000\u0000\u02bd\u008f\u0001\u0000\u0000\u0000\u02be"+
+ "\u02bc\u0001\u0000\u0000\u0000\u02bf\u02c0\u0003n7\u0000\u02c0\u0091\u0001"+
+ "\u0000\u0000\u0000B\u009d\u00a6\u00bf\u00ce\u00d4\u00de\u00e2\u00e7\u00f5"+
+ "\u00fe\u0102\u0106\u010d\u0111\u0118\u011e\u0125\u012d\u0135\u013c\u0140"+
+ "\u0144\u014f\u0154\u0158\u0166\u0171\u017f\u0194\u019c\u019f\u01a4\u01b1"+
+ "\u01b7\u01be\u01c9\u01d7\u01dd\u01e6\u01ef\u01f7\u01fc\u0204\u0206\u020b"+
+ "\u0212\u0217\u021c\u0226\u022c\u0234\u0236\u0241\u0248\u0253\u0258\u025a"+
+ "\u0266\u027e\u0289\u0294\u0299\u029f\u02a2\u02a7\u02bc";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseListener.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseListener.java
index c9cb05b3d91f..b13e73709209 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseListener.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseListener.java
@@ -92,6 +92,594 @@ public class EsqlBaseParserBaseListener implements EsqlBaseParserListener {
* The default implementation does nothing.
*/
@Override public void exitWhereCommand(EsqlBaseParser.WhereCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterToDataType(EsqlBaseParser.ToDataTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitToDataType(EsqlBaseParser.ToDataTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRowCommand(EsqlBaseParser.RowCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRowCommand(EsqlBaseParser.RowCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFields(EsqlBaseParser.FieldsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFields(EsqlBaseParser.FieldsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterField(EsqlBaseParser.FieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitField(EsqlBaseParser.FieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFromCommand(EsqlBaseParser.FromCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFromCommand(EsqlBaseParser.FromCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIndexPattern(EsqlBaseParser.IndexPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIndexPattern(EsqlBaseParser.IndexPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClusterString(EsqlBaseParser.ClusterStringContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClusterString(EsqlBaseParser.ClusterStringContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIndexString(EsqlBaseParser.IndexStringContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIndexString(EsqlBaseParser.IndexStringContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMetadata(EsqlBaseParser.MetadataContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMetadata(EsqlBaseParser.MetadataContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEvalCommand(EsqlBaseParser.EvalCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEvalCommand(EsqlBaseParser.EvalCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStatsCommand(EsqlBaseParser.StatsCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStatsCommand(EsqlBaseParser.StatsCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAggFields(EsqlBaseParser.AggFieldsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAggFields(EsqlBaseParser.AggFieldsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAggField(EsqlBaseParser.AggFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAggField(EsqlBaseParser.AggFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQualifiedName(EsqlBaseParser.QualifiedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQualifiedName(EsqlBaseParser.QualifiedNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIdentifier(EsqlBaseParser.IdentifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIdentifier(EsqlBaseParser.IdentifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInputParam(EsqlBaseParser.InputParamContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInputParam(EsqlBaseParser.InputParamContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLimitCommand(EsqlBaseParser.LimitCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLimitCommand(EsqlBaseParser.LimitCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSortCommand(EsqlBaseParser.SortCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSortCommand(EsqlBaseParser.SortCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOrderExpression(EsqlBaseParser.OrderExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOrderExpression(EsqlBaseParser.OrderExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterKeepCommand(EsqlBaseParser.KeepCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitKeepCommand(EsqlBaseParser.KeepCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDropCommand(EsqlBaseParser.DropCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDropCommand(EsqlBaseParser.DropCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRenameCommand(EsqlBaseParser.RenameCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRenameCommand(EsqlBaseParser.RenameCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRenameClause(EsqlBaseParser.RenameClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRenameClause(EsqlBaseParser.RenameClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDissectCommand(EsqlBaseParser.DissectCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDissectCommand(EsqlBaseParser.DissectCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGrokCommand(EsqlBaseParser.GrokCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGrokCommand(EsqlBaseParser.GrokCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCommandOptions(EsqlBaseParser.CommandOptionsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCommandOptions(EsqlBaseParser.CommandOptionsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCommandOption(EsqlBaseParser.CommandOptionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCommandOption(EsqlBaseParser.CommandOptionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExplainCommand(EsqlBaseParser.ExplainCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExplainCommand(EsqlBaseParser.ExplainCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterShowInfo(EsqlBaseParser.ShowInfoContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitShowInfo(EsqlBaseParser.ShowInfoContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLookupCommand(EsqlBaseParser.LookupCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLookupCommand(EsqlBaseParser.LookupCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInsistCommand(EsqlBaseParser.InsistCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInsistCommand(EsqlBaseParser.InsistCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForkCommand(EsqlBaseParser.ForkCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForkCommand(EsqlBaseParser.ForkCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx) { }
/**
* {@inheritDoc}
*
@@ -368,234 +956,6 @@ public class EsqlBaseParserBaseListener implements EsqlBaseParserListener {
* The default implementation does nothing.
*/
@Override public void exitEntryExpression(EsqlBaseParser.EntryExpressionContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterToDataType(EsqlBaseParser.ToDataTypeContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitToDataType(EsqlBaseParser.ToDataTypeContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterRowCommand(EsqlBaseParser.RowCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitRowCommand(EsqlBaseParser.RowCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterFields(EsqlBaseParser.FieldsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitFields(EsqlBaseParser.FieldsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterField(EsqlBaseParser.FieldContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitField(EsqlBaseParser.FieldContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterFromCommand(EsqlBaseParser.FromCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitFromCommand(EsqlBaseParser.FromCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterIndexPattern(EsqlBaseParser.IndexPatternContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitIndexPattern(EsqlBaseParser.IndexPatternContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterClusterString(EsqlBaseParser.ClusterStringContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitClusterString(EsqlBaseParser.ClusterStringContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterIndexString(EsqlBaseParser.IndexStringContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitIndexString(EsqlBaseParser.IndexStringContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterMetadata(EsqlBaseParser.MetadataContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitMetadata(EsqlBaseParser.MetadataContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterEvalCommand(EsqlBaseParser.EvalCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitEvalCommand(EsqlBaseParser.EvalCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterStatsCommand(EsqlBaseParser.StatsCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitStatsCommand(EsqlBaseParser.StatsCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterAggFields(EsqlBaseParser.AggFieldsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitAggFields(EsqlBaseParser.AggFieldsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterAggField(EsqlBaseParser.AggFieldContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitAggField(EsqlBaseParser.AggFieldContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterQualifiedName(EsqlBaseParser.QualifiedNameContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitQualifiedName(EsqlBaseParser.QualifiedNameContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterIdentifier(EsqlBaseParser.IdentifierContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitIdentifier(EsqlBaseParser.IdentifierContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx) { }
/**
* {@inheritDoc}
*
@@ -716,186 +1076,6 @@ public class EsqlBaseParserBaseListener implements EsqlBaseParserListener {
* The default implementation does nothing.
*/
@Override public void exitStringArrayLiteral(EsqlBaseParser.StringArrayLiteralContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterInputParam(EsqlBaseParser.InputParamContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitInputParam(EsqlBaseParser.InputParamContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterLimitCommand(EsqlBaseParser.LimitCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitLimitCommand(EsqlBaseParser.LimitCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterSortCommand(EsqlBaseParser.SortCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitSortCommand(EsqlBaseParser.SortCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterOrderExpression(EsqlBaseParser.OrderExpressionContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitOrderExpression(EsqlBaseParser.OrderExpressionContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterKeepCommand(EsqlBaseParser.KeepCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitKeepCommand(EsqlBaseParser.KeepCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterDropCommand(EsqlBaseParser.DropCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitDropCommand(EsqlBaseParser.DropCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterRenameCommand(EsqlBaseParser.RenameCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitRenameCommand(EsqlBaseParser.RenameCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterRenameClause(EsqlBaseParser.RenameClauseContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitRenameClause(EsqlBaseParser.RenameClauseContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterDissectCommand(EsqlBaseParser.DissectCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitDissectCommand(EsqlBaseParser.DissectCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterGrokCommand(EsqlBaseParser.GrokCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitGrokCommand(EsqlBaseParser.GrokCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterCommandOptions(EsqlBaseParser.CommandOptionsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitCommandOptions(EsqlBaseParser.CommandOptionsContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterCommandOption(EsqlBaseParser.CommandOptionContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitCommandOption(EsqlBaseParser.CommandOptionContext ctx) { }
/**
* {@inheritDoc}
*
@@ -968,90 +1148,6 @@ public class EsqlBaseParserBaseListener implements EsqlBaseParserListener {
* The default implementation does nothing.
*/
@Override public void exitComparisonOperator(EsqlBaseParser.ComparisonOperatorContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterExplainCommand(EsqlBaseParser.ExplainCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitExplainCommand(EsqlBaseParser.ExplainCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterShowInfo(EsqlBaseParser.ShowInfoContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitShowInfo(EsqlBaseParser.ShowInfoContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterLookupCommand(EsqlBaseParser.LookupCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitLookupCommand(EsqlBaseParser.LookupCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx) { }
/**
* {@inheritDoc}
*
@@ -1100,102 +1196,6 @@ public class EsqlBaseParserBaseListener implements EsqlBaseParserListener {
* The default implementation does nothing.
*/
@Override public void exitJoinPredicate(EsqlBaseParser.JoinPredicateContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterInsistCommand(EsqlBaseParser.InsistCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitInsistCommand(EsqlBaseParser.InsistCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterForkCommand(EsqlBaseParser.ForkCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitForkCommand(EsqlBaseParser.ForkCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void enterForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx) { }
- /**
- * {@inheritDoc}
- *
- * The default implementation does nothing.
- */
- @Override public void exitForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx) { }
/**
* {@inheritDoc}
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseVisitor.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseVisitor.java
index f9d2904a0280..a50d7d673b01 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseVisitor.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseVisitor.java
@@ -62,6 +62,349 @@ public class EsqlBaseParserBaseVisitor extends AbstractParseTreeVisitor im
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitWhereCommand(EsqlBaseParser.WhereCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitToDataType(EsqlBaseParser.ToDataTypeContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitRowCommand(EsqlBaseParser.RowCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitFields(EsqlBaseParser.FieldsContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitField(EsqlBaseParser.FieldContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitFromCommand(EsqlBaseParser.FromCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitIndexPattern(EsqlBaseParser.IndexPatternContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitClusterString(EsqlBaseParser.ClusterStringContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitIndexString(EsqlBaseParser.IndexStringContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitMetadata(EsqlBaseParser.MetadataContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitEvalCommand(EsqlBaseParser.EvalCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitStatsCommand(EsqlBaseParser.StatsCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitAggFields(EsqlBaseParser.AggFieldsContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitAggField(EsqlBaseParser.AggFieldContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitQualifiedName(EsqlBaseParser.QualifiedNameContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitIdentifier(EsqlBaseParser.IdentifierContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitInputParam(EsqlBaseParser.InputParamContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitLimitCommand(EsqlBaseParser.LimitCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitSortCommand(EsqlBaseParser.SortCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitOrderExpression(EsqlBaseParser.OrderExpressionContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitKeepCommand(EsqlBaseParser.KeepCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitDropCommand(EsqlBaseParser.DropCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitRenameCommand(EsqlBaseParser.RenameCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitRenameClause(EsqlBaseParser.RenameClauseContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitDissectCommand(EsqlBaseParser.DissectCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitGrokCommand(EsqlBaseParser.GrokCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitCommandOptions(EsqlBaseParser.CommandOptionsContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitCommandOption(EsqlBaseParser.CommandOptionContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitExplainCommand(EsqlBaseParser.ExplainCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitShowInfo(EsqlBaseParser.ShowInfoContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitLookupCommand(EsqlBaseParser.LookupCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitInsistCommand(EsqlBaseParser.InsistCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitForkCommand(EsqlBaseParser.ForkCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@@ -223,139 +566,6 @@ public class EsqlBaseParserBaseVisitor extends AbstractParseTreeVisitor im
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitEntryExpression(EsqlBaseParser.EntryExpressionContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitToDataType(EsqlBaseParser.ToDataTypeContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitRowCommand(EsqlBaseParser.RowCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitFields(EsqlBaseParser.FieldsContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitField(EsqlBaseParser.FieldContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitFromCommand(EsqlBaseParser.FromCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitIndexPattern(EsqlBaseParser.IndexPatternContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitClusterString(EsqlBaseParser.ClusterStringContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitIndexString(EsqlBaseParser.IndexStringContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitMetadata(EsqlBaseParser.MetadataContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitEvalCommand(EsqlBaseParser.EvalCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitStatsCommand(EsqlBaseParser.StatsCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitAggFields(EsqlBaseParser.AggFieldsContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitAggField(EsqlBaseParser.AggFieldContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitQualifiedName(EsqlBaseParser.QualifiedNameContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitIdentifier(EsqlBaseParser.IdentifierContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@@ -426,111 +636,6 @@ public class EsqlBaseParserBaseVisitor extends AbstractParseTreeVisitor im
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitStringArrayLiteral(EsqlBaseParser.StringArrayLiteralContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitInputParam(EsqlBaseParser.InputParamContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitLimitCommand(EsqlBaseParser.LimitCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitSortCommand(EsqlBaseParser.SortCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitOrderExpression(EsqlBaseParser.OrderExpressionContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitKeepCommand(EsqlBaseParser.KeepCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitDropCommand(EsqlBaseParser.DropCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitRenameCommand(EsqlBaseParser.RenameCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitRenameClause(EsqlBaseParser.RenameClauseContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitDissectCommand(EsqlBaseParser.DissectCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitGrokCommand(EsqlBaseParser.GrokCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitCommandOptions(EsqlBaseParser.CommandOptionsContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitCommandOption(EsqlBaseParser.CommandOptionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@@ -573,55 +678,6 @@ public class EsqlBaseParserBaseVisitor extends AbstractParseTreeVisitor im
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitComparisonOperator(EsqlBaseParser.ComparisonOperatorContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitExplainCommand(EsqlBaseParser.ExplainCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitShowInfo(EsqlBaseParser.ShowInfoContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitLookupCommand(EsqlBaseParser.LookupCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@@ -650,60 +706,4 @@ public class EsqlBaseParserBaseVisitor extends AbstractParseTreeVisitor im
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitJoinPredicate(EsqlBaseParser.JoinPredicateContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitInsistCommand(EsqlBaseParser.InsistCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitForkCommand(EsqlBaseParser.ForkCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
- */
- @Override public T visitForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx) { return visitChildren(ctx); }
}
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserListener.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserListener.java
index 4d4fb5b891c5..fc2f46eefd40 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserListener.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserListener.java
@@ -79,6 +79,508 @@ public interface EsqlBaseParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitWhereCommand(EsqlBaseParser.WhereCommandContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code toDataType}
+ * labeled alternative in {@link EsqlBaseParser#dataType}.
+ * @param ctx the parse tree
+ */
+ void enterToDataType(EsqlBaseParser.ToDataTypeContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code toDataType}
+ * labeled alternative in {@link EsqlBaseParser#dataType}.
+ * @param ctx the parse tree
+ */
+ void exitToDataType(EsqlBaseParser.ToDataTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#rowCommand}.
+ * @param ctx the parse tree
+ */
+ void enterRowCommand(EsqlBaseParser.RowCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#rowCommand}.
+ * @param ctx the parse tree
+ */
+ void exitRowCommand(EsqlBaseParser.RowCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#fields}.
+ * @param ctx the parse tree
+ */
+ void enterFields(EsqlBaseParser.FieldsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#fields}.
+ * @param ctx the parse tree
+ */
+ void exitFields(EsqlBaseParser.FieldsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#field}.
+ * @param ctx the parse tree
+ */
+ void enterField(EsqlBaseParser.FieldContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#field}.
+ * @param ctx the parse tree
+ */
+ void exitField(EsqlBaseParser.FieldContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#fromCommand}.
+ * @param ctx the parse tree
+ */
+ void enterFromCommand(EsqlBaseParser.FromCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#fromCommand}.
+ * @param ctx the parse tree
+ */
+ void exitFromCommand(EsqlBaseParser.FromCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#indexPattern}.
+ * @param ctx the parse tree
+ */
+ void enterIndexPattern(EsqlBaseParser.IndexPatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#indexPattern}.
+ * @param ctx the parse tree
+ */
+ void exitIndexPattern(EsqlBaseParser.IndexPatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#clusterString}.
+ * @param ctx the parse tree
+ */
+ void enterClusterString(EsqlBaseParser.ClusterStringContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#clusterString}.
+ * @param ctx the parse tree
+ */
+ void exitClusterString(EsqlBaseParser.ClusterStringContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#indexString}.
+ * @param ctx the parse tree
+ */
+ void enterIndexString(EsqlBaseParser.IndexStringContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#indexString}.
+ * @param ctx the parse tree
+ */
+ void exitIndexString(EsqlBaseParser.IndexStringContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#metadata}.
+ * @param ctx the parse tree
+ */
+ void enterMetadata(EsqlBaseParser.MetadataContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#metadata}.
+ * @param ctx the parse tree
+ */
+ void exitMetadata(EsqlBaseParser.MetadataContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#metricsCommand}.
+ * @param ctx the parse tree
+ */
+ void enterMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#metricsCommand}.
+ * @param ctx the parse tree
+ */
+ void exitMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#evalCommand}.
+ * @param ctx the parse tree
+ */
+ void enterEvalCommand(EsqlBaseParser.EvalCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#evalCommand}.
+ * @param ctx the parse tree
+ */
+ void exitEvalCommand(EsqlBaseParser.EvalCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#statsCommand}.
+ * @param ctx the parse tree
+ */
+ void enterStatsCommand(EsqlBaseParser.StatsCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#statsCommand}.
+ * @param ctx the parse tree
+ */
+ void exitStatsCommand(EsqlBaseParser.StatsCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#aggFields}.
+ * @param ctx the parse tree
+ */
+ void enterAggFields(EsqlBaseParser.AggFieldsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#aggFields}.
+ * @param ctx the parse tree
+ */
+ void exitAggFields(EsqlBaseParser.AggFieldsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#aggField}.
+ * @param ctx the parse tree
+ */
+ void enterAggField(EsqlBaseParser.AggFieldContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#aggField}.
+ * @param ctx the parse tree
+ */
+ void exitAggField(EsqlBaseParser.AggFieldContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#qualifiedName}.
+ * @param ctx the parse tree
+ */
+ void enterQualifiedName(EsqlBaseParser.QualifiedNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#qualifiedName}.
+ * @param ctx the parse tree
+ */
+ void exitQualifiedName(EsqlBaseParser.QualifiedNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#qualifiedNamePattern}.
+ * @param ctx the parse tree
+ */
+ void enterQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#qualifiedNamePattern}.
+ * @param ctx the parse tree
+ */
+ void exitQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#qualifiedNamePatterns}.
+ * @param ctx the parse tree
+ */
+ void enterQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#qualifiedNamePatterns}.
+ * @param ctx the parse tree
+ */
+ void exitQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#identifier}.
+ * @param ctx the parse tree
+ */
+ void enterIdentifier(EsqlBaseParser.IdentifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#identifier}.
+ * @param ctx the parse tree
+ */
+ void exitIdentifier(EsqlBaseParser.IdentifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#identifierPattern}.
+ * @param ctx the parse tree
+ */
+ void enterIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#identifierPattern}.
+ * @param ctx the parse tree
+ */
+ void exitIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code inputParam}
+ * labeled alternative in {@link EsqlBaseParser#parameter}.
+ * @param ctx the parse tree
+ */
+ void enterInputParam(EsqlBaseParser.InputParamContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code inputParam}
+ * labeled alternative in {@link EsqlBaseParser#parameter}.
+ * @param ctx the parse tree
+ */
+ void exitInputParam(EsqlBaseParser.InputParamContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code inputNamedOrPositionalParam}
+ * labeled alternative in {@link EsqlBaseParser#parameter}.
+ * @param ctx the parse tree
+ */
+ void enterInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code inputNamedOrPositionalParam}
+ * labeled alternative in {@link EsqlBaseParser#parameter}.
+ * @param ctx the parse tree
+ */
+ void exitInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#identifierOrParameter}.
+ * @param ctx the parse tree
+ */
+ void enterIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#identifierOrParameter}.
+ * @param ctx the parse tree
+ */
+ void exitIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#limitCommand}.
+ * @param ctx the parse tree
+ */
+ void enterLimitCommand(EsqlBaseParser.LimitCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#limitCommand}.
+ * @param ctx the parse tree
+ */
+ void exitLimitCommand(EsqlBaseParser.LimitCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#sortCommand}.
+ * @param ctx the parse tree
+ */
+ void enterSortCommand(EsqlBaseParser.SortCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#sortCommand}.
+ * @param ctx the parse tree
+ */
+ void exitSortCommand(EsqlBaseParser.SortCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#orderExpression}.
+ * @param ctx the parse tree
+ */
+ void enterOrderExpression(EsqlBaseParser.OrderExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#orderExpression}.
+ * @param ctx the parse tree
+ */
+ void exitOrderExpression(EsqlBaseParser.OrderExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#keepCommand}.
+ * @param ctx the parse tree
+ */
+ void enterKeepCommand(EsqlBaseParser.KeepCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#keepCommand}.
+ * @param ctx the parse tree
+ */
+ void exitKeepCommand(EsqlBaseParser.KeepCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#dropCommand}.
+ * @param ctx the parse tree
+ */
+ void enterDropCommand(EsqlBaseParser.DropCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#dropCommand}.
+ * @param ctx the parse tree
+ */
+ void exitDropCommand(EsqlBaseParser.DropCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#renameCommand}.
+ * @param ctx the parse tree
+ */
+ void enterRenameCommand(EsqlBaseParser.RenameCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#renameCommand}.
+ * @param ctx the parse tree
+ */
+ void exitRenameCommand(EsqlBaseParser.RenameCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#renameClause}.
+ * @param ctx the parse tree
+ */
+ void enterRenameClause(EsqlBaseParser.RenameClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#renameClause}.
+ * @param ctx the parse tree
+ */
+ void exitRenameClause(EsqlBaseParser.RenameClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#dissectCommand}.
+ * @param ctx the parse tree
+ */
+ void enterDissectCommand(EsqlBaseParser.DissectCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#dissectCommand}.
+ * @param ctx the parse tree
+ */
+ void exitDissectCommand(EsqlBaseParser.DissectCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#grokCommand}.
+ * @param ctx the parse tree
+ */
+ void enterGrokCommand(EsqlBaseParser.GrokCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#grokCommand}.
+ * @param ctx the parse tree
+ */
+ void exitGrokCommand(EsqlBaseParser.GrokCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#mvExpandCommand}.
+ * @param ctx the parse tree
+ */
+ void enterMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#mvExpandCommand}.
+ * @param ctx the parse tree
+ */
+ void exitMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#commandOptions}.
+ * @param ctx the parse tree
+ */
+ void enterCommandOptions(EsqlBaseParser.CommandOptionsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#commandOptions}.
+ * @param ctx the parse tree
+ */
+ void exitCommandOptions(EsqlBaseParser.CommandOptionsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#commandOption}.
+ * @param ctx the parse tree
+ */
+ void enterCommandOption(EsqlBaseParser.CommandOptionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#commandOption}.
+ * @param ctx the parse tree
+ */
+ void exitCommandOption(EsqlBaseParser.CommandOptionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#explainCommand}.
+ * @param ctx the parse tree
+ */
+ void enterExplainCommand(EsqlBaseParser.ExplainCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#explainCommand}.
+ * @param ctx the parse tree
+ */
+ void exitExplainCommand(EsqlBaseParser.ExplainCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#subqueryExpression}.
+ * @param ctx the parse tree
+ */
+ void enterSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#subqueryExpression}.
+ * @param ctx the parse tree
+ */
+ void exitSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code showInfo}
+ * labeled alternative in {@link EsqlBaseParser#showCommand}.
+ * @param ctx the parse tree
+ */
+ void enterShowInfo(EsqlBaseParser.ShowInfoContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code showInfo}
+ * labeled alternative in {@link EsqlBaseParser#showCommand}.
+ * @param ctx the parse tree
+ */
+ void exitShowInfo(EsqlBaseParser.ShowInfoContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#enrichCommand}.
+ * @param ctx the parse tree
+ */
+ void enterEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#enrichCommand}.
+ * @param ctx the parse tree
+ */
+ void exitEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#enrichWithClause}.
+ * @param ctx the parse tree
+ */
+ void enterEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#enrichWithClause}.
+ * @param ctx the parse tree
+ */
+ void exitEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#lookupCommand}.
+ * @param ctx the parse tree
+ */
+ void enterLookupCommand(EsqlBaseParser.LookupCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#lookupCommand}.
+ * @param ctx the parse tree
+ */
+ void exitLookupCommand(EsqlBaseParser.LookupCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#inlinestatsCommand}.
+ * @param ctx the parse tree
+ */
+ void enterInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#inlinestatsCommand}.
+ * @param ctx the parse tree
+ */
+ void exitInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#changePointCommand}.
+ * @param ctx the parse tree
+ */
+ void enterChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#changePointCommand}.
+ * @param ctx the parse tree
+ */
+ void exitChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#insistCommand}.
+ * @param ctx the parse tree
+ */
+ void enterInsistCommand(EsqlBaseParser.InsistCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#insistCommand}.
+ * @param ctx the parse tree
+ */
+ void exitInsistCommand(EsqlBaseParser.InsistCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#forkCommand}.
+ * @param ctx the parse tree
+ */
+ void enterForkCommand(EsqlBaseParser.ForkCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#forkCommand}.
+ * @param ctx the parse tree
+ */
+ void exitForkCommand(EsqlBaseParser.ForkCommandContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#forkSubQueries}.
+ * @param ctx the parse tree
+ */
+ void enterForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#forkSubQueries}.
+ * @param ctx the parse tree
+ */
+ void exitForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#forkSubQuery}.
+ * @param ctx the parse tree
+ */
+ void enterForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#forkSubQuery}.
+ * @param ctx the parse tree
+ */
+ void exitForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code singleForkSubQueryCommand}
+ * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
+ * @param ctx the parse tree
+ */
+ void enterSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code singleForkSubQueryCommand}
+ * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
+ * @param ctx the parse tree
+ */
+ void exitSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code compositeForkSubQuery}
+ * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
+ * @param ctx the parse tree
+ */
+ void enterCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code compositeForkSubQuery}
+ * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
+ * @param ctx the parse tree
+ */
+ void exitCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link EsqlBaseParser#forkSubQueryProcessingCommand}.
+ * @param ctx the parse tree
+ */
+ void enterForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx);
+ /**
+ * Exit a parse tree produced by {@link EsqlBaseParser#forkSubQueryProcessingCommand}.
+ * @param ctx the parse tree
+ */
+ void exitForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx);
/**
* Enter a parse tree produced by the {@code matchExpression}
* labeled alternative in {@link EsqlBaseParser#booleanExpression}.
@@ -343,198 +845,6 @@ public interface EsqlBaseParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitEntryExpression(EsqlBaseParser.EntryExpressionContext ctx);
- /**
- * Enter a parse tree produced by the {@code toDataType}
- * labeled alternative in {@link EsqlBaseParser#dataType}.
- * @param ctx the parse tree
- */
- void enterToDataType(EsqlBaseParser.ToDataTypeContext ctx);
- /**
- * Exit a parse tree produced by the {@code toDataType}
- * labeled alternative in {@link EsqlBaseParser#dataType}.
- * @param ctx the parse tree
- */
- void exitToDataType(EsqlBaseParser.ToDataTypeContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#rowCommand}.
- * @param ctx the parse tree
- */
- void enterRowCommand(EsqlBaseParser.RowCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#rowCommand}.
- * @param ctx the parse tree
- */
- void exitRowCommand(EsqlBaseParser.RowCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#fields}.
- * @param ctx the parse tree
- */
- void enterFields(EsqlBaseParser.FieldsContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#fields}.
- * @param ctx the parse tree
- */
- void exitFields(EsqlBaseParser.FieldsContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#field}.
- * @param ctx the parse tree
- */
- void enterField(EsqlBaseParser.FieldContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#field}.
- * @param ctx the parse tree
- */
- void exitField(EsqlBaseParser.FieldContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#fromCommand}.
- * @param ctx the parse tree
- */
- void enterFromCommand(EsqlBaseParser.FromCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#fromCommand}.
- * @param ctx the parse tree
- */
- void exitFromCommand(EsqlBaseParser.FromCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#indexPattern}.
- * @param ctx the parse tree
- */
- void enterIndexPattern(EsqlBaseParser.IndexPatternContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#indexPattern}.
- * @param ctx the parse tree
- */
- void exitIndexPattern(EsqlBaseParser.IndexPatternContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#clusterString}.
- * @param ctx the parse tree
- */
- void enterClusterString(EsqlBaseParser.ClusterStringContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#clusterString}.
- * @param ctx the parse tree
- */
- void exitClusterString(EsqlBaseParser.ClusterStringContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#indexString}.
- * @param ctx the parse tree
- */
- void enterIndexString(EsqlBaseParser.IndexStringContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#indexString}.
- * @param ctx the parse tree
- */
- void exitIndexString(EsqlBaseParser.IndexStringContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#metadata}.
- * @param ctx the parse tree
- */
- void enterMetadata(EsqlBaseParser.MetadataContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#metadata}.
- * @param ctx the parse tree
- */
- void exitMetadata(EsqlBaseParser.MetadataContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#metricsCommand}.
- * @param ctx the parse tree
- */
- void enterMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#metricsCommand}.
- * @param ctx the parse tree
- */
- void exitMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#evalCommand}.
- * @param ctx the parse tree
- */
- void enterEvalCommand(EsqlBaseParser.EvalCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#evalCommand}.
- * @param ctx the parse tree
- */
- void exitEvalCommand(EsqlBaseParser.EvalCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#statsCommand}.
- * @param ctx the parse tree
- */
- void enterStatsCommand(EsqlBaseParser.StatsCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#statsCommand}.
- * @param ctx the parse tree
- */
- void exitStatsCommand(EsqlBaseParser.StatsCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#aggFields}.
- * @param ctx the parse tree
- */
- void enterAggFields(EsqlBaseParser.AggFieldsContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#aggFields}.
- * @param ctx the parse tree
- */
- void exitAggFields(EsqlBaseParser.AggFieldsContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#aggField}.
- * @param ctx the parse tree
- */
- void enterAggField(EsqlBaseParser.AggFieldContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#aggField}.
- * @param ctx the parse tree
- */
- void exitAggField(EsqlBaseParser.AggFieldContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#qualifiedName}.
- * @param ctx the parse tree
- */
- void enterQualifiedName(EsqlBaseParser.QualifiedNameContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#qualifiedName}.
- * @param ctx the parse tree
- */
- void exitQualifiedName(EsqlBaseParser.QualifiedNameContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#qualifiedNamePattern}.
- * @param ctx the parse tree
- */
- void enterQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#qualifiedNamePattern}.
- * @param ctx the parse tree
- */
- void exitQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#qualifiedNamePatterns}.
- * @param ctx the parse tree
- */
- void enterQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#qualifiedNamePatterns}.
- * @param ctx the parse tree
- */
- void exitQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#identifier}.
- * @param ctx the parse tree
- */
- void enterIdentifier(EsqlBaseParser.IdentifierContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#identifier}.
- * @param ctx the parse tree
- */
- void exitIdentifier(EsqlBaseParser.IdentifierContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#identifierPattern}.
- * @param ctx the parse tree
- */
- void enterIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#identifierPattern}.
- * @param ctx the parse tree
- */
- void exitIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx);
/**
* Enter a parse tree produced by the {@code nullLiteral}
* labeled alternative in {@link EsqlBaseParser#constant}.
@@ -655,160 +965,6 @@ public interface EsqlBaseParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitStringArrayLiteral(EsqlBaseParser.StringArrayLiteralContext ctx);
- /**
- * Enter a parse tree produced by the {@code inputParam}
- * labeled alternative in {@link EsqlBaseParser#parameter}.
- * @param ctx the parse tree
- */
- void enterInputParam(EsqlBaseParser.InputParamContext ctx);
- /**
- * Exit a parse tree produced by the {@code inputParam}
- * labeled alternative in {@link EsqlBaseParser#parameter}.
- * @param ctx the parse tree
- */
- void exitInputParam(EsqlBaseParser.InputParamContext ctx);
- /**
- * Enter a parse tree produced by the {@code inputNamedOrPositionalParam}
- * labeled alternative in {@link EsqlBaseParser#parameter}.
- * @param ctx the parse tree
- */
- void enterInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx);
- /**
- * Exit a parse tree produced by the {@code inputNamedOrPositionalParam}
- * labeled alternative in {@link EsqlBaseParser#parameter}.
- * @param ctx the parse tree
- */
- void exitInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#identifierOrParameter}.
- * @param ctx the parse tree
- */
- void enterIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#identifierOrParameter}.
- * @param ctx the parse tree
- */
- void exitIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#limitCommand}.
- * @param ctx the parse tree
- */
- void enterLimitCommand(EsqlBaseParser.LimitCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#limitCommand}.
- * @param ctx the parse tree
- */
- void exitLimitCommand(EsqlBaseParser.LimitCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#sortCommand}.
- * @param ctx the parse tree
- */
- void enterSortCommand(EsqlBaseParser.SortCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#sortCommand}.
- * @param ctx the parse tree
- */
- void exitSortCommand(EsqlBaseParser.SortCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#orderExpression}.
- * @param ctx the parse tree
- */
- void enterOrderExpression(EsqlBaseParser.OrderExpressionContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#orderExpression}.
- * @param ctx the parse tree
- */
- void exitOrderExpression(EsqlBaseParser.OrderExpressionContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#keepCommand}.
- * @param ctx the parse tree
- */
- void enterKeepCommand(EsqlBaseParser.KeepCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#keepCommand}.
- * @param ctx the parse tree
- */
- void exitKeepCommand(EsqlBaseParser.KeepCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#dropCommand}.
- * @param ctx the parse tree
- */
- void enterDropCommand(EsqlBaseParser.DropCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#dropCommand}.
- * @param ctx the parse tree
- */
- void exitDropCommand(EsqlBaseParser.DropCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#renameCommand}.
- * @param ctx the parse tree
- */
- void enterRenameCommand(EsqlBaseParser.RenameCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#renameCommand}.
- * @param ctx the parse tree
- */
- void exitRenameCommand(EsqlBaseParser.RenameCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#renameClause}.
- * @param ctx the parse tree
- */
- void enterRenameClause(EsqlBaseParser.RenameClauseContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#renameClause}.
- * @param ctx the parse tree
- */
- void exitRenameClause(EsqlBaseParser.RenameClauseContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#dissectCommand}.
- * @param ctx the parse tree
- */
- void enterDissectCommand(EsqlBaseParser.DissectCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#dissectCommand}.
- * @param ctx the parse tree
- */
- void exitDissectCommand(EsqlBaseParser.DissectCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#grokCommand}.
- * @param ctx the parse tree
- */
- void enterGrokCommand(EsqlBaseParser.GrokCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#grokCommand}.
- * @param ctx the parse tree
- */
- void exitGrokCommand(EsqlBaseParser.GrokCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#mvExpandCommand}.
- * @param ctx the parse tree
- */
- void enterMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#mvExpandCommand}.
- * @param ctx the parse tree
- */
- void exitMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#commandOptions}.
- * @param ctx the parse tree
- */
- void enterCommandOptions(EsqlBaseParser.CommandOptionsContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#commandOptions}.
- * @param ctx the parse tree
- */
- void exitCommandOptions(EsqlBaseParser.CommandOptionsContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#commandOption}.
- * @param ctx the parse tree
- */
- void enterCommandOption(EsqlBaseParser.CommandOptionContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#commandOption}.
- * @param ctx the parse tree
- */
- void exitCommandOption(EsqlBaseParser.CommandOptionContext ctx);
/**
* Enter a parse tree produced by {@link EsqlBaseParser#booleanValue}.
* @param ctx the parse tree
@@ -869,78 +1025,6 @@ public interface EsqlBaseParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitComparisonOperator(EsqlBaseParser.ComparisonOperatorContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#explainCommand}.
- * @param ctx the parse tree
- */
- void enterExplainCommand(EsqlBaseParser.ExplainCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#explainCommand}.
- * @param ctx the parse tree
- */
- void exitExplainCommand(EsqlBaseParser.ExplainCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#subqueryExpression}.
- * @param ctx the parse tree
- */
- void enterSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#subqueryExpression}.
- * @param ctx the parse tree
- */
- void exitSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx);
- /**
- * Enter a parse tree produced by the {@code showInfo}
- * labeled alternative in {@link EsqlBaseParser#showCommand}.
- * @param ctx the parse tree
- */
- void enterShowInfo(EsqlBaseParser.ShowInfoContext ctx);
- /**
- * Exit a parse tree produced by the {@code showInfo}
- * labeled alternative in {@link EsqlBaseParser#showCommand}.
- * @param ctx the parse tree
- */
- void exitShowInfo(EsqlBaseParser.ShowInfoContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#enrichCommand}.
- * @param ctx the parse tree
- */
- void enterEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#enrichCommand}.
- * @param ctx the parse tree
- */
- void exitEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#enrichWithClause}.
- * @param ctx the parse tree
- */
- void enterEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#enrichWithClause}.
- * @param ctx the parse tree
- */
- void exitEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#lookupCommand}.
- * @param ctx the parse tree
- */
- void enterLookupCommand(EsqlBaseParser.LookupCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#lookupCommand}.
- * @param ctx the parse tree
- */
- void exitLookupCommand(EsqlBaseParser.LookupCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#inlinestatsCommand}.
- * @param ctx the parse tree
- */
- void enterInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#inlinestatsCommand}.
- * @param ctx the parse tree
- */
- void exitInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx);
/**
* Enter a parse tree produced by {@link EsqlBaseParser#joinCommand}.
* @param ctx the parse tree
@@ -981,88 +1065,4 @@ public interface EsqlBaseParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitJoinPredicate(EsqlBaseParser.JoinPredicateContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#changePointCommand}.
- * @param ctx the parse tree
- */
- void enterChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#changePointCommand}.
- * @param ctx the parse tree
- */
- void exitChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#insistCommand}.
- * @param ctx the parse tree
- */
- void enterInsistCommand(EsqlBaseParser.InsistCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#insistCommand}.
- * @param ctx the parse tree
- */
- void exitInsistCommand(EsqlBaseParser.InsistCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#forkCommand}.
- * @param ctx the parse tree
- */
- void enterForkCommand(EsqlBaseParser.ForkCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#forkCommand}.
- * @param ctx the parse tree
- */
- void exitForkCommand(EsqlBaseParser.ForkCommandContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#forkSubQueries}.
- * @param ctx the parse tree
- */
- void enterForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#forkSubQueries}.
- * @param ctx the parse tree
- */
- void exitForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#forkSubQuery}.
- * @param ctx the parse tree
- */
- void enterForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#forkSubQuery}.
- * @param ctx the parse tree
- */
- void exitForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx);
- /**
- * Enter a parse tree produced by the {@code singleForkSubQueryCommand}
- * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
- * @param ctx the parse tree
- */
- void enterSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx);
- /**
- * Exit a parse tree produced by the {@code singleForkSubQueryCommand}
- * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
- * @param ctx the parse tree
- */
- void exitSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx);
- /**
- * Enter a parse tree produced by the {@code compositeForkSubQuery}
- * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
- * @param ctx the parse tree
- */
- void enterCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx);
- /**
- * Exit a parse tree produced by the {@code compositeForkSubQuery}
- * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
- * @param ctx the parse tree
- */
- void exitCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx);
- /**
- * Enter a parse tree produced by {@link EsqlBaseParser#forkSubQueryProcessingCommand}.
- * @param ctx the parse tree
- */
- void enterForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx);
- /**
- * Exit a parse tree produced by {@link EsqlBaseParser#forkSubQueryProcessingCommand}.
- * @param ctx the parse tree
- */
- void exitForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx);
}
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserVisitor.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserVisitor.java
index 15639e19ee3c..dc11d36e0090 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserVisitor.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserVisitor.java
@@ -56,6 +56,306 @@ public interface EsqlBaseParserVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitWhereCommand(EsqlBaseParser.WhereCommandContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code toDataType}
+ * labeled alternative in {@link EsqlBaseParser#dataType}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitToDataType(EsqlBaseParser.ToDataTypeContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#rowCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitRowCommand(EsqlBaseParser.RowCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#fields}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitFields(EsqlBaseParser.FieldsContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#field}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitField(EsqlBaseParser.FieldContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#fromCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitFromCommand(EsqlBaseParser.FromCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#indexPattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitIndexPattern(EsqlBaseParser.IndexPatternContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#clusterString}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitClusterString(EsqlBaseParser.ClusterStringContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#indexString}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitIndexString(EsqlBaseParser.IndexStringContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#metadata}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitMetadata(EsqlBaseParser.MetadataContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#metricsCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#evalCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitEvalCommand(EsqlBaseParser.EvalCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#statsCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitStatsCommand(EsqlBaseParser.StatsCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#aggFields}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitAggFields(EsqlBaseParser.AggFieldsContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#aggField}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitAggField(EsqlBaseParser.AggFieldContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#qualifiedName}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitQualifiedName(EsqlBaseParser.QualifiedNameContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#qualifiedNamePattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#qualifiedNamePatterns}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#identifier}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitIdentifier(EsqlBaseParser.IdentifierContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#identifierPattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code inputParam}
+ * labeled alternative in {@link EsqlBaseParser#parameter}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitInputParam(EsqlBaseParser.InputParamContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code inputNamedOrPositionalParam}
+ * labeled alternative in {@link EsqlBaseParser#parameter}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#identifierOrParameter}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#limitCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitLimitCommand(EsqlBaseParser.LimitCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#sortCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitSortCommand(EsqlBaseParser.SortCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#orderExpression}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOrderExpression(EsqlBaseParser.OrderExpressionContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#keepCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitKeepCommand(EsqlBaseParser.KeepCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#dropCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitDropCommand(EsqlBaseParser.DropCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#renameCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitRenameCommand(EsqlBaseParser.RenameCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#renameClause}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitRenameClause(EsqlBaseParser.RenameClauseContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#dissectCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitDissectCommand(EsqlBaseParser.DissectCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#grokCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitGrokCommand(EsqlBaseParser.GrokCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#mvExpandCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#commandOptions}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitCommandOptions(EsqlBaseParser.CommandOptionsContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#commandOption}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitCommandOption(EsqlBaseParser.CommandOptionContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#explainCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitExplainCommand(EsqlBaseParser.ExplainCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#subqueryExpression}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code showInfo}
+ * labeled alternative in {@link EsqlBaseParser#showCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitShowInfo(EsqlBaseParser.ShowInfoContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#enrichCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#enrichWithClause}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#lookupCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitLookupCommand(EsqlBaseParser.LookupCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#inlinestatsCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#changePointCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#insistCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitInsistCommand(EsqlBaseParser.InsistCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#forkCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitForkCommand(EsqlBaseParser.ForkCommandContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#forkSubQueries}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#forkSubQuery}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code singleForkSubQueryCommand}
+ * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code compositeForkSubQuery}
+ * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx);
+ /**
+ * Visit a parse tree produced by {@link EsqlBaseParser#forkSubQueryProcessingCommand}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx);
/**
* Visit a parse tree produced by the {@code matchExpression}
* labeled alternative in {@link EsqlBaseParser#booleanExpression}.
@@ -211,121 +511,6 @@ public interface EsqlBaseParserVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitEntryExpression(EsqlBaseParser.EntryExpressionContext ctx);
- /**
- * Visit a parse tree produced by the {@code toDataType}
- * labeled alternative in {@link EsqlBaseParser#dataType}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitToDataType(EsqlBaseParser.ToDataTypeContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#rowCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitRowCommand(EsqlBaseParser.RowCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#fields}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitFields(EsqlBaseParser.FieldsContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#field}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitField(EsqlBaseParser.FieldContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#fromCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitFromCommand(EsqlBaseParser.FromCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#indexPattern}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitIndexPattern(EsqlBaseParser.IndexPatternContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#clusterString}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitClusterString(EsqlBaseParser.ClusterStringContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#indexString}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitIndexString(EsqlBaseParser.IndexStringContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#metadata}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitMetadata(EsqlBaseParser.MetadataContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#metricsCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitMetricsCommand(EsqlBaseParser.MetricsCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#evalCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitEvalCommand(EsqlBaseParser.EvalCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#statsCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitStatsCommand(EsqlBaseParser.StatsCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#aggFields}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitAggFields(EsqlBaseParser.AggFieldsContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#aggField}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitAggField(EsqlBaseParser.AggFieldContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#qualifiedName}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitQualifiedName(EsqlBaseParser.QualifiedNameContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#qualifiedNamePattern}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitQualifiedNamePattern(EsqlBaseParser.QualifiedNamePatternContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#qualifiedNamePatterns}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitQualifiedNamePatterns(EsqlBaseParser.QualifiedNamePatternsContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#identifier}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitIdentifier(EsqlBaseParser.IdentifierContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#identifierPattern}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitIdentifierPattern(EsqlBaseParser.IdentifierPatternContext ctx);
/**
* Visit a parse tree produced by the {@code nullLiteral}
* labeled alternative in {@link EsqlBaseParser#constant}.
@@ -396,98 +581,6 @@ public interface EsqlBaseParserVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitStringArrayLiteral(EsqlBaseParser.StringArrayLiteralContext ctx);
- /**
- * Visit a parse tree produced by the {@code inputParam}
- * labeled alternative in {@link EsqlBaseParser#parameter}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitInputParam(EsqlBaseParser.InputParamContext ctx);
- /**
- * Visit a parse tree produced by the {@code inputNamedOrPositionalParam}
- * labeled alternative in {@link EsqlBaseParser#parameter}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitInputNamedOrPositionalParam(EsqlBaseParser.InputNamedOrPositionalParamContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#identifierOrParameter}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitIdentifierOrParameter(EsqlBaseParser.IdentifierOrParameterContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#limitCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitLimitCommand(EsqlBaseParser.LimitCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#sortCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitSortCommand(EsqlBaseParser.SortCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#orderExpression}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitOrderExpression(EsqlBaseParser.OrderExpressionContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#keepCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitKeepCommand(EsqlBaseParser.KeepCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#dropCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitDropCommand(EsqlBaseParser.DropCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#renameCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitRenameCommand(EsqlBaseParser.RenameCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#renameClause}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitRenameClause(EsqlBaseParser.RenameClauseContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#dissectCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitDissectCommand(EsqlBaseParser.DissectCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#grokCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitGrokCommand(EsqlBaseParser.GrokCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#mvExpandCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitMvExpandCommand(EsqlBaseParser.MvExpandCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#commandOptions}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitCommandOptions(EsqlBaseParser.CommandOptionsContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#commandOption}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitCommandOption(EsqlBaseParser.CommandOptionContext ctx);
/**
* Visit a parse tree produced by {@link EsqlBaseParser#booleanValue}.
* @param ctx the parse tree
@@ -524,49 +617,6 @@ public interface EsqlBaseParserVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitComparisonOperator(EsqlBaseParser.ComparisonOperatorContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#explainCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitExplainCommand(EsqlBaseParser.ExplainCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#subqueryExpression}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitSubqueryExpression(EsqlBaseParser.SubqueryExpressionContext ctx);
- /**
- * Visit a parse tree produced by the {@code showInfo}
- * labeled alternative in {@link EsqlBaseParser#showCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitShowInfo(EsqlBaseParser.ShowInfoContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#enrichCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#enrichWithClause}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitEnrichWithClause(EsqlBaseParser.EnrichWithClauseContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#lookupCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitLookupCommand(EsqlBaseParser.LookupCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#inlinestatsCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitInlinestatsCommand(EsqlBaseParser.InlinestatsCommandContext ctx);
/**
* Visit a parse tree produced by {@link EsqlBaseParser#joinCommand}.
* @param ctx the parse tree
@@ -591,54 +641,4 @@ public interface EsqlBaseParserVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitJoinPredicate(EsqlBaseParser.JoinPredicateContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#changePointCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitChangePointCommand(EsqlBaseParser.ChangePointCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#insistCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitInsistCommand(EsqlBaseParser.InsistCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#forkCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitForkCommand(EsqlBaseParser.ForkCommandContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#forkSubQueries}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitForkSubQueries(EsqlBaseParser.ForkSubQueriesContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#forkSubQuery}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitForkSubQuery(EsqlBaseParser.ForkSubQueryContext ctx);
- /**
- * Visit a parse tree produced by the {@code singleForkSubQueryCommand}
- * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitSingleForkSubQueryCommand(EsqlBaseParser.SingleForkSubQueryCommandContext ctx);
- /**
- * Visit a parse tree produced by the {@code compositeForkSubQuery}
- * labeled alternative in {@link EsqlBaseParser#forkSubQueryCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitCompositeForkSubQuery(EsqlBaseParser.CompositeForkSubQueryContext ctx);
- /**
- * Visit a parse tree produced by {@link EsqlBaseParser#forkSubQueryProcessingCommand}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitForkSubQueryProcessingCommand(EsqlBaseParser.ForkSubQueryProcessingCommandContext ctx);
}
From ad99b0d3e8b22d62b3769db6e440d0cb34b4d473 Mon Sep 17 00:00:00 2001
From: Ryan Ernst
Date: Mon, 24 Feb 2025 11:39:26 -0800
Subject: [PATCH 08/10] Add shared_repo relative dir for files entitlement
(#123221)
This commit adds the shared repo path as a relative base dir. However,
it does not make this available to policy files, only to server.
---
.../bootstrap/EntitlementBootstrap.java | 10 ++++----
.../EntitlementInitialization.java | 17 +++++++------
.../runtime/policy/PathLookup.java | 1 +
.../policy/entitlements/FilesEntitlement.java | 24 ++++++++++++-------
.../runtime/policy/FileAccessTreeTests.java | 1 +
.../runtime/policy/PolicyManagerTests.java | 1 +
.../entitlements/FilesEntitlementTests.java | 1 +
.../bootstrap/Elasticsearch.java | 2 +-
.../org/elasticsearch/env/Environment.java | 2 +-
9 files changed, 37 insertions(+), 22 deletions(-)
diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java
index ae86b69b3de4..4f37362d9325 100644
--- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java
+++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java
@@ -39,8 +39,8 @@ public class EntitlementBootstrap {
Function, String> pluginResolver,
Function settingResolver,
Function> settingGlobResolver,
- Function repoDirResolver,
Path[] dataDirs,
+ Path[] sharedRepoDirs,
Path configDir,
Path libDir,
Path logsDir,
@@ -51,11 +51,11 @@ public class EntitlementBootstrap {
requireNonNull(pluginResolver);
requireNonNull(settingResolver);
requireNonNull(settingGlobResolver);
- requireNonNull(repoDirResolver);
requireNonNull(dataDirs);
if (dataDirs.length == 0) {
throw new IllegalArgumentException("must provide at least one data directory");
}
+ requireNonNull(sharedRepoDirs);
requireNonNull(configDir);
requireNonNull(libDir);
requireNonNull(logsDir);
@@ -77,8 +77,8 @@ public class EntitlementBootstrap {
* @param pluginResolver a functor to map a Java Class to the plugin it belongs to (the plugin name).
* @param settingResolver a functor to resolve the value of an Elasticsearch setting.
* @param settingGlobResolver a functor to resolve a glob expression for one or more Elasticsearch settings.
- * @param repoDirResolver a functor to map a repository location to its Elasticsearch path.
* @param dataDirs data directories for Elasticsearch
+ * @param sharedRepoDirs shared repository directories for Elasticsearch
* @param configDir the config directory for Elasticsearch
* @param libDir the lib directory for Elasticsearch
* @param tempDir the temp directory for Elasticsearch
@@ -89,8 +89,8 @@ public class EntitlementBootstrap {
Function, String> pluginResolver,
Function settingResolver,
Function> settingGlobResolver,
- Function repoDirResolver,
Path[] dataDirs,
+ Path[] sharedRepoDirs,
Path configDir,
Path libDir,
Path logsDir,
@@ -105,8 +105,8 @@ public class EntitlementBootstrap {
pluginResolver,
settingResolver,
settingGlobResolver,
- repoDirResolver,
dataDirs,
+ sharedRepoDirs,
configDir,
libDir,
logsDir,
diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java
index b4d95ceb011e..6c9e12fd984f 100644
--- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java
+++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java
@@ -63,6 +63,8 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
+import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.BaseDir.DATA;
+import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.BaseDir.SHARED_REPO;
import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.Mode.READ;
import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.Mode.READ_WRITE;
@@ -138,6 +140,7 @@ public class EntitlementInitialization {
getUserHome(),
bootstrapArgs.configDir(),
bootstrapArgs.dataDirs(),
+ bootstrapArgs.sharedRepoDirs(),
bootstrapArgs.tempDir(),
bootstrapArgs.settingResolver(),
bootstrapArgs.settingGlobResolver()
@@ -152,8 +155,8 @@ public class EntitlementInitialization {
new CreateClassLoaderEntitlement(),
new FilesEntitlement(
List.of(
- FileData.ofPath(bootstrapArgs.repoDirResolver().apply(""), READ_WRITE),
- FileData.ofRelativePath(Path.of(""), FilesEntitlement.BaseDir.DATA, READ_WRITE)
+ FileData.ofRelativePath(Path.of(""), SHARED_REPO, READ_WRITE),
+ FileData.ofRelativePath(Path.of(""), DATA, READ_WRITE)
)
)
)
@@ -175,8 +178,8 @@ public class EntitlementInitialization {
FileData.ofPath(bootstrapArgs.tempDir(), READ_WRITE),
FileData.ofPath(bootstrapArgs.configDir(), READ),
FileData.ofPath(bootstrapArgs.logsDir(), READ_WRITE),
- FileData.ofRelativePath(Path.of(""), FilesEntitlement.BaseDir.DATA, READ_WRITE),
- FileData.ofPath(bootstrapArgs.repoDirResolver().apply(""), READ_WRITE),
+ FileData.ofRelativePath(Path.of(""), DATA, READ_WRITE),
+ FileData.ofRelativePath(Path.of(""), SHARED_REPO, READ_WRITE),
// OS release on Linux
FileData.ofPath(Path.of("/etc/os-release"), READ),
@@ -210,21 +213,21 @@ public class EntitlementInitialization {
List.of(
FileData.ofPath(bootstrapArgs.configDir(), READ),
FileData.ofPath(bootstrapArgs.tempDir(), READ),
- FileData.ofRelativePath(Path.of(""), FilesEntitlement.BaseDir.DATA, READ_WRITE)
+ FileData.ofRelativePath(Path.of(""), DATA, READ_WRITE)
)
)
)
),
new Scope(
"org.apache.lucene.misc",
- List.of(new FilesEntitlement(List.of(FileData.ofRelativePath(Path.of(""), FilesEntitlement.BaseDir.DATA, READ_WRITE))))
+ List.of(new FilesEntitlement(List.of(FileData.ofRelativePath(Path.of(""), DATA, READ_WRITE))))
),
new Scope("org.apache.logging.log4j.core", List.of(new ManageThreadsEntitlement())),
new Scope(
"org.elasticsearch.nativeaccess",
List.of(
new LoadNativeLibrariesEntitlement(),
- new FilesEntitlement(List.of(FileData.ofRelativePath(Path.of(""), FilesEntitlement.BaseDir.DATA, READ_WRITE)))
+ new FilesEntitlement(List.of(FileData.ofRelativePath(Path.of(""), DATA, READ_WRITE)))
)
)
);
diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PathLookup.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PathLookup.java
index 6f6220e21546..df99eecf0f8c 100644
--- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PathLookup.java
+++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PathLookup.java
@@ -17,6 +17,7 @@ public record PathLookup(
Path homeDir,
Path configDir,
Path[] dataDirs,
+ Path[] sharedRepoDirs,
Path tempDir,
Function settingResolver,
Function> settingGlobResolver
diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java
index 7f356daea832..c34793c5c1ac 100644
--- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java
+++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java
@@ -38,6 +38,7 @@ public record FilesEntitlement(List filesData) implements Entitlement
public enum BaseDir {
CONFIG,
DATA,
+ SHARED_REPO,
HOME
}
@@ -122,14 +123,9 @@ public record FilesEntitlement(List filesData) implements Entitlement
case CONFIG:
return relativePaths.map(relativePath -> pathLookup.configDir().resolve(relativePath));
case DATA:
- // multiple data dirs are a pain...we need the combination of relative paths and data dirs
- List paths = new ArrayList<>();
- for (var relativePath : relativePaths.toList()) {
- for (var dataDir : pathLookup.dataDirs()) {
- paths.add(dataDir.resolve(relativePath));
- }
- }
- return paths.stream();
+ return relativePathsCombination(pathLookup.dataDirs(), relativePaths);
+ case SHARED_REPO:
+ return relativePathsCombination(pathLookup.sharedRepoDirs(), relativePaths);
case HOME:
return relativePaths.map(relativePath -> pathLookup.homeDir().resolve(relativePath));
default:
@@ -138,6 +134,17 @@ public record FilesEntitlement(List filesData) implements Entitlement
}
}
+ private static Stream relativePathsCombination(Path[] baseDirs, Stream relativePaths) {
+ // multiple base dirs are a pain...we need the combination of the base dirs and relative paths
+ List paths = new ArrayList<>();
+ for (var relativePath : relativePaths.toList()) {
+ for (var dataDir : baseDirs) {
+ paths.add(dataDir.resolve(relativePath));
+ }
+ }
+ return paths.stream();
+ }
+
private record AbsolutePathFileData(Path path, Mode mode) implements FileData {
@Override
public Stream resolvePaths(PathLookup pathLookup) {
@@ -189,6 +196,7 @@ public record FilesEntitlement(List filesData) implements Entitlement
case "config" -> BaseDir.CONFIG;
case "data" -> BaseDir.DATA;
case "home" -> BaseDir.HOME;
+ // NOTE: shared_repo is _not_ accessible to policy files, only internally
default -> throw new PolicyValidationException(
"invalid relative directory: " + baseDir + ", valid values: [config, data, home]"
);
diff --git a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java
index 5100dde6b2fe..71ec497b9ec1 100644
--- a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java
+++ b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java
@@ -42,6 +42,7 @@ public class FileAccessTreeTests extends ESTestCase {
Path.of("/home"),
Path.of("/config"),
new Path[] { Path.of("/data1"), Path.of("/data2") },
+ new Path[] { Path.of("/shared1"), Path.of("/shared2") },
Path.of("/tmp"),
setting -> settings.get(setting),
glob -> settings.getGlobValues(glob)
diff --git a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyManagerTests.java b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyManagerTests.java
index 2b5700d03e71..c9fade1a4821 100644
--- a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyManagerTests.java
+++ b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyManagerTests.java
@@ -69,6 +69,7 @@ public class PolicyManagerTests extends ESTestCase {
TEST_BASE_DIR.resolve("/user/home"),
TEST_BASE_DIR.resolve("/config"),
new Path[] { TEST_BASE_DIR.resolve("/data1/"), TEST_BASE_DIR.resolve("/data2") },
+ new Path[] { TEST_BASE_DIR.resolve("/shared1"), TEST_BASE_DIR.resolve("/shared2") },
TEST_BASE_DIR.resolve("/temp"),
Settings.EMPTY::get,
Settings.EMPTY::getGlobValues
diff --git a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java
index ceabf686d28f..e0c08d18b8c1 100644
--- a/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java
+++ b/libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java
@@ -40,6 +40,7 @@ public class FilesEntitlementTests extends ESTestCase {
Path.of("home"),
Path.of("/config"),
new Path[] { Path.of("/data1"), Path.of("/data2") },
+ new Path[] { Path.of("/shared1"), Path.of("/shared2") },
Path.of("/tmp"),
setting -> settings.get(setting),
glob -> settings.getGlobValues(glob)
diff --git a/server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java b/server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java
index d495ed59b6d0..3b67b86eff01 100644
--- a/server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java
+++ b/server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java
@@ -247,8 +247,8 @@ class Elasticsearch {
pluginsResolver::resolveClassToPluginName,
nodeEnv.settings()::get,
nodeEnv.settings()::getGlobValues,
- nodeEnv::resolveRepoDir,
nodeEnv.dataDirs(),
+ nodeEnv.repoDirs(),
nodeEnv.configDir(),
nodeEnv.libDir(),
nodeEnv.logsDir(),
diff --git a/server/src/main/java/org/elasticsearch/env/Environment.java b/server/src/main/java/org/elasticsearch/env/Environment.java
index 813da761159c..0134640de408 100644
--- a/server/src/main/java/org/elasticsearch/env/Environment.java
+++ b/server/src/main/java/org/elasticsearch/env/Environment.java
@@ -335,7 +335,7 @@ public class Environment {
*/
public static void assertEquivalent(Environment actual, Environment expected) {
assertEquals(actual.dataDirs(), expected.dataDirs(), "dataDirs");
- assertEquals(actual.repoDirs(), expected.repoDirs(), "repoDirs");
+ assertEquals(actual.repoDirs(), expected.repoDirs(), "sharedRepoDirs");
assertEquals(actual.configDir(), expected.configDir(), "configDir");
assertEquals(actual.pluginsDir(), expected.pluginsDir(), "pluginsDir");
assertEquals(actual.binDir(), expected.binDir(), "binDir");
From 09a3ec1fb37f73227401194ee8eda2141f704442 Mon Sep 17 00:00:00 2001
From: Ryan Ernst
Date: Mon, 24 Feb 2025 14:17:25 -0800
Subject: [PATCH 09/10] Add platform property to files entitlement (#123212)
Some file paths are OS specific. This commit adds a `platform` property
to each file in a files entitlement that can be used to limit that file
to a specific platform.
Co-authored-by: Moritz Mack
Co-authored-by: Lorenzo Dematte
---
.../EntitlementInitialization.java | 21 ++--
.../runtime/policy/FileAccessTree.java | 4 +
.../policy/entitlements/FilesEntitlement.java | 113 ++++++++++++++++--
.../plugin-metadata/entitlement-policy.yaml | 3 +
4 files changed, 119 insertions(+), 22 deletions(-)
diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java
index 6c9e12fd984f..96bf8d3ba6ab 100644
--- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java
+++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java
@@ -67,6 +67,7 @@ import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEnt
import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.BaseDir.SHARED_REPO;
import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.Mode.READ;
import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.Mode.READ_WRITE;
+import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.Platform.LINUX;
/**
* Called by the agent during {@code agentmain} to configure the entitlement system,
@@ -182,22 +183,22 @@ public class EntitlementInitialization {
FileData.ofRelativePath(Path.of(""), SHARED_REPO, READ_WRITE),
// OS release on Linux
- FileData.ofPath(Path.of("/etc/os-release"), READ),
- FileData.ofPath(Path.of("/etc/system-release"), READ),
- FileData.ofPath(Path.of("/usr/lib/os-release"), READ),
+ FileData.ofPath(Path.of("/etc/os-release"), READ).withPlatform(LINUX),
+ FileData.ofPath(Path.of("/etc/system-release"), READ).withPlatform(LINUX),
+ FileData.ofPath(Path.of("/usr/lib/os-release"), READ).withPlatform(LINUX),
// read max virtual memory areas
- FileData.ofPath(Path.of("/proc/sys/vm/max_map_count"), READ),
- FileData.ofPath(Path.of("/proc/meminfo"), READ),
+ FileData.ofPath(Path.of("/proc/sys/vm/max_map_count"), READ).withPlatform(LINUX),
+ FileData.ofPath(Path.of("/proc/meminfo"), READ).withPlatform(LINUX),
// load averages on Linux
- FileData.ofPath(Path.of("/proc/loadavg"), READ),
+ FileData.ofPath(Path.of("/proc/loadavg"), READ).withPlatform(LINUX),
// control group stats on Linux. cgroup v2 stats are in an unpredicable
// location under `/sys/fs/cgroup`, so unfortunately we have to allow
// read access to the entire directory hierarchy.
- FileData.ofPath(Path.of("/proc/self/cgroup"), READ),
- FileData.ofPath(Path.of("/sys/fs/cgroup/"), READ),
+ FileData.ofPath(Path.of("/proc/self/cgroup"), READ).withPlatform(LINUX),
+ FileData.ofPath(Path.of("/sys/fs/cgroup/"), READ).withPlatform(LINUX),
// // io stats on Linux
- FileData.ofPath(Path.of("/proc/self/mountinfo"), READ),
- FileData.ofPath(Path.of("/proc/diskstats"), READ)
+ FileData.ofPath(Path.of("/proc/self/mountinfo"), READ).withPlatform(LINUX),
+ FileData.ofPath(Path.of("/proc/diskstats"), READ).withPlatform(LINUX)
)
)
)
diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTree.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTree.java
index b1773e9a076f..d0eded74556b 100644
--- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTree.java
+++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTree.java
@@ -31,6 +31,10 @@ public final class FileAccessTree {
List readPaths = new ArrayList<>();
List writePaths = new ArrayList<>();
for (FilesEntitlement.FileData fileData : filesEntitlement.filesData()) {
+ var platform = fileData.platform();
+ if (platform != null && platform.isCurrent() == false) {
+ continue;
+ }
var mode = fileData.mode();
var paths = fileData.resolvePaths(pathLookup);
paths.forEach(path -> {
diff --git a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java
index c34793c5c1ac..609e0ed66cfa 100644
--- a/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java
+++ b/libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java
@@ -42,26 +42,55 @@ public record FilesEntitlement(List filesData) implements Entitlement
HOME
}
+ public enum Platform {
+ LINUX,
+ MACOS,
+ WINDOWS;
+
+ private static final Platform current = findCurrent();
+
+ private static Platform findCurrent() {
+ String os = System.getProperty("os.name");
+ if (os.startsWith("Linux")) {
+ return LINUX;
+ } else if (os.startsWith("Mac OS")) {
+ return MACOS;
+ } else if (os.startsWith("Windows")) {
+ return WINDOWS;
+ } else {
+ throw new AssertionError("Unsupported platform [" + os + "]");
+ }
+ }
+
+ public boolean isCurrent() {
+ return this == current;
+ }
+ }
+
public sealed interface FileData {
Stream resolvePaths(PathLookup pathLookup);
Mode mode();
+ Platform platform();
+
+ FileData withPlatform(Platform platform);
+
static FileData ofPath(Path path, Mode mode) {
- return new AbsolutePathFileData(path, mode);
+ return new AbsolutePathFileData(path, mode, null);
}
static FileData ofRelativePath(Path relativePath, BaseDir baseDir, Mode mode) {
- return new RelativePathFileData(relativePath, baseDir, mode);
+ return new RelativePathFileData(relativePath, baseDir, mode, null);
}
static FileData ofPathSetting(String setting, Mode mode) {
- return new PathSettingFileData(setting, mode);
+ return new PathSettingFileData(setting, mode, null);
}
static FileData ofRelativePathSetting(String setting, BaseDir baseDir, Mode mode) {
- return new RelativePathSettingFileData(setting, baseDir, mode);
+ return new RelativePathSettingFileData(setting, baseDir, mode, null);
}
/**
@@ -145,32 +174,70 @@ public record FilesEntitlement(List filesData) implements Entitlement
return paths.stream();
}
- private record AbsolutePathFileData(Path path, Mode mode) implements FileData {
+ private record AbsolutePathFileData(Path path, Mode mode, Platform platform) implements FileData {
@Override
public Stream resolvePaths(PathLookup pathLookup) {
return Stream.of(path);
}
+
+ @Override
+ public FileData withPlatform(Platform platform) {
+ if (platform == platform()) {
+ return this;
+ }
+ return new AbsolutePathFileData(path, mode, platform);
+ }
}
- private record RelativePathFileData(Path relativePath, BaseDir baseDir, Mode mode) implements FileData, RelativeFileData {
+ private record RelativePathFileData(Path relativePath, BaseDir baseDir, Mode mode, Platform platform)
+ implements
+ FileData,
+ RelativeFileData {
@Override
public Stream resolveRelativePaths(PathLookup pathLookup) {
return Stream.of(relativePath);
}
+
+ @Override
+ public FileData withPlatform(Platform platform) {
+ if (platform == platform()) {
+ return this;
+ }
+ return new RelativePathFileData(relativePath, baseDir, mode, platform);
+ }
}
- private record PathSettingFileData(String setting, Mode mode) implements FileData {
+ private record PathSettingFileData(String setting, Mode mode, Platform platform) implements FileData {
@Override
public Stream resolvePaths(PathLookup pathLookup) {
return resolvePathSettings(pathLookup, setting);
}
+
+ @Override
+ public FileData withPlatform(Platform platform) {
+ if (platform == platform()) {
+ return this;
+ }
+ return new PathSettingFileData(setting, mode, platform);
+ }
}
- private record RelativePathSettingFileData(String setting, BaseDir baseDir, Mode mode) implements FileData, RelativeFileData {
+ private record RelativePathSettingFileData(String setting, BaseDir baseDir, Mode mode, Platform platform)
+ implements
+ FileData,
+ RelativeFileData {
@Override
public Stream resolveRelativePaths(PathLookup pathLookup) {
return resolvePathSettings(pathLookup, setting);
}
+
+ @Override
+ public FileData withPlatform(Platform platform) {
+ if (platform == platform()) {
+ return this;
+ }
+ return new RelativePathSettingFileData(setting, baseDir, mode, platform);
+ }
}
private static Stream resolvePathSettings(PathLookup pathLookup, String setting) {
@@ -191,6 +258,18 @@ public record FilesEntitlement(List filesData) implements Entitlement
}
}
+ private static Platform parsePlatform(String platform) {
+ if (platform.equals("linux")) {
+ return Platform.LINUX;
+ } else if (platform.equals("macos")) {
+ return Platform.MACOS;
+ } else if (platform.equals("windows")) {
+ return Platform.WINDOWS;
+ } else {
+ throw new PolicyValidationException("invalid platform: " + platform + ", valid values: [linux, macos, windows]");
+ }
+ }
+
private static BaseDir parseBaseDir(String baseDir) {
return switch (baseDir) {
case "config" -> BaseDir.CONFIG;
@@ -218,6 +297,7 @@ public record FilesEntitlement(List filesData) implements Entitlement
String pathSetting = file.remove("path_setting");
String relativePathSetting = file.remove("relative_path_setting");
String modeAsString = file.remove("mode");
+ String platformAsString = file.remove("platform");
if (file.isEmpty() == false) {
throw new PolicyValidationException("unknown key(s) [" + file + "] in a listed file for files entitlement");
@@ -234,36 +314,45 @@ public record FilesEntitlement(List filesData) implements Entitlement
throw new PolicyValidationException("files entitlement must contain 'mode' for every listed file");
}
Mode mode = parseMode(modeAsString);
+ Platform platform = null;
+ if (platformAsString != null) {
+ platform = parsePlatform(platformAsString);
+ }
BaseDir baseDir = null;
if (relativeTo != null) {
baseDir = parseBaseDir(relativeTo);
}
+ final FileData fileData;
if (relativePathAsString != null) {
if (baseDir == null) {
throw new PolicyValidationException("files entitlement with a 'relative_path' must specify 'relative_to'");
}
+ Path relativePath = Path.of(relativePathAsString);
if (FileData.isAbsolutePath(relativePathAsString)) {
throw new PolicyValidationException("'relative_path' [" + relativePathAsString + "] must be relative");
}
- filesData.add(FileData.ofRelativePath(Path.of(relativePathAsString), baseDir, mode));
+ fileData = FileData.ofRelativePath(relativePath, baseDir, mode);
} else if (pathAsString != null) {
+ Path path = Path.of(pathAsString);
if (FileData.isAbsolutePath(pathAsString) == false) {
throw new PolicyValidationException("'path' [" + pathAsString + "] must be absolute");
}
- filesData.add(FileData.ofPath(Path.of(pathAsString), mode));
+ fileData = FileData.ofPath(path, mode);
} else if (pathSetting != null) {
- filesData.add(FileData.ofPathSetting(pathSetting, mode));
+ fileData = FileData.ofPathSetting(pathSetting, mode);
} else if (relativePathSetting != null) {
if (baseDir == null) {
throw new PolicyValidationException("files entitlement with a 'relative_path_setting' must specify 'relative_to'");
}
- filesData.add(FileData.ofRelativePathSetting(relativePathSetting, baseDir, mode));
+ fileData = FileData.ofRelativePathSetting(relativePathSetting, baseDir, mode);
} else {
throw new AssertionError("File entry validation error");
}
+
+ filesData.add(fileData.withPlatform(platform));
}
return new FilesEntitlement(filesData);
}
diff --git a/x-pack/plugin/ml/src/main/plugin-metadata/entitlement-policy.yaml b/x-pack/plugin/ml/src/main/plugin-metadata/entitlement-policy.yaml
index 664b7d83315d..5fa5ca881391 100644
--- a/x-pack/plugin/ml/src/main/plugin-metadata/entitlement-policy.yaml
+++ b/x-pack/plugin/ml/src/main/plugin-metadata/entitlement-policy.yaml
@@ -7,3 +7,6 @@ org.elasticsearch.ml:
- relative_path: "ml-local-data/"
relative_to: data
mode: read_write
+ - path: \\.\pipe\
+ mode: read_write
+ platform: windows
From 6315b8a8aa2f575aff85df0d030fa33ac51feae4 Mon Sep 17 00:00:00 2001
From: Joe Gallo
Date: Mon, 24 Feb 2025 17:25:25 -0500
Subject: [PATCH 10/10] Register IngestGeoIpMetadata as a NamedXContent
(#123079)
---
docs/changelog/123079.yaml | 5 +
.../qa/full-cluster-restart/build.gradle | 2 +-
.../ingest/geoip/FullClusterRestartIT.java | 240 ++-------------
.../qa/geoip-reindexed/build.gradle | 26 ++
.../ingest/geoip/GeoIpReindexedIT.java | 280 ++++++++++++++++++
.../ingest/geoip/IngestGeoIpMetadata.java | 2 +-
.../ingest/geoip/IngestGeoIpPlugin.java | 5 +
7 files changed, 344 insertions(+), 216 deletions(-)
create mode 100644 docs/changelog/123079.yaml
create mode 100644 modules/ingest-geoip/qa/geoip-reindexed/build.gradle
create mode 100644 modules/ingest-geoip/qa/geoip-reindexed/src/javaRestTest/java/org/elasticsearch/ingest/geoip/GeoIpReindexedIT.java
diff --git a/docs/changelog/123079.yaml b/docs/changelog/123079.yaml
new file mode 100644
index 000000000000..1817415bc897
--- /dev/null
+++ b/docs/changelog/123079.yaml
@@ -0,0 +1,5 @@
+pr: 123079
+summary: Register `IngestGeoIpMetadata` as a NamedXContent
+area: Ingest Node
+type: bug
+issues: []
diff --git a/modules/ingest-geoip/qa/full-cluster-restart/build.gradle b/modules/ingest-geoip/qa/full-cluster-restart/build.gradle
index 71f95a990c6c..35e1514781b9 100644
--- a/modules/ingest-geoip/qa/full-cluster-restart/build.gradle
+++ b/modules/ingest-geoip/qa/full-cluster-restart/build.gradle
@@ -18,7 +18,7 @@ dependencies {
javaRestTestImplementation(testArtifact(project(":qa:full-cluster-restart"), "javaRestTest"))
}
-buildParams.bwcVersions.withWireCompatible(v -> v.before("9.0.0")) { bwcVersion, baseName ->
+buildParams.bwcVersions.withWireCompatible(v -> v.onOrAfter("8.15.0")) { bwcVersion, baseName ->
tasks.register(bwcTaskName(bwcVersion), StandaloneRestIntegTestTask) {
usesBwcDistribution(bwcVersion)
systemProperty("tests.old_cluster_version", bwcVersion)
diff --git a/modules/ingest-geoip/qa/full-cluster-restart/src/javaRestTest/java/org/elasticsearch/ingest/geoip/FullClusterRestartIT.java b/modules/ingest-geoip/qa/full-cluster-restart/src/javaRestTest/java/org/elasticsearch/ingest/geoip/FullClusterRestartIT.java
index 15e85c23bf51..a82b236c01aa 100644
--- a/modules/ingest-geoip/qa/full-cluster-restart/src/javaRestTest/java/org/elasticsearch/ingest/geoip/FullClusterRestartIT.java
+++ b/modules/ingest-geoip/qa/full-cluster-restart/src/javaRestTest/java/org/elasticsearch/ingest/geoip/FullClusterRestartIT.java
@@ -12,36 +12,25 @@ import fixture.geoip.GeoIpHttpFixture;
import com.carrotsearch.randomizedtesting.annotations.Name;
-import org.apache.http.util.EntityUtils;
import org.elasticsearch.client.Request;
-import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.Response;
-import org.elasticsearch.client.WarningsHandler;
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.common.util.concurrent.ThreadContext;
-import org.elasticsearch.core.Nullable;
-import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.test.cluster.ElasticsearchCluster;
import org.elasticsearch.test.cluster.FeatureFlag;
import org.elasticsearch.test.cluster.local.distribution.DistributionType;
import org.elasticsearch.test.cluster.util.Version;
-import org.elasticsearch.test.rest.ObjectPath;
import org.elasticsearch.upgrades.FullClusterRestartUpgradeStatus;
import org.elasticsearch.upgrades.ParameterizedFullClusterRestartTestCase;
import org.junit.ClassRule;
import org.junit.rules.RuleChain;
import org.junit.rules.TestRule;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Base64;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
public class FullClusterRestartIT extends ParameterizedFullClusterRestartTestCase {
@@ -50,29 +39,16 @@ public class FullClusterRestartIT extends ParameterizedFullClusterRestartTestCas
private static final GeoIpHttpFixture fixture = new GeoIpHttpFixture(useFixture);
- // e.g. use ./gradlew -Dtests.jvm.argline="-Dgeoip_test_with_security=false" ":modules:ingest-geoip:qa:full-cluster-restart:check"
- // to set this to false, if you so desire
- private static final boolean useSecurity = Boolean.parseBoolean(System.getProperty("geoip_test_with_security", "true"));
-
private static final ElasticsearchCluster cluster = ElasticsearchCluster.local()
.distribution(DistributionType.DEFAULT)
.version(Version.fromString(OLD_CLUSTER_VERSION))
.nodes(2)
.setting("ingest.geoip.downloader.endpoint", () -> fixture.getAddress(), s -> useFixture)
- .setting("xpack.security.enabled", useSecurity ? "true" : "false")
+ .setting("xpack.security.enabled", "false")
+ // .setting("logger.org.elasticsearch.ingest.geoip", "TRACE")
.feature(FeatureFlag.TIME_SERIES_MODE)
.build();
- @Override
- protected Settings restClientSettings() {
- Settings settings = super.restClientSettings();
- if (useSecurity) {
- String token = "Basic " + Base64.getEncoder().encodeToString("test_user:x-pack-test-password".getBytes(StandardCharsets.UTF_8));
- settings = Settings.builder().put(settings).put(ThreadContext.PREFIX + ".Authorization", token).build();
- }
- return settings;
- }
-
@ClassRule
public static TestRule ruleChain = RuleChain.outerRule(fixture).around(cluster);
@@ -85,196 +61,32 @@ public class FullClusterRestartIT extends ParameterizedFullClusterRestartTestCas
return cluster;
}
- public void testGeoIpSystemFeaturesMigration() throws Exception {
- final List maybeSecurityIndex = useSecurity ? List.of(".security-7") : List.of();
- final List maybeSecurityIndexReindexed = useSecurity ? List.of(".security-7-reindexed-for-10") : List.of();
-
+ @SuppressWarnings("unchecked")
+ public void testGeoIpDatabaseConfigurations() throws Exception {
if (isRunningAgainstOldCluster()) {
- Request enableDownloader = new Request("PUT", "/_cluster/settings");
- enableDownloader.setJsonEntity("""
- {"persistent": {"ingest.geoip.downloader.enabled": true}}
- """);
- assertOK(client().performRequest(enableDownloader));
-
- Request putPipeline = new Request("PUT", "/_ingest/pipeline/geoip");
- putPipeline.setJsonEntity("""
+ Request putConfiguration = new Request("PUT", "_ingest/ip_location/database/my-database-1");
+ putConfiguration.setJsonEntity("""
{
- "description": "Add geoip info",
- "processors": [{
- "geoip": {
- "field": "ip",
- "target_field": "geo",
- "database_file": "GeoLite2-Country.mmdb"
- }
- }]
+ "name": "GeoIP2-Domain",
+ "maxmind": {
+ "account_id": "1234567"
+ }
}
""");
- assertOK(client().performRequest(putPipeline));
-
- // wait for the geo databases to all be loaded
- assertBusy(() -> testDatabasesLoaded(), 30, TimeUnit.SECONDS);
-
- // the geoip index should be created
- assertBusy(() -> testCatIndices(List.of(".geoip_databases"), maybeSecurityIndex));
- assertBusy(() -> testIndexGeoDoc());
-
- // before the upgrade, Kibana should work
- assertBusy(() -> testGetStarAsKibana(List.of("my-index-00001"), maybeSecurityIndex));
-
- // as should a normal get *
- assertBusy(() -> testGetStar(List.of("my-index-00001"), maybeSecurityIndex));
-
- // and getting data streams
- assertBusy(() -> testGetDatastreams());
- } else {
- // after the upgrade, but before the migration, Kibana should work
- assertBusy(() -> testGetStarAsKibana(List.of("my-index-00001"), maybeSecurityIndex));
-
- // as should a normal get *
- assertBusy(() -> testGetStar(List.of("my-index-00001"), maybeSecurityIndex));
-
- // and getting data streams
- assertBusy(() -> testGetDatastreams());
-
- // migrate the system features and give the cluster a moment to settle
- Request migrateSystemFeatures = new Request("POST", "/_migration/system_features");
- assertOK(client().performRequest(migrateSystemFeatures));
- ensureHealth(request -> request.addParameter("wait_for_status", "yellow"));
-
- assertBusy(() -> testCatIndices(List.of(".geoip_databases-reindexed-for-10", "my-index-00001"), maybeSecurityIndexReindexed));
- assertBusy(() -> testIndexGeoDoc());
-
- // after the migration, Kibana should work
- assertBusy(() -> testGetStarAsKibana(List.of("my-index-00001"), maybeSecurityIndexReindexed));
-
- // as should a normal get *
- assertBusy(() -> testGetStar(List.of("my-index-00001"), maybeSecurityIndexReindexed));
-
- // and getting data streams
- assertBusy(() -> testGetDatastreams());
-
- Request disableDownloader = new Request("PUT", "/_cluster/settings");
- disableDownloader.setJsonEntity("""
- {"persistent": {"ingest.geoip.downloader.enabled": false}}
- """);
- assertOK(client().performRequest(disableDownloader));
-
- // the geoip index should be deleted
- assertBusy(() -> testCatIndices(List.of("my-index-00001"), maybeSecurityIndexReindexed));
-
- Request enableDownloader = new Request("PUT", "/_cluster/settings");
- enableDownloader.setJsonEntity("""
- {"persistent": {"ingest.geoip.downloader.enabled": true}}
- """);
- assertOK(client().performRequest(enableDownloader));
-
- // wait for the geo databases to all be loaded
- assertBusy(() -> testDatabasesLoaded(), 30, TimeUnit.SECONDS);
-
- // the geoip index should be recreated
- assertBusy(() -> testCatIndices(List.of(".geoip_databases", "my-index-00001"), maybeSecurityIndexReindexed));
- assertBusy(() -> testIndexGeoDoc());
- }
- }
-
- @SuppressWarnings("unchecked")
- private void testDatabasesLoaded() throws IOException {
- Request getTaskState = new Request("GET", "/_cluster/state");
- ObjectPath state = ObjectPath.createFromResponse(assertOK(client().performRequest(getTaskState)));
-
- List> tasks = state.evaluate("metadata.persistent_tasks.tasks");
- // Short-circuit to avoid using steams if the list is empty
- if (tasks.isEmpty()) {
- fail();
- }
- Map databases = (Map) tasks.stream().map(task -> {
- try {
- return ObjectPath.evaluate(task, "task.geoip-downloader.state.databases");
- } catch (IOException e) {
- return null;
- }
- }).filter(Objects::nonNull).findFirst().orElse(null);
-
- assertNotNull(databases);
-
- for (String name : List.of("GeoLite2-ASN.mmdb", "GeoLite2-City.mmdb", "GeoLite2-Country.mmdb")) {
- Object database = databases.get(name);
- assertNotNull(database);
- assertNotNull(ObjectPath.evaluate(database, "md5"));
- }
- }
-
- private void testCatIndices(List indexNames, @Nullable List additionalIndexNames) throws IOException {
- Request catIndices = new Request("GET", "_cat/indices/*?s=index&h=index&expand_wildcards=all");
- // the cat APIs can sometimes 404, erroneously
- // see https://github.com/elastic/elasticsearch/issues/104371
- setIgnoredErrorResponseCodes(catIndices, RestStatus.NOT_FOUND);
- String response = EntityUtils.toString(assertOK(client().performRequest(catIndices)).getEntity());
- List indices = List.of(response.trim().split("\\s+"));
-
- if (additionalIndexNames != null && additionalIndexNames.isEmpty() == false) {
- indexNames = new ArrayList<>(indexNames); // recopy into a mutable list
- indexNames.addAll(additionalIndexNames);
+ assertOK(client().performRequest(putConfiguration));
}
- assertThat(new HashSet<>(indices), is(new HashSet<>(indexNames)));
- }
-
- private void testIndexGeoDoc() throws IOException {
- Request putDoc = new Request("PUT", "/my-index-00001/_doc/my_id?pipeline=geoip");
- putDoc.setJsonEntity("""
- {"ip": "89.160.20.128"}
- """);
- assertOK(client().performRequest(putDoc));
-
- Request getDoc = new Request("GET", "/my-index-00001/_doc/my_id");
- ObjectPath doc = ObjectPath.createFromResponse(assertOK(client().performRequest(getDoc)));
- assertNull(doc.evaluate("_source.tags"));
- assertEquals("Sweden", doc.evaluate("_source.geo.country_name"));
- }
-
- private void testGetStar(List indexNames, @Nullable List additionalIndexNames) throws IOException {
- Request getStar = new Request("GET", "*?expand_wildcards=all");
- getStar.setOptions(
- RequestOptions.DEFAULT.toBuilder().setWarningsHandler(WarningsHandler.PERMISSIVE) // we don't care about warnings, just errors
- );
- Response response = assertOK(client().performRequest(getStar));
-
- if (additionalIndexNames != null && additionalIndexNames.isEmpty() == false) {
- indexNames = new ArrayList<>(indexNames); // recopy into a mutable list
- indexNames.addAll(additionalIndexNames);
- }
-
- Map map = responseAsMap(response);
- assertThat(map.keySet(), is(new HashSet<>(indexNames)));
- }
-
- private void testGetStarAsKibana(List indexNames, @Nullable List additionalIndexNames) throws IOException {
- Request getStar = new Request("GET", "*?expand_wildcards=all");
- getStar.setOptions(
- RequestOptions.DEFAULT.toBuilder()
- .addHeader("X-elastic-product-origin", "kibana")
- .setWarningsHandler(WarningsHandler.PERMISSIVE) // we don't care about warnings, just errors
- );
- Response response = assertOK(client().performRequest(getStar));
-
- if (additionalIndexNames != null && additionalIndexNames.isEmpty() == false) {
- indexNames = new ArrayList<>(indexNames); // recopy into a mutable list
- indexNames.addAll(additionalIndexNames);
- }
-
- Map map = responseAsMap(response);
- assertThat(map.keySet(), is(new HashSet<>(indexNames)));
- }
-
- private void testGetDatastreams() throws IOException {
- Request getStar = new Request("GET", "_data_stream");
- getStar.setOptions(
- RequestOptions.DEFAULT.toBuilder().setWarningsHandler(WarningsHandler.PERMISSIVE) // we don't care about warnings, just errors
- );
- Response response = client().performRequest(getStar);
- assertOK(response);
-
- // note: we don't actually care about the response, just that there was one and that it didn't error out on us
+ assertBusy(() -> {
+ Request getConfiguration = new Request("GET", "_ingest/ip_location/database/my-database-1");
+ Response response = assertOK(client().performRequest(getConfiguration));
+ Map map = responseAsMap(response);
+ assertThat(map.keySet(), equalTo(Set.of("databases")));
+ List