# Generated from XplorMRParser.g4 by ANTLR 4.10.1
# encoding: utf-8
from antlr4 import *
from io import StringIO
import sys
if sys.version_info[1] > 5:
	from typing import TextIO
else:
	from typing.io import TextIO

def serializedATN():
    return [
        4,1,287,2901,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,1,0,
        1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
        1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
        1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
        1,0,1,0,1,0,5,0,293,8,0,10,0,12,0,296,9,0,1,0,1,0,1,1,1,1,5,1,302,
        8,1,10,1,12,1,305,9,1,1,1,1,1,1,2,3,2,310,8,2,1,2,1,2,5,2,314,8,
        2,10,2,12,2,317,9,2,1,2,1,2,1,3,1,3,5,3,323,8,3,10,3,12,3,326,9,
        3,1,3,1,3,1,3,5,3,331,8,3,10,3,12,3,334,9,3,1,3,1,3,1,3,5,3,339,
        8,3,10,3,12,3,342,9,3,1,3,1,3,1,3,5,3,347,8,3,10,3,12,3,350,9,3,
        1,3,1,3,1,3,5,3,355,8,3,10,3,12,3,358,9,3,1,3,3,3,361,8,3,1,4,3,
        4,364,8,4,1,4,1,4,5,4,368,8,4,10,4,12,4,371,9,4,1,4,1,4,1,5,3,5,
        376,8,5,1,5,1,5,5,5,380,8,5,10,5,12,5,383,9,5,1,5,1,5,1,6,1,6,5,
        6,389,8,6,10,6,12,6,392,9,6,1,6,1,6,1,7,1,7,5,7,398,8,7,10,7,12,
        7,401,9,7,1,7,1,7,1,8,1,8,5,8,407,8,8,10,8,12,8,410,9,8,1,8,1,8,
        1,9,1,9,5,9,416,8,9,10,9,12,9,419,9,9,1,9,1,9,1,10,1,10,5,10,425,
        8,10,10,10,12,10,428,9,10,1,10,1,10,1,11,1,11,5,11,434,8,11,10,11,
        12,11,437,9,11,1,11,1,11,1,12,1,12,5,12,443,8,12,10,12,12,12,446,
        9,12,1,12,1,12,1,13,1,13,5,13,452,8,13,10,13,12,13,455,9,13,1,13,
        1,13,1,14,1,14,5,14,461,8,14,10,14,12,14,464,9,14,1,14,1,14,1,15,
        1,15,5,15,470,8,15,10,15,12,15,473,9,15,1,15,1,15,1,16,1,16,5,16,
        479,8,16,10,16,12,16,482,9,16,1,16,1,16,1,17,1,17,5,17,488,8,17,
        10,17,12,17,491,9,17,1,17,1,17,1,18,1,18,5,18,497,8,18,10,18,12,
        18,500,9,18,1,18,1,18,1,19,1,19,5,19,506,8,19,10,19,12,19,509,9,
        19,1,19,1,19,1,20,1,20,5,20,515,8,20,10,20,12,20,518,9,20,1,20,1,
        20,1,21,1,21,5,21,524,8,21,10,21,12,21,527,9,21,1,21,1,21,1,22,1,
        22,5,22,533,8,22,10,22,12,22,536,9,22,1,22,1,22,1,23,1,23,5,23,542,
        8,23,10,23,12,23,545,9,23,1,23,1,23,1,24,1,24,5,24,551,8,24,10,24,
        12,24,554,9,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,
        1,25,1,25,1,25,1,25,1,25,3,25,571,8,25,1,25,1,25,1,25,3,25,576,8,
        25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,
        25,1,25,1,25,3,25,593,8,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,
        25,1,25,1,25,1,25,3,25,606,8,25,1,25,1,25,1,25,1,25,1,25,1,25,1,
        25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,
        25,1,25,1,25,3,25,630,8,25,1,25,3,25,633,8,25,1,26,1,26,1,26,1,26,
        1,26,3,26,640,8,26,1,26,3,26,643,8,26,1,26,5,26,646,8,26,10,26,12,
        26,649,9,26,1,26,1,26,3,26,653,8,26,1,26,1,26,1,26,3,26,658,8,26,
        1,26,3,26,661,8,26,1,26,3,26,664,8,26,5,26,666,8,26,10,26,12,26,
        669,9,26,1,27,1,27,3,27,673,8,27,1,27,1,27,1,27,3,27,678,8,27,1,
        27,1,27,1,27,1,27,1,27,3,27,685,8,27,1,28,1,28,3,28,689,8,28,1,28,
        1,28,1,28,3,28,694,8,28,1,28,1,28,1,28,3,28,699,8,28,1,28,1,28,1,
        28,3,28,704,8,28,1,28,1,28,1,28,3,28,709,8,28,1,28,1,28,1,28,3,28,
        714,8,28,1,28,1,28,1,28,3,28,719,8,28,1,28,3,28,722,8,28,1,29,1,
        29,1,29,1,29,3,29,728,8,29,1,29,1,29,1,29,1,29,3,29,734,8,29,1,29,
        3,29,737,8,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,
        1,31,1,31,1,31,1,31,3,31,753,8,31,1,31,1,31,1,31,1,31,1,31,1,31,
        1,31,1,31,3,31,763,8,31,1,31,1,31,1,31,3,31,768,8,31,1,31,1,31,1,
        31,1,31,1,31,1,31,1,31,3,31,777,8,31,1,32,1,32,1,32,1,32,1,32,1,
        32,1,32,1,32,1,32,3,32,788,8,32,1,32,3,32,791,8,32,1,33,1,33,1,33,
        3,33,796,8,33,1,33,1,33,1,33,1,33,1,33,3,33,803,8,33,1,33,1,33,1,
        33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,817,8,33,1,
        33,1,33,1,33,3,33,822,8,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,
        33,831,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,1,34,1,34,3,34,848,8,34,1,35,1,35,1,35,3,35,853,8,35,
        1,35,1,35,1,35,3,35,858,8,35,1,35,1,35,1,35,3,35,863,8,35,1,35,1,
        35,1,35,1,35,1,35,3,35,870,8,35,1,35,1,35,1,35,3,35,875,8,35,1,35,
        1,35,1,35,1,35,1,35,3,35,882,8,35,1,36,1,36,1,36,1,36,1,36,1,36,
        1,36,1,36,1,36,1,36,3,36,894,8,36,1,37,1,37,1,37,3,37,899,8,37,1,
        37,1,37,1,37,1,37,1,37,3,37,906,8,37,1,37,1,37,1,37,1,37,1,37,1,
        37,1,37,3,37,915,8,37,1,38,1,38,1,38,1,38,1,38,3,38,922,8,38,1,39,
        1,39,1,39,3,39,927,8,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,
        1,39,3,39,938,8,39,1,39,1,39,1,39,3,39,943,8,39,1,39,1,39,1,39,1,
        39,1,39,1,39,1,39,1,39,1,39,3,39,954,8,39,1,40,1,40,1,40,1,40,1,
        40,1,40,1,40,3,40,963,8,40,1,41,1,41,5,41,967,8,41,10,41,12,41,970,
        9,41,1,41,1,41,3,41,974,8,41,1,42,1,42,3,42,978,8,42,1,42,1,42,1,
        42,3,42,983,8,42,1,42,3,42,986,8,42,1,43,1,43,3,43,990,8,43,1,43,
        1,43,1,43,3,43,995,8,43,1,43,1,43,1,43,3,43,1000,8,43,1,43,1,43,
        3,43,1004,8,43,1,43,1,43,1,43,1,43,3,43,1010,8,43,1,43,1,43,3,43,
        1014,8,43,1,43,1,43,3,43,1018,8,43,1,43,3,43,1021,8,43,3,43,1023,
        8,43,1,43,1,43,3,43,1027,8,43,1,44,1,44,1,44,1,44,1,44,1,44,1,45,
        1,45,1,45,1,45,3,45,1039,8,45,1,45,1,45,1,45,1,45,1,45,1,45,3,45,
        1047,8,45,1,45,1,45,1,45,3,45,1052,8,45,1,45,1,45,1,45,1,45,1,45,
        1,45,1,45,3,45,1061,8,45,1,45,3,45,1064,8,45,1,45,1,45,1,45,1,45,
        1,45,1,45,3,45,1072,8,45,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,
        3,47,1082,8,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,
        1093,8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1101,8,47,1,47,1,47,
        3,47,1105,8,47,1,47,1,47,1,47,3,47,1110,8,47,1,47,1,47,1,47,1,47,
        1,47,1,47,1,47,1,47,1,47,3,47,1121,8,47,1,47,3,47,1124,8,47,1,47,
        3,47,1127,8,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,
        3,48,1139,8,48,1,48,1,48,1,48,1,48,1,48,3,48,1146,8,48,1,49,1,49,
        1,49,3,49,1151,8,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,
        1,49,3,49,1163,8,49,1,49,1,49,1,49,3,49,1168,8,49,1,49,1,49,1,49,
        1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,3,49,1183,8,49,
        1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,
        1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,
        1210,8,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,1220,8,52,
        1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,1230,8,52,1,52,3,52,
        1233,8,52,1,52,1,52,1,52,3,52,1238,8,52,1,53,1,53,1,53,3,53,1243,
        8,53,1,53,1,53,3,53,1247,8,53,1,54,1,54,1,54,1,54,1,55,1,55,1,55,
        1,55,1,55,1,55,3,55,1259,8,55,1,55,1,55,1,56,1,56,1,56,1,57,1,57,
        1,57,1,58,1,58,1,58,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,
        1,60,1,60,3,60,1283,8,60,1,61,1,61,1,61,1,62,1,62,1,62,3,62,1291,
        8,62,1,62,1,62,1,62,1,62,1,62,3,62,1298,8,62,1,62,1,62,1,62,1,62,
        1,62,1,62,1,62,1,62,1,62,3,62,1309,8,62,1,62,1,62,1,62,1,62,3,62,
        1315,8,62,1,62,1,62,1,62,1,62,3,62,1321,8,62,1,62,1,62,3,62,1325,
        8,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,3,62,1336,8,62,
        1,62,1,62,1,62,1,62,3,62,1342,8,62,1,62,1,62,1,62,1,62,3,62,1348,
        8,62,1,62,1,62,1,62,1,62,1,62,1,62,3,62,1356,8,62,1,62,3,62,1359,
        8,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,3,62,1369,8,62,1,62,
        1,62,1,62,1,62,3,62,1375,8,62,1,62,1,62,1,62,1,62,3,62,1381,8,62,
        1,62,1,62,1,62,3,62,1386,8,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,
        3,62,1395,8,62,1,62,3,62,1398,8,62,1,62,3,62,1401,8,62,1,62,1,62,
        3,62,1405,8,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,
        3,63,1417,8,63,1,63,1,63,1,63,1,63,1,63,3,63,1424,8,63,1,63,1,63,
        1,63,1,63,1,63,3,63,1431,8,63,1,64,1,64,1,64,1,64,3,64,1437,8,64,
        1,64,1,64,1,64,3,64,1442,8,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,
        1,66,3,66,1452,8,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,
        1,66,3,66,1464,8,66,1,66,1,66,1,66,3,66,1469,8,66,1,66,1,66,1,66,
        1,66,1,66,1,66,1,66,1,66,1,66,3,66,1480,8,66,1,67,1,67,1,67,1,67,
        1,67,1,67,1,67,1,67,1,67,3,67,1491,8,67,1,68,1,68,1,68,3,68,1496,
        8,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,1505,8,68,1,68,1,68,
        1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,
        1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,1531,8,68,1,68,
        1,68,1,68,1,68,1,68,1,68,1,68,3,68,1540,8,68,1,68,3,68,1543,8,68,
        1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,
        1,68,1,68,1,68,1,68,3,68,1562,8,68,1,69,1,69,1,69,1,69,1,69,1,69,
        1,70,1,70,1,70,1,70,3,70,1574,8,70,1,70,1,70,1,70,3,70,1579,8,70,
        1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,
        1,70,1,70,3,70,1596,8,70,1,70,1,70,1,70,3,70,1601,8,70,1,70,1,70,
        1,70,1,70,1,70,1,70,1,70,3,70,1610,8,70,1,71,1,71,1,71,1,71,1,71,
        1,71,1,71,1,71,1,71,1,71,3,71,1622,8,71,1,71,3,71,1625,8,71,1,72,
        1,72,1,72,3,72,1630,8,72,1,72,1,72,1,72,3,72,1635,8,72,1,72,1,72,
        1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,
        1651,8,72,1,72,1,72,1,72,3,72,1656,8,72,1,72,1,72,1,72,1,72,1,72,
        1,72,1,72,3,72,1665,8,72,1,73,1,73,1,73,3,73,1670,8,73,1,73,1,73,
        1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,1684,8,73,
        1,73,1,73,1,73,3,73,1689,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,
        3,73,1698,8,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,
        1,74,1,74,1,75,1,75,1,75,3,75,1715,8,75,1,75,1,75,1,75,1,75,1,75,
        1,75,1,75,1,75,1,75,1,75,1,75,3,75,1728,8,75,1,75,1,75,1,75,3,75,
        1733,8,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,1744,
        8,75,1,75,3,75,1747,8,75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,1755,
        8,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,
        1,76,3,76,1770,8,76,1,77,1,77,1,77,1,77,3,77,1776,8,77,1,77,1,77,
        1,77,3,77,1781,8,77,1,77,1,77,1,77,1,77,3,77,1787,8,77,1,77,1,77,
        1,77,3,77,1792,8,77,1,77,1,77,1,77,1,77,3,77,1798,8,77,1,77,1,77,
        1,77,1,77,3,77,1804,8,77,1,77,1,77,1,77,1,77,3,77,1810,8,77,1,77,
        1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,3,77,1822,8,77,1,77,
        3,77,1825,8,77,1,77,1,77,3,77,1829,8,77,1,78,1,78,1,78,1,78,1,78,
        3,78,1836,8,78,1,79,1,79,1,79,1,79,3,79,1842,8,79,1,79,1,79,1,79,
        1,79,1,79,1,79,1,79,1,79,1,79,3,79,1853,8,79,1,79,1,79,1,79,3,79,
        1858,8,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,3,79,1867,8,79,1,79,
        3,79,1870,8,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,
        1,79,1,79,1,79,1,79,1,79,3,79,1887,8,79,1,80,1,80,1,80,1,80,1,80,
        1,80,1,80,1,80,3,80,1897,8,80,1,81,1,81,1,81,3,81,1902,8,81,1,81,
        1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,3,81,1913,8,81,1,81,1,81,
        1,81,3,81,1918,8,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,
        1,81,1,81,1,81,1,81,1,81,3,81,1934,8,81,1,82,1,82,1,82,1,82,1,82,
        1,82,1,82,1,82,1,82,3,82,1945,8,82,1,83,1,83,1,83,3,83,1950,8,83,
        1,83,1,83,1,83,3,83,1955,8,83,1,83,1,83,1,83,3,83,1960,8,83,1,83,
        1,83,1,83,1,83,1,83,3,83,1967,8,83,1,84,1,84,1,84,1,84,1,84,1,84,
        1,84,1,85,1,85,1,85,3,85,1979,8,85,1,85,1,85,1,85,1,85,1,85,1,85,
        1,85,3,85,1988,8,85,1,85,1,85,1,85,3,85,1993,8,85,1,85,1,85,1,85,
        1,85,1,85,1,85,1,85,3,85,2002,8,85,1,86,1,86,1,86,1,86,1,86,1,86,
        3,86,2010,8,86,1,87,1,87,1,87,1,87,3,87,2016,8,87,1,87,1,87,1,87,
        3,87,2021,8,87,1,87,1,87,1,87,3,87,2026,8,87,1,87,1,87,1,87,1,87,
        1,87,3,87,2033,8,87,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,
        3,89,2044,8,89,1,89,1,89,1,89,3,89,2049,8,89,1,89,1,89,1,89,3,89,
        2054,8,89,1,89,1,89,1,89,3,89,2059,8,89,1,89,1,89,1,89,3,89,2064,
        8,89,1,89,1,89,1,89,3,89,2069,8,89,1,89,1,89,1,89,3,89,2074,8,89,
        1,89,1,89,1,89,3,89,2079,8,89,1,89,1,89,1,89,3,89,2084,8,89,1,89,
        1,89,1,89,3,89,2089,8,89,1,89,1,89,1,89,3,89,2094,8,89,1,89,1,89,
        1,89,3,89,2099,8,89,1,89,1,89,1,89,3,89,2104,8,89,1,89,3,89,2107,
        8,89,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,92,1,92,1,92,5,92,
        2120,8,92,10,92,12,92,2123,9,92,1,93,1,93,1,93,5,93,2128,8,93,10,
        93,12,93,2131,9,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,
        1,94,1,94,1,94,3,94,2145,8,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,
        1,94,1,94,1,94,1,94,1,94,1,94,1,94,3,94,2161,8,94,1,94,3,94,2164,
        8,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,3,94,2175,8,94,
        1,94,1,94,1,94,3,94,2180,8,94,1,94,3,94,2183,8,94,1,94,1,94,1,94,
        1,94,1,94,1,94,3,94,2191,8,94,1,94,1,94,3,94,2195,8,94,1,94,1,94,
        1,94,1,94,1,94,1,94,1,94,1,94,1,94,3,94,2206,8,94,1,94,1,94,3,94,
        2210,8,94,1,94,1,94,3,94,2214,8,94,1,94,3,94,2217,8,94,1,94,1,94,
        1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,3,94,2230,8,94,1,94,
        3,94,2233,8,94,1,94,1,94,1,94,1,94,1,94,3,94,2240,8,94,1,94,3,94,
        2243,8,94,1,94,1,94,1,94,1,94,1,94,3,94,2250,8,94,1,94,1,94,1,94,
        3,94,2255,8,94,1,94,3,94,2258,8,94,1,94,1,94,1,94,1,94,1,94,1,94,
        1,94,1,94,1,94,1,94,1,94,1,94,3,94,2272,8,94,1,94,1,94,1,94,1,94,
        1,94,1,94,5,94,2280,8,94,10,94,12,94,2283,9,94,1,95,1,95,1,96,1,
        96,1,97,1,97,1,98,1,98,1,99,1,99,1,99,5,99,2296,8,99,10,99,12,99,
        2299,9,99,1,99,3,99,2302,8,99,3,99,2304,8,99,1,99,1,99,5,99,2308,
        8,99,10,99,12,99,2311,9,99,1,99,1,99,1,100,1,100,1,100,1,100,1,101,
        1,101,1,101,1,101,1,101,1,101,3,101,2325,8,101,1,102,1,102,1,102,
        3,102,2330,8,102,1,103,1,103,1,103,3,103,2335,8,103,1,104,1,104,
        1,104,1,104,1,104,1,104,1,104,3,104,2344,8,104,1,105,1,105,1,105,
        1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
        1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
        1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
        1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
        1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
        1,105,1,105,5,105,2406,8,105,10,105,12,105,2409,9,105,1,105,1,105,
        1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,5,105,
        2423,8,105,10,105,12,105,2426,9,105,1,105,1,105,1,105,1,105,1,105,
        1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
        1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
        1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,3,105,
        2465,8,105,1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,
        1,107,1,107,1,108,1,108,1,108,3,108,2481,8,108,1,109,1,109,1,109,
        1,109,1,109,5,109,2488,8,109,10,109,12,109,2491,9,109,1,109,5,109,
        2494,8,109,10,109,12,109,2497,9,109,1,109,5,109,2500,8,109,10,109,
        12,109,2503,9,109,3,109,2505,8,109,1,109,1,109,1,109,1,109,1,109,
        5,109,2512,8,109,10,109,12,109,2515,9,109,1,109,1,109,1,109,1,109,
        1,110,1,110,1,110,1,110,1,110,5,110,2526,8,110,10,110,12,110,2529,
        9,110,1,110,5,110,2532,8,110,10,110,12,110,2535,9,110,1,110,5,110,
        2538,8,110,10,110,12,110,2541,9,110,3,110,2543,8,110,1,110,1,110,
        1,110,1,110,1,110,5,110,2550,8,110,10,110,12,110,2553,9,110,1,110,
        1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,5,111,2564,8,111,
        10,111,12,111,2567,9,111,1,111,5,111,2570,8,111,10,111,12,111,2573,
        9,111,1,111,5,111,2576,8,111,10,111,12,111,2579,9,111,3,111,2581,
        8,111,1,111,1,111,1,111,1,111,1,111,5,111,2588,8,111,10,111,12,111,
        2591,9,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,
        5,112,2602,8,112,10,112,12,112,2605,9,112,1,112,5,112,2608,8,112,
        10,112,12,112,2611,9,112,1,112,5,112,2614,8,112,10,112,12,112,2617,
        9,112,3,112,2619,8,112,1,112,1,112,1,112,1,112,1,112,5,112,2626,
        8,112,10,112,12,112,2629,9,112,1,112,1,112,1,112,1,112,1,113,1,113,
        1,113,1,113,1,113,5,113,2640,8,113,10,113,12,113,2643,9,113,1,113,
        5,113,2646,8,113,10,113,12,113,2649,9,113,1,113,5,113,2652,8,113,
        10,113,12,113,2655,9,113,3,113,2657,8,113,1,113,1,113,1,113,1,113,
        1,113,5,113,2664,8,113,10,113,12,113,2667,9,113,1,113,1,113,1,113,
        1,113,1,114,1,114,1,114,1,114,1,114,5,114,2678,8,114,10,114,12,114,
        2681,9,114,1,114,5,114,2684,8,114,10,114,12,114,2687,9,114,1,114,
        5,114,2690,8,114,10,114,12,114,2693,9,114,3,114,2695,8,114,1,114,
        1,114,1,114,1,114,1,114,5,114,2702,8,114,10,114,12,114,2705,9,114,
        1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,5,115,2716,
        8,115,10,115,12,115,2719,9,115,1,115,5,115,2722,8,115,10,115,12,
        115,2725,9,115,1,115,5,115,2728,8,115,10,115,12,115,2731,9,115,3,
        115,2733,8,115,1,115,1,115,1,115,1,115,1,115,5,115,2740,8,115,10,
        115,12,115,2743,9,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,
        1,116,1,116,5,116,2754,8,116,10,116,12,116,2757,9,116,1,116,5,116,
        2760,8,116,10,116,12,116,2763,9,116,1,116,5,116,2766,8,116,10,116,
        12,116,2769,9,116,3,116,2771,8,116,1,116,1,116,1,116,1,116,1,116,
        5,116,2778,8,116,10,116,12,116,2781,9,116,1,116,1,116,1,116,1,116,
        1,117,1,117,1,117,1,117,1,117,5,117,2792,8,117,10,117,12,117,2795,
        9,117,1,117,5,117,2798,8,117,10,117,12,117,2801,9,117,1,117,5,117,
        2804,8,117,10,117,12,117,2807,9,117,3,117,2809,8,117,1,117,1,117,
        1,117,1,117,1,117,5,117,2816,8,117,10,117,12,117,2819,9,117,1,117,
        1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,5,118,2830,8,118,
        10,118,12,118,2833,9,118,1,118,5,118,2836,8,118,10,118,12,118,2839,
        9,118,1,118,5,118,2842,8,118,10,118,12,118,2845,9,118,3,118,2847,
        8,118,1,118,1,118,1,118,1,118,1,118,5,118,2854,8,118,10,118,12,118,
        2857,9,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,
        5,119,2868,8,119,10,119,12,119,2871,9,119,1,119,5,119,2874,8,119,
        10,119,12,119,2877,9,119,1,119,5,119,2880,8,119,10,119,12,119,2883,
        9,119,3,119,2885,8,119,1,119,1,119,1,119,1,119,1,119,5,119,2892,
        8,119,10,119,12,119,2895,9,119,1,119,1,119,1,119,1,119,1,119,0,1,
        188,120,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,146,148,150,152,
        154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,
        186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,
        218,220,222,224,226,228,230,232,234,236,238,0,8,1,0,42,43,1,0,184,
        185,2,0,177,177,186,186,3,0,177,177,179,179,198,198,2,0,177,177,
        179,179,1,0,164,165,1,0,229,233,1,0,268,274,3498,0,294,1,0,0,0,2,
        299,1,0,0,0,4,309,1,0,0,0,6,360,1,0,0,0,8,363,1,0,0,0,10,375,1,0,
        0,0,12,386,1,0,0,0,14,395,1,0,0,0,16,404,1,0,0,0,18,413,1,0,0,0,
        20,422,1,0,0,0,22,431,1,0,0,0,24,440,1,0,0,0,26,449,1,0,0,0,28,458,
        1,0,0,0,30,467,1,0,0,0,32,476,1,0,0,0,34,485,1,0,0,0,36,494,1,0,
        0,0,38,503,1,0,0,0,40,512,1,0,0,0,42,521,1,0,0,0,44,530,1,0,0,0,
        46,539,1,0,0,0,48,548,1,0,0,0,50,632,1,0,0,0,52,634,1,0,0,0,54,684,
        1,0,0,0,56,721,1,0,0,0,58,736,1,0,0,0,60,738,1,0,0,0,62,776,1,0,
        0,0,64,778,1,0,0,0,66,830,1,0,0,0,68,832,1,0,0,0,70,881,1,0,0,0,
        72,883,1,0,0,0,74,914,1,0,0,0,76,916,1,0,0,0,78,953,1,0,0,0,80,955,
        1,0,0,0,82,973,1,0,0,0,84,985,1,0,0,0,86,1026,1,0,0,0,88,1028,1,
        0,0,0,90,1071,1,0,0,0,92,1073,1,0,0,0,94,1126,1,0,0,0,96,1128,1,
        0,0,0,98,1182,1,0,0,0,100,1184,1,0,0,0,102,1193,1,0,0,0,104,1237,
        1,0,0,0,106,1239,1,0,0,0,108,1248,1,0,0,0,110,1252,1,0,0,0,112,1262,
        1,0,0,0,114,1265,1,0,0,0,116,1268,1,0,0,0,118,1271,1,0,0,0,120,1274,
        1,0,0,0,122,1284,1,0,0,0,124,1404,1,0,0,0,126,1406,1,0,0,0,128,1441,
        1,0,0,0,130,1443,1,0,0,0,132,1479,1,0,0,0,134,1481,1,0,0,0,136,1561,
        1,0,0,0,138,1563,1,0,0,0,140,1609,1,0,0,0,142,1611,1,0,0,0,144,1664,
        1,0,0,0,146,1697,1,0,0,0,148,1699,1,0,0,0,150,1754,1,0,0,0,152,1756,
        1,0,0,0,154,1828,1,0,0,0,156,1830,1,0,0,0,158,1886,1,0,0,0,160,1888,
        1,0,0,0,162,1933,1,0,0,0,164,1935,1,0,0,0,166,1966,1,0,0,0,168,1968,
        1,0,0,0,170,2001,1,0,0,0,172,2003,1,0,0,0,174,2032,1,0,0,0,176,2034,
        1,0,0,0,178,2106,1,0,0,0,180,2108,1,0,0,0,182,2112,1,0,0,0,184,2116,
        1,0,0,0,186,2124,1,0,0,0,188,2271,1,0,0,0,190,2284,1,0,0,0,192,2286,
        1,0,0,0,194,2288,1,0,0,0,196,2290,1,0,0,0,198,2292,1,0,0,0,200,2314,
        1,0,0,0,202,2324,1,0,0,0,204,2326,1,0,0,0,206,2331,1,0,0,0,208,2343,
        1,0,0,0,210,2464,1,0,0,0,212,2466,1,0,0,0,214,2471,1,0,0,0,216,2477,
        1,0,0,0,218,2482,1,0,0,0,220,2520,1,0,0,0,222,2558,1,0,0,0,224,2596,
        1,0,0,0,226,2634,1,0,0,0,228,2672,1,0,0,0,230,2710,1,0,0,0,232,2748,
        1,0,0,0,234,2786,1,0,0,0,236,2824,1,0,0,0,238,2862,1,0,0,0,240,293,
        3,2,1,0,241,293,3,4,2,0,242,293,3,6,3,0,243,293,3,8,4,0,244,293,
        3,10,5,0,245,293,3,12,6,0,246,293,3,14,7,0,247,293,3,16,8,0,248,
        293,3,18,9,0,249,293,3,20,10,0,250,293,3,22,11,0,251,293,3,24,12,
        0,252,293,3,26,13,0,253,293,3,28,14,0,254,293,3,30,15,0,255,293,
        3,32,16,0,256,293,3,34,17,0,257,293,3,36,18,0,258,293,3,38,19,0,
        259,293,3,40,20,0,260,293,3,42,21,0,261,293,3,44,22,0,262,293,3,
        46,23,0,263,293,3,48,24,0,264,293,3,198,99,0,265,293,3,200,100,0,
        266,293,3,214,107,0,267,293,3,218,109,0,268,293,3,220,110,0,269,
        293,3,222,111,0,270,293,3,236,118,0,271,293,3,238,119,0,272,293,
        3,226,113,0,273,293,3,224,112,0,274,293,3,228,114,0,275,293,3,230,
        115,0,276,293,3,232,116,0,277,293,3,234,117,0,278,293,3,52,26,0,
        279,293,3,60,30,0,280,293,3,64,32,0,281,293,3,82,41,0,282,293,3,
        88,44,0,283,293,3,176,88,0,284,293,3,180,90,0,285,293,3,96,48,0,
        286,293,3,92,46,0,287,293,3,130,65,0,288,293,3,142,71,0,289,293,
        3,156,78,0,290,293,3,160,80,0,291,293,3,106,53,0,292,240,1,0,0,0,
        292,241,1,0,0,0,292,242,1,0,0,0,292,243,1,0,0,0,292,244,1,0,0,0,
        292,245,1,0,0,0,292,246,1,0,0,0,292,247,1,0,0,0,292,248,1,0,0,0,
        292,249,1,0,0,0,292,250,1,0,0,0,292,251,1,0,0,0,292,252,1,0,0,0,
        292,253,1,0,0,0,292,254,1,0,0,0,292,255,1,0,0,0,292,256,1,0,0,0,
        292,257,1,0,0,0,292,258,1,0,0,0,292,259,1,0,0,0,292,260,1,0,0,0,
        292,261,1,0,0,0,292,262,1,0,0,0,292,263,1,0,0,0,292,264,1,0,0,0,
        292,265,1,0,0,0,292,266,1,0,0,0,292,267,1,0,0,0,292,268,1,0,0,0,
        292,269,1,0,0,0,292,270,1,0,0,0,292,271,1,0,0,0,292,272,1,0,0,0,
        292,273,1,0,0,0,292,274,1,0,0,0,292,275,1,0,0,0,292,276,1,0,0,0,
        292,277,1,0,0,0,292,278,1,0,0,0,292,279,1,0,0,0,292,280,1,0,0,0,
        292,281,1,0,0,0,292,282,1,0,0,0,292,283,1,0,0,0,292,284,1,0,0,0,
        292,285,1,0,0,0,292,286,1,0,0,0,292,287,1,0,0,0,292,288,1,0,0,0,
        292,289,1,0,0,0,292,290,1,0,0,0,292,291,1,0,0,0,293,296,1,0,0,0,
        294,292,1,0,0,0,294,295,1,0,0,0,295,297,1,0,0,0,296,294,1,0,0,0,
        297,298,5,0,0,1,298,1,1,0,0,0,299,303,5,3,0,0,300,302,3,50,25,0,
        301,300,1,0,0,0,302,305,1,0,0,0,303,301,1,0,0,0,303,304,1,0,0,0,
        304,306,1,0,0,0,305,303,1,0,0,0,306,307,5,2,0,0,307,3,1,0,0,0,308,
        310,5,36,0,0,309,308,1,0,0,0,309,310,1,0,0,0,310,311,1,0,0,0,311,
        315,5,37,0,0,312,314,3,58,29,0,313,312,1,0,0,0,314,317,1,0,0,0,315,
        313,1,0,0,0,315,316,1,0,0,0,316,318,1,0,0,0,317,315,1,0,0,0,318,
        319,5,2,0,0,319,5,1,0,0,0,320,324,5,39,0,0,321,323,3,62,31,0,322,
        321,1,0,0,0,323,326,1,0,0,0,324,322,1,0,0,0,324,325,1,0,0,0,325,
        327,1,0,0,0,326,324,1,0,0,0,327,361,5,2,0,0,328,332,7,0,0,0,329,
        331,3,66,33,0,330,329,1,0,0,0,331,334,1,0,0,0,332,330,1,0,0,0,332,
        333,1,0,0,0,333,335,1,0,0,0,334,332,1,0,0,0,335,361,5,2,0,0,336,
        340,5,46,0,0,337,339,3,70,35,0,338,337,1,0,0,0,339,342,1,0,0,0,340,
        338,1,0,0,0,340,341,1,0,0,0,341,343,1,0,0,0,342,340,1,0,0,0,343,
        361,5,2,0,0,344,348,5,49,0,0,345,347,3,74,37,0,346,345,1,0,0,0,347,
        350,1,0,0,0,348,346,1,0,0,0,348,349,1,0,0,0,349,351,1,0,0,0,350,
        348,1,0,0,0,351,361,5,2,0,0,352,356,5,50,0,0,353,355,3,78,39,0,354,
        353,1,0,0,0,355,358,1,0,0,0,356,354,1,0,0,0,356,357,1,0,0,0,357,
        359,1,0,0,0,358,356,1,0,0,0,359,361,5,2,0,0,360,320,1,0,0,0,360,
        328,1,0,0,0,360,336,1,0,0,0,360,344,1,0,0,0,360,352,1,0,0,0,361,
        7,1,0,0,0,362,364,5,36,0,0,363,362,1,0,0,0,363,364,1,0,0,0,364,365,
        1,0,0,0,365,369,5,51,0,0,366,368,3,82,41,0,367,366,1,0,0,0,368,371,
        1,0,0,0,369,367,1,0,0,0,369,370,1,0,0,0,370,372,1,0,0,0,371,369,
        1,0,0,0,372,373,5,2,0,0,373,9,1,0,0,0,374,376,5,36,0,0,375,374,1,
        0,0,0,375,376,1,0,0,0,376,377,1,0,0,0,377,381,5,56,0,0,378,380,3,
        86,43,0,379,378,1,0,0,0,380,383,1,0,0,0,381,379,1,0,0,0,381,382,
        1,0,0,0,382,384,1,0,0,0,383,381,1,0,0,0,384,385,5,2,0,0,385,11,1,
        0,0,0,386,390,5,59,0,0,387,389,3,90,45,0,388,387,1,0,0,0,389,392,
        1,0,0,0,390,388,1,0,0,0,390,391,1,0,0,0,391,393,1,0,0,0,392,390,
        1,0,0,0,393,394,5,2,0,0,394,13,1,0,0,0,395,399,5,63,0,0,396,398,
        3,94,47,0,397,396,1,0,0,0,398,401,1,0,0,0,399,397,1,0,0,0,399,400,
        1,0,0,0,400,402,1,0,0,0,401,399,1,0,0,0,402,403,5,2,0,0,403,15,1,
        0,0,0,404,408,5,65,0,0,405,407,3,98,49,0,406,405,1,0,0,0,407,410,
        1,0,0,0,408,406,1,0,0,0,408,409,1,0,0,0,409,411,1,0,0,0,410,408,
        1,0,0,0,411,412,5,2,0,0,412,17,1,0,0,0,413,417,5,69,0,0,414,416,
        3,104,52,0,415,414,1,0,0,0,416,419,1,0,0,0,417,415,1,0,0,0,417,418,
        1,0,0,0,418,420,1,0,0,0,419,417,1,0,0,0,420,421,5,2,0,0,421,19,1,
        0,0,0,422,426,5,77,0,0,423,425,3,124,62,0,424,423,1,0,0,0,425,428,
        1,0,0,0,426,424,1,0,0,0,426,427,1,0,0,0,427,429,1,0,0,0,428,426,
        1,0,0,0,429,430,5,2,0,0,430,21,1,0,0,0,431,435,5,84,0,0,432,434,
        3,128,64,0,433,432,1,0,0,0,434,437,1,0,0,0,435,433,1,0,0,0,435,436,
        1,0,0,0,436,438,1,0,0,0,437,435,1,0,0,0,438,439,5,2,0,0,439,23,1,
        0,0,0,440,444,5,85,0,0,441,443,3,132,66,0,442,441,1,0,0,0,443,446,
        1,0,0,0,444,442,1,0,0,0,444,445,1,0,0,0,445,447,1,0,0,0,446,444,
        1,0,0,0,447,448,5,2,0,0,448,25,1,0,0,0,449,453,5,86,0,0,450,452,
        3,136,68,0,451,450,1,0,0,0,452,455,1,0,0,0,453,451,1,0,0,0,453,454,
        1,0,0,0,454,456,1,0,0,0,455,453,1,0,0,0,456,457,5,2,0,0,457,27,1,
        0,0,0,458,462,5,90,0,0,459,461,3,140,70,0,460,459,1,0,0,0,461,464,
        1,0,0,0,462,460,1,0,0,0,462,463,1,0,0,0,463,465,1,0,0,0,464,462,
        1,0,0,0,465,466,5,2,0,0,466,29,1,0,0,0,467,471,5,92,0,0,468,470,
        3,144,72,0,469,468,1,0,0,0,470,473,1,0,0,0,471,469,1,0,0,0,471,472,
        1,0,0,0,472,474,1,0,0,0,473,471,1,0,0,0,474,475,5,2,0,0,475,31,1,
        0,0,0,476,480,5,93,0,0,477,479,3,146,73,0,478,477,1,0,0,0,479,482,
        1,0,0,0,480,478,1,0,0,0,480,481,1,0,0,0,481,483,1,0,0,0,482,480,
        1,0,0,0,483,484,5,2,0,0,484,33,1,0,0,0,485,489,5,94,0,0,486,488,
        3,150,75,0,487,486,1,0,0,0,488,491,1,0,0,0,489,487,1,0,0,0,489,490,
        1,0,0,0,490,492,1,0,0,0,491,489,1,0,0,0,492,493,5,2,0,0,493,35,1,
        0,0,0,494,498,5,97,0,0,495,497,3,154,77,0,496,495,1,0,0,0,497,500,
        1,0,0,0,498,496,1,0,0,0,498,499,1,0,0,0,499,501,1,0,0,0,500,498,
        1,0,0,0,501,502,5,2,0,0,502,37,1,0,0,0,503,507,5,102,0,0,504,506,
        3,158,79,0,505,504,1,0,0,0,506,509,1,0,0,0,507,505,1,0,0,0,507,508,
        1,0,0,0,508,510,1,0,0,0,509,507,1,0,0,0,510,511,5,2,0,0,511,39,1,
        0,0,0,512,516,5,113,0,0,513,515,3,162,81,0,514,513,1,0,0,0,515,518,
        1,0,0,0,516,514,1,0,0,0,516,517,1,0,0,0,517,519,1,0,0,0,518,516,
        1,0,0,0,519,520,5,2,0,0,520,41,1,0,0,0,521,525,5,114,0,0,522,524,
        3,166,83,0,523,522,1,0,0,0,524,527,1,0,0,0,525,523,1,0,0,0,525,526,
        1,0,0,0,526,528,1,0,0,0,527,525,1,0,0,0,528,529,5,2,0,0,529,43,1,
        0,0,0,530,534,5,115,0,0,531,533,3,170,85,0,532,531,1,0,0,0,533,536,
        1,0,0,0,534,532,1,0,0,0,534,535,1,0,0,0,535,537,1,0,0,0,536,534,
        1,0,0,0,537,538,5,2,0,0,538,45,1,0,0,0,539,543,5,187,0,0,540,542,
        3,174,87,0,541,540,1,0,0,0,542,545,1,0,0,0,543,541,1,0,0,0,543,544,
        1,0,0,0,544,546,1,0,0,0,545,543,1,0,0,0,546,547,5,2,0,0,547,47,1,
        0,0,0,548,552,5,188,0,0,549,551,3,178,89,0,550,549,1,0,0,0,551,554,
        1,0,0,0,552,550,1,0,0,0,552,553,1,0,0,0,553,555,1,0,0,0,554,552,
        1,0,0,0,555,556,5,2,0,0,556,49,1,0,0,0,557,633,3,52,26,0,558,633,
        3,218,109,0,559,560,5,5,0,0,560,561,5,184,0,0,561,633,3,194,97,0,
        562,563,5,6,0,0,563,564,5,209,0,0,564,633,5,208,0,0,565,566,5,7,
        0,0,566,567,5,184,0,0,567,633,3,194,97,0,568,570,5,8,0,0,569,571,
        5,192,0,0,570,569,1,0,0,0,570,571,1,0,0,0,571,572,1,0,0,0,572,633,
        3,194,97,0,573,575,5,9,0,0,574,576,5,192,0,0,575,574,1,0,0,0,575,
        576,1,0,0,0,576,577,1,0,0,0,577,633,5,184,0,0,578,579,5,10,0,0,579,
        633,5,184,0,0,580,581,5,11,0,0,581,582,5,184,0,0,582,583,5,184,0,
        0,583,633,3,194,97,0,584,585,5,12,0,0,585,586,5,184,0,0,586,633,
        5,177,0,0,587,588,5,13,0,0,588,589,5,184,0,0,589,633,5,177,0,0,590,
        592,5,14,0,0,591,593,5,192,0,0,592,591,1,0,0,0,592,593,1,0,0,0,593,
        594,1,0,0,0,594,633,5,177,0,0,595,596,5,15,0,0,596,597,5,213,0,0,
        597,633,5,212,0,0,598,599,5,16,0,0,599,600,3,54,27,0,600,601,5,2,
        0,0,601,633,1,0,0,0,602,603,5,17,0,0,603,605,5,18,0,0,604,606,5,
        192,0,0,605,604,1,0,0,0,605,606,1,0,0,0,606,607,1,0,0,0,607,633,
        3,194,97,0,608,633,5,19,0,0,609,610,5,20,0,0,610,611,5,184,0,0,611,
        633,3,194,97,0,612,613,5,21,0,0,613,614,5,184,0,0,614,633,3,194,
        97,0,615,616,5,22,0,0,616,617,5,184,0,0,617,633,3,194,97,0,618,619,
        5,23,0,0,619,620,5,184,0,0,620,633,3,194,97,0,621,622,5,24,0,0,622,
        623,5,184,0,0,623,633,3,194,97,0,624,625,5,25,0,0,625,626,5,184,
        0,0,626,633,3,194,97,0,627,629,5,26,0,0,628,630,5,192,0,0,629,628,
        1,0,0,0,629,630,1,0,0,0,630,631,1,0,0,0,631,633,3,194,97,0,632,557,
        1,0,0,0,632,558,1,0,0,0,632,559,1,0,0,0,632,562,1,0,0,0,632,565,
        1,0,0,0,632,568,1,0,0,0,632,573,1,0,0,0,632,578,1,0,0,0,632,580,
        1,0,0,0,632,584,1,0,0,0,632,587,1,0,0,0,632,590,1,0,0,0,632,595,
        1,0,0,0,632,598,1,0,0,0,632,602,1,0,0,0,632,608,1,0,0,0,632,609,
        1,0,0,0,632,612,1,0,0,0,632,615,1,0,0,0,632,618,1,0,0,0,632,621,
        1,0,0,0,632,624,1,0,0,0,632,627,1,0,0,0,633,51,1,0,0,0,634,635,5,
        4,0,0,635,636,3,182,91,0,636,637,3,182,91,0,637,639,3,190,95,0,638,
        640,3,190,95,0,639,638,1,0,0,0,639,640,1,0,0,0,640,642,1,0,0,0,641,
        643,3,190,95,0,642,641,1,0,0,0,642,643,1,0,0,0,643,647,1,0,0,0,644,
        646,3,56,28,0,645,644,1,0,0,0,646,649,1,0,0,0,647,645,1,0,0,0,647,
        648,1,0,0,0,648,667,1,0,0,0,649,647,1,0,0,0,650,652,5,172,0,0,651,
        653,5,4,0,0,652,651,1,0,0,0,652,653,1,0,0,0,653,654,1,0,0,0,654,
        655,3,182,91,0,655,657,3,182,91,0,656,658,3,190,95,0,657,656,1,0,
        0,0,657,658,1,0,0,0,658,660,1,0,0,0,659,661,3,190,95,0,660,659,1,
        0,0,0,660,661,1,0,0,0,661,663,1,0,0,0,662,664,3,190,95,0,663,662,
        1,0,0,0,663,664,1,0,0,0,664,666,1,0,0,0,665,650,1,0,0,0,666,669,
        1,0,0,0,667,665,1,0,0,0,667,668,1,0,0,0,668,53,1,0,0,0,669,667,1,
        0,0,0,670,672,5,27,0,0,671,673,5,192,0,0,672,671,1,0,0,0,672,673,
        1,0,0,0,673,674,1,0,0,0,674,685,3,194,97,0,675,677,5,28,0,0,676,
        678,5,192,0,0,677,676,1,0,0,0,677,678,1,0,0,0,678,679,1,0,0,0,679,
        685,3,194,97,0,680,681,5,29,0,0,681,685,3,182,91,0,682,683,5,30,
        0,0,683,685,3,182,91,0,684,670,1,0,0,0,684,675,1,0,0,0,684,680,1,
        0,0,0,684,682,1,0,0,0,685,55,1,0,0,0,686,688,5,31,0,0,687,689,5,
        192,0,0,688,687,1,0,0,0,688,689,1,0,0,0,689,690,1,0,0,0,690,722,
        3,196,98,0,691,693,5,32,0,0,692,694,5,192,0,0,693,692,1,0,0,0,693,
        694,1,0,0,0,694,695,1,0,0,0,695,722,3,196,98,0,696,698,5,55,0,0,
        697,699,5,192,0,0,698,697,1,0,0,0,698,699,1,0,0,0,699,700,1,0,0,
        0,700,722,3,196,98,0,701,703,5,33,0,0,702,704,5,192,0,0,703,702,
        1,0,0,0,703,704,1,0,0,0,704,705,1,0,0,0,705,722,3,196,98,0,706,708,
        5,34,0,0,707,709,5,192,0,0,708,707,1,0,0,0,708,709,1,0,0,0,709,710,
        1,0,0,0,710,722,3,196,98,0,711,713,5,35,0,0,712,714,5,192,0,0,713,
        712,1,0,0,0,713,714,1,0,0,0,714,715,1,0,0,0,715,722,3,196,98,0,716,
        718,5,47,0,0,717,719,5,192,0,0,718,717,1,0,0,0,718,719,1,0,0,0,719,
        720,1,0,0,0,720,722,3,196,98,0,721,686,1,0,0,0,721,691,1,0,0,0,721,
        696,1,0,0,0,721,701,1,0,0,0,721,706,1,0,0,0,721,711,1,0,0,0,721,
        716,1,0,0,0,722,57,1,0,0,0,723,737,3,60,30,0,724,737,3,220,110,0,
        725,727,5,38,0,0,726,728,5,192,0,0,727,726,1,0,0,0,727,728,1,0,0,
        0,728,729,1,0,0,0,729,737,5,177,0,0,730,737,5,19,0,0,731,733,5,21,
        0,0,732,734,5,192,0,0,733,732,1,0,0,0,733,734,1,0,0,0,734,735,1,
        0,0,0,735,737,3,194,97,0,736,723,1,0,0,0,736,724,1,0,0,0,736,725,
        1,0,0,0,736,730,1,0,0,0,736,731,1,0,0,0,737,59,1,0,0,0,738,739,5,
        4,0,0,739,740,3,182,91,0,740,741,3,182,91,0,741,742,3,182,91,0,742,
        743,3,182,91,0,743,744,3,190,95,0,744,745,3,190,95,0,745,746,3,190,
        95,0,746,747,5,177,0,0,747,61,1,0,0,0,748,777,3,64,32,0,749,777,
        3,222,111,0,750,752,5,9,0,0,751,753,5,192,0,0,752,751,1,0,0,0,752,
        753,1,0,0,0,753,754,1,0,0,0,754,777,5,184,0,0,755,756,5,40,0,0,756,
        757,3,194,97,0,757,758,3,194,97,0,758,759,3,194,97,0,759,777,1,0,
        0,0,760,762,5,41,0,0,761,763,5,192,0,0,762,761,1,0,0,0,762,763,1,
        0,0,0,763,764,1,0,0,0,764,777,3,194,97,0,765,767,5,14,0,0,766,768,
        5,192,0,0,767,766,1,0,0,0,767,768,1,0,0,0,768,769,1,0,0,0,769,777,
        5,177,0,0,770,771,5,15,0,0,771,777,5,212,0,0,772,773,5,17,0,0,773,
        774,5,18,0,0,774,777,3,194,97,0,775,777,5,19,0,0,776,748,1,0,0,0,
        776,749,1,0,0,0,776,750,1,0,0,0,776,755,1,0,0,0,776,760,1,0,0,0,
        776,765,1,0,0,0,776,770,1,0,0,0,776,772,1,0,0,0,776,775,1,0,0,0,
        777,63,1,0,0,0,778,779,5,4,0,0,779,780,3,182,91,0,780,781,3,182,
        91,0,781,782,3,182,91,0,782,783,3,182,91,0,783,784,3,182,91,0,784,
        785,3,182,91,0,785,787,3,190,95,0,786,788,3,190,95,0,787,786,1,0,
        0,0,787,788,1,0,0,0,788,790,1,0,0,0,789,791,3,190,95,0,790,789,1,
        0,0,0,790,791,1,0,0,0,791,65,1,0,0,0,792,831,3,68,34,0,793,795,5,
        9,0,0,794,796,5,192,0,0,795,794,1,0,0,0,795,796,1,0,0,0,796,797,
        1,0,0,0,797,831,5,184,0,0,798,799,5,44,0,0,799,831,5,215,0,0,800,
        802,5,21,0,0,801,803,5,192,0,0,802,801,1,0,0,0,802,803,1,0,0,0,803,
        804,1,0,0,0,804,831,3,194,97,0,805,806,5,45,0,0,806,831,5,178,0,
        0,807,808,5,6,0,0,808,831,5,208,0,0,809,810,5,40,0,0,810,811,3,194,
        97,0,811,812,3,194,97,0,812,813,3,194,97,0,813,831,1,0,0,0,814,816,
        5,41,0,0,815,817,5,192,0,0,816,815,1,0,0,0,816,817,1,0,0,0,817,818,
        1,0,0,0,818,831,3,194,97,0,819,821,5,14,0,0,820,822,5,192,0,0,821,
        820,1,0,0,0,821,822,1,0,0,0,822,823,1,0,0,0,823,831,5,177,0,0,824,
        825,5,15,0,0,825,831,5,212,0,0,826,827,5,17,0,0,827,828,5,18,0,0,
        828,831,3,194,97,0,829,831,5,19,0,0,830,792,1,0,0,0,830,793,1,0,
        0,0,830,798,1,0,0,0,830,800,1,0,0,0,830,805,1,0,0,0,830,807,1,0,
        0,0,830,809,1,0,0,0,830,814,1,0,0,0,830,819,1,0,0,0,830,824,1,0,
        0,0,830,826,1,0,0,0,830,829,1,0,0,0,831,67,1,0,0,0,832,833,5,4,0,
        0,833,834,3,182,91,0,834,835,3,182,91,0,835,836,3,182,91,0,836,837,
        3,182,91,0,837,838,3,182,91,0,838,839,3,182,91,0,839,840,3,190,95,
        0,840,847,3,190,95,0,841,848,3,190,95,0,842,843,3,190,95,0,843,844,
        3,190,95,0,844,845,3,190,95,0,845,846,3,190,95,0,846,848,1,0,0,0,
        847,841,1,0,0,0,847,842,1,0,0,0,847,848,1,0,0,0,848,69,1,0,0,0,849,
        882,3,72,36,0,850,852,5,47,0,0,851,853,5,192,0,0,852,851,1,0,0,0,
        852,853,1,0,0,0,853,854,1,0,0,0,854,882,5,177,0,0,855,857,5,9,0,
        0,856,858,5,192,0,0,857,856,1,0,0,0,857,858,1,0,0,0,858,859,1,0,
        0,0,859,882,5,184,0,0,860,862,5,41,0,0,861,863,5,192,0,0,862,861,
        1,0,0,0,862,863,1,0,0,0,863,864,1,0,0,0,864,865,3,194,97,0,865,866,
        3,194,97,0,866,882,1,0,0,0,867,869,5,14,0,0,868,870,5,192,0,0,869,
        868,1,0,0,0,869,870,1,0,0,0,870,871,1,0,0,0,871,882,5,177,0,0,872,
        874,5,48,0,0,873,875,5,192,0,0,874,873,1,0,0,0,874,875,1,0,0,0,875,
        876,1,0,0,0,876,882,5,177,0,0,877,878,5,17,0,0,878,879,5,18,0,0,
        879,882,3,194,97,0,880,882,5,19,0,0,881,849,1,0,0,0,881,850,1,0,
        0,0,881,855,1,0,0,0,881,860,1,0,0,0,881,867,1,0,0,0,881,872,1,0,
        0,0,881,877,1,0,0,0,881,880,1,0,0,0,882,71,1,0,0,0,883,884,5,4,0,
        0,884,885,3,182,91,0,885,886,3,182,91,0,886,887,3,182,91,0,887,888,
        3,182,91,0,888,889,3,190,95,0,889,893,3,190,95,0,890,891,3,190,95,
        0,891,892,3,190,95,0,892,894,1,0,0,0,893,890,1,0,0,0,893,894,1,0,
        0,0,894,73,1,0,0,0,895,915,3,76,38,0,896,898,5,9,0,0,897,899,5,192,
        0,0,898,897,1,0,0,0,898,899,1,0,0,0,899,900,1,0,0,0,900,915,5,184,
        0,0,901,902,5,40,0,0,902,915,3,194,97,0,903,905,5,14,0,0,904,906,
        5,192,0,0,905,904,1,0,0,0,905,906,1,0,0,0,906,907,1,0,0,0,907,915,
        5,177,0,0,908,909,5,15,0,0,909,915,5,212,0,0,910,911,5,17,0,0,911,
        912,5,18,0,0,912,915,3,194,97,0,913,915,5,19,0,0,914,895,1,0,0,0,
        914,896,1,0,0,0,914,901,1,0,0,0,914,903,1,0,0,0,914,908,1,0,0,0,
        914,910,1,0,0,0,914,913,1,0,0,0,915,75,1,0,0,0,916,917,5,4,0,0,917,
        918,3,182,91,0,918,919,3,182,91,0,919,921,3,190,95,0,920,922,3,190,
        95,0,921,920,1,0,0,0,921,922,1,0,0,0,922,77,1,0,0,0,923,954,3,80,
        40,0,924,926,5,9,0,0,925,927,5,192,0,0,926,925,1,0,0,0,926,927,1,
        0,0,0,927,928,1,0,0,0,928,954,5,184,0,0,929,930,5,40,0,0,930,931,
        3,194,97,0,931,932,3,194,97,0,932,933,3,194,97,0,933,934,3,194,97,
        0,934,954,1,0,0,0,935,937,5,41,0,0,936,938,5,192,0,0,937,936,1,0,
        0,0,937,938,1,0,0,0,938,939,1,0,0,0,939,954,3,194,97,0,940,942,5,
        14,0,0,941,943,5,192,0,0,942,941,1,0,0,0,942,943,1,0,0,0,943,944,
        1,0,0,0,944,954,5,177,0,0,945,946,5,15,0,0,946,954,5,212,0,0,947,
        948,5,17,0,0,948,949,5,18,0,0,949,954,3,194,97,0,950,954,5,19,0,
        0,951,952,5,44,0,0,952,954,5,216,0,0,953,923,1,0,0,0,953,924,1,0,
        0,0,953,929,1,0,0,0,953,935,1,0,0,0,953,940,1,0,0,0,953,945,1,0,
        0,0,953,947,1,0,0,0,953,950,1,0,0,0,953,951,1,0,0,0,954,79,1,0,0,
        0,955,956,5,4,0,0,956,957,3,182,91,0,957,958,3,182,91,0,958,959,
        3,182,91,0,959,960,3,182,91,0,960,962,3,190,95,0,961,963,3,190,95,
        0,962,961,1,0,0,0,962,963,1,0,0,0,963,81,1,0,0,0,964,968,5,52,0,
        0,965,967,3,84,42,0,966,965,1,0,0,0,967,970,1,0,0,0,968,966,1,0,
        0,0,968,969,1,0,0,0,969,971,1,0,0,0,970,968,1,0,0,0,971,974,5,2,
        0,0,972,974,5,53,0,0,973,964,1,0,0,0,973,972,1,0,0,0,974,83,1,0,
        0,0,975,977,5,54,0,0,976,978,5,192,0,0,977,976,1,0,0,0,977,978,1,
        0,0,0,978,979,1,0,0,0,979,986,3,182,91,0,980,982,5,55,0,0,981,983,
        5,192,0,0,982,981,1,0,0,0,982,983,1,0,0,0,983,984,1,0,0,0,984,986,
        3,194,97,0,985,975,1,0,0,0,985,980,1,0,0,0,986,85,1,0,0,0,987,989,
        5,57,0,0,988,990,5,192,0,0,989,988,1,0,0,0,989,990,1,0,0,0,990,991,
        1,0,0,0,991,1027,5,177,0,0,992,994,5,58,0,0,993,995,5,192,0,0,994,
        993,1,0,0,0,994,995,1,0,0,0,995,996,1,0,0,0,996,1022,5,189,0,0,997,
        999,3,194,97,0,998,1000,5,175,0,0,999,998,1,0,0,0,999,1000,1,0,0,
        0,1000,1001,1,0,0,0,1001,1003,3,194,97,0,1002,1004,5,175,0,0,1003,
        1002,1,0,0,0,1003,1004,1,0,0,0,1004,1005,1,0,0,0,1005,1006,3,194,
        97,0,1006,1023,1,0,0,0,1007,1009,5,170,0,0,1008,1010,5,192,0,0,1009,
        1008,1,0,0,0,1009,1010,1,0,0,0,1010,1011,1,0,0,0,1011,1013,3,182,
        91,0,1012,1014,5,175,0,0,1013,1012,1,0,0,0,1013,1014,1,0,0,0,1014,
        1020,1,0,0,0,1015,1017,5,171,0,0,1016,1018,5,192,0,0,1017,1016,1,
        0,0,0,1017,1018,1,0,0,0,1018,1019,1,0,0,0,1019,1021,3,182,91,0,1020,
        1015,1,0,0,0,1020,1021,1,0,0,0,1021,1023,1,0,0,0,1022,997,1,0,0,
        0,1022,1007,1,0,0,0,1023,1024,1,0,0,0,1024,1025,5,190,0,0,1025,1027,
        1,0,0,0,1026,987,1,0,0,0,1026,992,1,0,0,0,1027,87,1,0,0,0,1028,1029,
        5,4,0,0,1029,1030,3,182,91,0,1030,1031,3,190,95,0,1031,1032,3,190,
        95,0,1032,1033,3,190,95,0,1033,89,1,0,0,0,1034,1072,3,92,46,0,1035,
        1072,3,224,112,0,1036,1038,5,9,0,0,1037,1039,5,192,0,0,1038,1037,
        1,0,0,0,1038,1039,1,0,0,0,1039,1040,1,0,0,0,1040,1072,5,184,0,0,
        1041,1042,5,60,0,0,1042,1043,5,177,0,0,1043,1072,3,194,97,0,1044,
        1046,5,41,0,0,1045,1047,5,192,0,0,1046,1045,1,0,0,0,1046,1047,1,
        0,0,0,1047,1048,1,0,0,0,1048,1072,3,194,97,0,1049,1051,5,14,0,0,
        1050,1052,5,192,0,0,1051,1050,1,0,0,0,1051,1052,1,0,0,0,1052,1053,
        1,0,0,0,1053,1072,5,177,0,0,1054,1055,5,17,0,0,1055,1056,5,18,0,
        0,1056,1063,3,194,97,0,1057,1064,5,133,0,0,1058,1060,5,9,0,0,1059,
        1061,5,192,0,0,1060,1059,1,0,0,0,1060,1061,1,0,0,0,1061,1062,1,0,
        0,0,1062,1064,5,184,0,0,1063,1057,1,0,0,0,1063,1058,1,0,0,0,1064,
        1072,1,0,0,0,1065,1072,5,19,0,0,1066,1067,5,61,0,0,1067,1068,3,194,
        97,0,1068,1069,5,177,0,0,1069,1072,1,0,0,0,1070,1072,5,62,0,0,1071,
        1034,1,0,0,0,1071,1035,1,0,0,0,1071,1036,1,0,0,0,1071,1041,1,0,0,
        0,1071,1044,1,0,0,0,1071,1049,1,0,0,0,1071,1054,1,0,0,0,1071,1065,
        1,0,0,0,1071,1066,1,0,0,0,1071,1070,1,0,0,0,1072,91,1,0,0,0,1073,
        1074,5,4,0,0,1074,1075,3,182,91,0,1075,1076,3,182,91,0,1076,93,1,
        0,0,0,1077,1127,3,96,48,0,1078,1127,3,226,113,0,1079,1081,5,9,0,
        0,1080,1082,5,192,0,0,1081,1080,1,0,0,0,1081,1082,1,0,0,0,1082,1083,
        1,0,0,0,1083,1127,5,184,0,0,1084,1085,5,40,0,0,1085,1086,3,194,97,
        0,1086,1087,3,194,97,0,1087,1088,3,194,97,0,1088,1089,3,194,97,0,
        1089,1127,1,0,0,0,1090,1092,5,47,0,0,1091,1093,5,192,0,0,1092,1091,
        1,0,0,0,1092,1093,1,0,0,0,1093,1094,1,0,0,0,1094,1127,5,177,0,0,
        1095,1096,5,64,0,0,1096,1127,5,177,0,0,1097,1098,5,41,0,0,1098,1100,
        3,194,97,0,1099,1101,3,194,97,0,1100,1099,1,0,0,0,1100,1101,1,0,
        0,0,1101,1127,1,0,0,0,1102,1104,5,14,0,0,1103,1105,5,192,0,0,1104,
        1103,1,0,0,0,1104,1105,1,0,0,0,1105,1106,1,0,0,0,1106,1127,5,177,
        0,0,1107,1109,5,48,0,0,1108,1110,5,192,0,0,1109,1108,1,0,0,0,1109,
        1110,1,0,0,0,1110,1111,1,0,0,0,1111,1127,5,177,0,0,1112,1113,5,15,
        0,0,1113,1127,5,212,0,0,1114,1115,5,17,0,0,1115,1116,5,18,0,0,1116,
        1123,3,194,97,0,1117,1124,5,133,0,0,1118,1120,5,9,0,0,1119,1121,
        5,192,0,0,1120,1119,1,0,0,0,1120,1121,1,0,0,0,1121,1122,1,0,0,0,
        1122,1124,5,184,0,0,1123,1117,1,0,0,0,1123,1118,1,0,0,0,1124,1127,
        1,0,0,0,1125,1127,5,19,0,0,1126,1077,1,0,0,0,1126,1078,1,0,0,0,1126,
        1079,1,0,0,0,1126,1084,1,0,0,0,1126,1090,1,0,0,0,1126,1095,1,0,0,
        0,1126,1097,1,0,0,0,1126,1102,1,0,0,0,1126,1107,1,0,0,0,1126,1112,
        1,0,0,0,1126,1114,1,0,0,0,1126,1125,1,0,0,0,1127,95,1,0,0,0,1128,
        1129,5,4,0,0,1129,1130,3,182,91,0,1130,1131,3,182,91,0,1131,1132,
        3,182,91,0,1132,1138,3,182,91,0,1133,1134,3,182,91,0,1134,1135,3,
        182,91,0,1135,1136,3,182,91,0,1136,1137,3,182,91,0,1137,1139,1,0,
        0,0,1138,1133,1,0,0,0,1138,1139,1,0,0,0,1139,1140,1,0,0,0,1140,1141,
        3,190,95,0,1141,1145,3,190,95,0,1142,1143,3,190,95,0,1143,1144,3,
        190,95,0,1144,1146,1,0,0,0,1145,1142,1,0,0,0,1145,1146,1,0,0,0,1146,
        97,1,0,0,0,1147,1183,3,100,50,0,1148,1150,5,9,0,0,1149,1151,5,192,
        0,0,1150,1149,1,0,0,0,1150,1151,1,0,0,0,1151,1152,1,0,0,0,1152,1183,
        5,184,0,0,1153,1154,5,60,0,0,1154,1155,5,177,0,0,1155,1156,5,177,
        0,0,1156,1157,3,194,97,0,1157,1158,3,194,97,0,1158,1159,3,194,97,
        0,1159,1183,1,0,0,0,1160,1162,5,41,0,0,1161,1163,5,192,0,0,1162,
        1161,1,0,0,0,1162,1163,1,0,0,0,1163,1164,1,0,0,0,1164,1183,3,194,
        97,0,1165,1167,5,14,0,0,1166,1168,5,192,0,0,1167,1166,1,0,0,0,1167,
        1168,1,0,0,0,1168,1169,1,0,0,0,1169,1183,5,177,0,0,1170,1171,5,66,
        0,0,1171,1183,3,194,97,0,1172,1173,5,67,0,0,1173,1183,3,194,97,0,
        1174,1175,5,15,0,0,1175,1183,5,212,0,0,1176,1177,5,17,0,0,1177,1178,
        5,18,0,0,1178,1183,3,194,97,0,1179,1183,3,102,51,0,1180,1183,5,19,
        0,0,1181,1183,5,62,0,0,1182,1147,1,0,0,0,1182,1148,1,0,0,0,1182,
        1153,1,0,0,0,1182,1160,1,0,0,0,1182,1165,1,0,0,0,1182,1170,1,0,0,
        0,1182,1172,1,0,0,0,1182,1174,1,0,0,0,1182,1176,1,0,0,0,1182,1179,
        1,0,0,0,1182,1180,1,0,0,0,1182,1181,1,0,0,0,1183,99,1,0,0,0,1184,
        1185,5,4,0,0,1185,1186,3,182,91,0,1186,1187,3,182,91,0,1187,1188,
        3,182,91,0,1188,1189,3,182,91,0,1189,1190,3,182,91,0,1190,1191,3,
        190,95,0,1191,1192,3,190,95,0,1192,101,1,0,0,0,1193,1194,5,68,0,
        0,1194,1195,3,182,91,0,1195,1196,3,190,95,0,1196,1197,3,190,95,0,
        1197,103,1,0,0,0,1198,1238,3,106,53,0,1199,1238,3,108,54,0,1200,
        1238,3,110,55,0,1201,1238,3,112,56,0,1202,1238,3,114,57,0,1203,1238,
        3,116,58,0,1204,1238,3,118,59,0,1205,1238,3,120,60,0,1206,1238,3,
        122,61,0,1207,1209,5,9,0,0,1208,1210,5,192,0,0,1209,1208,1,0,0,0,
        1209,1210,1,0,0,0,1210,1211,1,0,0,0,1211,1238,5,184,0,0,1212,1213,
        5,76,0,0,1213,1238,3,194,97,0,1214,1215,5,64,0,0,1215,1238,5,177,
        0,0,1216,1217,5,41,0,0,1217,1219,3,194,97,0,1218,1220,3,194,97,0,
        1219,1218,1,0,0,0,1219,1220,1,0,0,0,1220,1238,1,0,0,0,1221,1222,
        5,15,0,0,1222,1238,5,212,0,0,1223,1224,5,17,0,0,1224,1225,5,18,0,
        0,1225,1232,3,194,97,0,1226,1233,5,133,0,0,1227,1229,5,9,0,0,1228,
        1230,5,192,0,0,1229,1228,1,0,0,0,1229,1230,1,0,0,0,1230,1231,1,0,
        0,0,1231,1233,5,184,0,0,1232,1226,1,0,0,0,1232,1227,1,0,0,0,1233,
        1234,1,0,0,0,1234,1235,5,184,0,0,1235,1238,1,0,0,0,1236,1238,5,19,
        0,0,1237,1198,1,0,0,0,1237,1199,1,0,0,0,1237,1200,1,0,0,0,1237,1201,
        1,0,0,0,1237,1202,1,0,0,0,1237,1203,1,0,0,0,1237,1204,1,0,0,0,1237,
        1205,1,0,0,0,1237,1206,1,0,0,0,1237,1207,1,0,0,0,1237,1212,1,0,0,
        0,1237,1214,1,0,0,0,1237,1216,1,0,0,0,1237,1221,1,0,0,0,1237,1223,
        1,0,0,0,1237,1236,1,0,0,0,1238,105,1,0,0,0,1239,1240,5,70,0,0,1240,
        1242,3,182,91,0,1241,1243,3,182,91,0,1242,1241,1,0,0,0,1242,1243,
        1,0,0,0,1243,1244,1,0,0,0,1244,1246,3,190,95,0,1245,1247,3,190,95,
        0,1246,1245,1,0,0,0,1246,1247,1,0,0,0,1247,107,1,0,0,0,1248,1249,
        5,68,0,0,1249,1250,3,182,91,0,1250,1251,3,190,95,0,1251,109,1,0,
        0,0,1252,1253,5,50,0,0,1253,1254,3,182,91,0,1254,1255,3,182,91,0,
        1255,1256,3,182,91,0,1256,1258,5,184,0,0,1257,1259,5,178,0,0,1258,
        1257,1,0,0,0,1258,1259,1,0,0,0,1259,1260,1,0,0,0,1260,1261,5,184,
        0,0,1261,111,1,0,0,0,1262,1263,5,71,0,0,1263,1264,3,182,91,0,1264,
        113,1,0,0,0,1265,1266,5,65,0,0,1266,1267,3,182,91,0,1267,115,1,0,
        0,0,1268,1269,5,72,0,0,1269,1270,3,182,91,0,1270,117,1,0,0,0,1271,
        1272,5,73,0,0,1272,1273,3,182,91,0,1273,119,1,0,0,0,1274,1275,5,
        74,0,0,1275,1276,5,184,0,0,1276,1277,3,182,91,0,1277,1278,3,182,
        91,0,1278,1279,3,182,91,0,1279,1280,3,182,91,0,1280,1282,3,182,91,
        0,1281,1283,3,182,91,0,1282,1281,1,0,0,0,1282,1283,1,0,0,0,1283,
        121,1,0,0,0,1284,1285,5,75,0,0,1285,1286,3,182,91,0,1286,123,1,0,
        0,0,1287,1405,3,126,63,0,1288,1290,5,9,0,0,1289,1291,5,192,0,0,1290,
        1289,1,0,0,0,1290,1291,1,0,0,0,1291,1292,1,0,0,0,1292,1405,5,184,
        0,0,1293,1294,5,27,0,0,1294,1405,3,194,97,0,1295,1297,5,41,0,0,1296,
        1298,5,192,0,0,1297,1296,1,0,0,0,1297,1298,1,0,0,0,1298,1299,1,0,
        0,0,1299,1405,3,194,97,0,1300,1301,5,78,0,0,1301,1302,3,194,97,0,
        1302,1303,3,194,97,0,1303,1308,3,194,97,0,1304,1305,3,194,97,0,1305,
        1306,3,194,97,0,1306,1307,3,194,97,0,1307,1309,1,0,0,0,1308,1304,
        1,0,0,0,1308,1309,1,0,0,0,1309,1314,1,0,0,0,1310,1311,3,194,97,0,
        1311,1312,3,194,97,0,1312,1313,3,194,97,0,1313,1315,1,0,0,0,1314,
        1310,1,0,0,0,1314,1315,1,0,0,0,1315,1320,1,0,0,0,1316,1317,3,194,
        97,0,1317,1318,3,194,97,0,1318,1319,3,194,97,0,1319,1321,1,0,0,0,
        1320,1316,1,0,0,0,1320,1321,1,0,0,0,1321,1405,1,0,0,0,1322,1324,
        5,14,0,0,1323,1325,5,192,0,0,1324,1323,1,0,0,0,1324,1325,1,0,0,0,
        1325,1326,1,0,0,0,1326,1405,5,177,0,0,1327,1328,5,79,0,0,1328,1329,
        3,194,97,0,1329,1330,3,194,97,0,1330,1335,3,194,97,0,1331,1332,3,
        194,97,0,1332,1333,3,194,97,0,1333,1334,3,194,97,0,1334,1336,1,0,
        0,0,1335,1331,1,0,0,0,1335,1336,1,0,0,0,1336,1341,1,0,0,0,1337,1338,
        3,194,97,0,1338,1339,3,194,97,0,1339,1340,3,194,97,0,1340,1342,1,
        0,0,0,1341,1337,1,0,0,0,1341,1342,1,0,0,0,1342,1347,1,0,0,0,1343,
        1344,3,194,97,0,1344,1345,3,194,97,0,1345,1346,3,194,97,0,1346,1348,
        1,0,0,0,1347,1343,1,0,0,0,1347,1348,1,0,0,0,1348,1405,1,0,0,0,1349,
        1350,5,17,0,0,1350,1351,5,18,0,0,1351,1358,3,194,97,0,1352,1359,
        5,133,0,0,1353,1355,5,9,0,0,1354,1356,5,192,0,0,1355,1354,1,0,0,
        0,1355,1356,1,0,0,0,1356,1357,1,0,0,0,1357,1359,5,184,0,0,1358,1352,
        1,0,0,0,1358,1353,1,0,0,0,1359,1405,1,0,0,0,1360,1361,5,80,0,0,1361,
        1362,3,194,97,0,1362,1363,3,194,97,0,1363,1368,3,194,97,0,1364,1365,
        3,194,97,0,1365,1366,3,194,97,0,1366,1367,3,194,97,0,1367,1369,1,
        0,0,0,1368,1364,1,0,0,0,1368,1369,1,0,0,0,1369,1374,1,0,0,0,1370,
        1371,3,194,97,0,1371,1372,3,194,97,0,1372,1373,3,194,97,0,1373,1375,
        1,0,0,0,1374,1370,1,0,0,0,1374,1375,1,0,0,0,1375,1380,1,0,0,0,1376,
        1377,3,194,97,0,1377,1378,3,194,97,0,1378,1379,3,194,97,0,1379,1381,
        1,0,0,0,1380,1376,1,0,0,0,1380,1381,1,0,0,0,1381,1405,1,0,0,0,1382,
        1405,5,19,0,0,1383,1385,5,21,0,0,1384,1386,5,192,0,0,1385,1384,1,
        0,0,0,1385,1386,1,0,0,0,1386,1387,1,0,0,0,1387,1405,3,194,97,0,1388,
        1389,5,81,0,0,1389,1405,5,219,0,0,1390,1391,5,61,0,0,1391,1392,5,
        83,0,0,1392,1394,3,194,97,0,1393,1395,3,194,97,0,1394,1393,1,0,0,
        0,1394,1395,1,0,0,0,1395,1397,1,0,0,0,1396,1398,3,194,97,0,1397,
        1396,1,0,0,0,1397,1398,1,0,0,0,1398,1400,1,0,0,0,1399,1401,3,194,
        97,0,1400,1399,1,0,0,0,1400,1401,1,0,0,0,1401,1405,1,0,0,0,1402,
        1405,5,82,0,0,1403,1405,5,62,0,0,1404,1287,1,0,0,0,1404,1288,1,0,
        0,0,1404,1293,1,0,0,0,1404,1295,1,0,0,0,1404,1300,1,0,0,0,1404,1322,
        1,0,0,0,1404,1327,1,0,0,0,1404,1349,1,0,0,0,1404,1360,1,0,0,0,1404,
        1382,1,0,0,0,1404,1383,1,0,0,0,1404,1388,1,0,0,0,1404,1390,1,0,0,
        0,1404,1402,1,0,0,0,1404,1403,1,0,0,0,1405,125,1,0,0,0,1406,1407,
        5,4,0,0,1407,1408,3,182,91,0,1408,1409,3,182,91,0,1409,1410,3,182,
        91,0,1410,1416,3,182,91,0,1411,1412,3,182,91,0,1412,1413,3,182,91,
        0,1413,1414,3,182,91,0,1414,1415,3,182,91,0,1415,1417,1,0,0,0,1416,
        1411,1,0,0,0,1416,1417,1,0,0,0,1417,1423,1,0,0,0,1418,1419,3,182,
        91,0,1419,1420,3,182,91,0,1420,1421,3,182,91,0,1421,1422,3,182,91,
        0,1422,1424,1,0,0,0,1423,1418,1,0,0,0,1423,1424,1,0,0,0,1424,1430,
        1,0,0,0,1425,1426,3,182,91,0,1426,1427,3,182,91,0,1427,1428,3,182,
        91,0,1428,1429,3,182,91,0,1429,1431,1,0,0,0,1430,1425,1,0,0,0,1430,
        1431,1,0,0,0,1431,127,1,0,0,0,1432,1442,3,130,65,0,1433,1442,3,228,
        114,0,1434,1436,5,21,0,0,1435,1437,5,192,0,0,1436,1435,1,0,0,0,1436,
        1437,1,0,0,0,1437,1438,1,0,0,0,1438,1442,3,194,97,0,1439,1442,5,
        17,0,0,1440,1442,5,19,0,0,1441,1432,1,0,0,0,1441,1433,1,0,0,0,1441,
        1434,1,0,0,0,1441,1439,1,0,0,0,1441,1440,1,0,0,0,1442,129,1,0,0,
        0,1443,1444,5,4,0,0,1444,1445,3,182,91,0,1445,1446,3,190,95,0,1446,
        1447,3,190,95,0,1447,131,1,0,0,0,1448,1480,3,134,67,0,1449,1451,
        5,9,0,0,1450,1452,5,192,0,0,1451,1450,1,0,0,0,1451,1452,1,0,0,0,
        1452,1453,1,0,0,0,1453,1480,5,184,0,0,1454,1455,5,40,0,0,1455,1456,
        3,194,97,0,1456,1457,3,194,97,0,1457,1458,3,194,97,0,1458,1459,3,
        194,97,0,1459,1460,3,194,97,0,1460,1480,1,0,0,0,1461,1463,5,41,0,
        0,1462,1464,5,192,0,0,1463,1462,1,0,0,0,1463,1464,1,0,0,0,1464,1465,
        1,0,0,0,1465,1480,3,194,97,0,1466,1468,5,14,0,0,1467,1469,5,192,
        0,0,1468,1467,1,0,0,0,1468,1469,1,0,0,0,1469,1470,1,0,0,0,1470,1480,
        5,177,0,0,1471,1472,5,15,0,0,1472,1480,5,212,0,0,1473,1474,5,17,
        0,0,1474,1475,5,18,0,0,1475,1480,3,194,97,0,1476,1480,5,19,0,0,1477,
        1478,5,44,0,0,1478,1480,5,216,0,0,1479,1448,1,0,0,0,1479,1449,1,
        0,0,0,1479,1454,1,0,0,0,1479,1461,1,0,0,0,1479,1466,1,0,0,0,1479,
        1471,1,0,0,0,1479,1473,1,0,0,0,1479,1476,1,0,0,0,1479,1477,1,0,0,
        0,1480,133,1,0,0,0,1481,1482,5,4,0,0,1482,1483,3,182,91,0,1483,1484,
        3,182,91,0,1484,1485,3,182,91,0,1485,1486,3,182,91,0,1486,1487,3,
        182,91,0,1487,1488,3,182,91,0,1488,1490,3,190,95,0,1489,1491,3,190,
        95,0,1490,1489,1,0,0,0,1490,1491,1,0,0,0,1491,135,1,0,0,0,1492,1562,
        3,138,69,0,1493,1495,5,9,0,0,1494,1496,5,192,0,0,1495,1494,1,0,0,
        0,1495,1496,1,0,0,0,1496,1497,1,0,0,0,1497,1562,5,184,0,0,1498,1499,
        5,27,0,0,1499,1562,3,194,97,0,1500,1501,5,87,0,0,1501,1562,3,194,
        97,0,1502,1504,5,41,0,0,1503,1505,5,192,0,0,1504,1503,1,0,0,0,1504,
        1505,1,0,0,0,1505,1506,1,0,0,0,1506,1562,3,194,97,0,1507,1508,5,
        78,0,0,1508,1509,3,194,97,0,1509,1510,3,194,97,0,1510,1511,3,194,
        97,0,1511,1512,3,194,97,0,1512,1513,3,194,97,0,1513,1514,3,194,97,
        0,1514,1515,3,194,97,0,1515,1562,1,0,0,0,1516,1517,5,88,0,0,1517,
        1562,5,177,0,0,1518,1519,5,89,0,0,1519,1520,3,194,97,0,1520,1521,
        3,194,97,0,1521,1522,3,194,97,0,1522,1523,3,194,97,0,1523,1524,3,
        194,97,0,1524,1525,3,194,97,0,1525,1526,3,194,97,0,1526,1527,3,194,
        97,0,1527,1562,1,0,0,0,1528,1530,5,14,0,0,1529,1531,5,192,0,0,1530,
        1529,1,0,0,0,1530,1531,1,0,0,0,1531,1532,1,0,0,0,1532,1562,5,177,
        0,0,1533,1534,5,17,0,0,1534,1535,5,18,0,0,1535,1542,3,194,97,0,1536,
        1543,5,133,0,0,1537,1539,5,9,0,0,1538,1540,5,192,0,0,1539,1538,1,
        0,0,0,1539,1540,1,0,0,0,1540,1541,1,0,0,0,1541,1543,5,184,0,0,1542,
        1536,1,0,0,0,1542,1537,1,0,0,0,1543,1562,1,0,0,0,1544,1545,5,80,
        0,0,1545,1546,3,194,97,0,1546,1547,3,194,97,0,1547,1548,3,194,97,
        0,1548,1549,3,194,97,0,1549,1550,3,194,97,0,1550,1551,3,194,97,0,
        1551,1552,3,194,97,0,1552,1562,1,0,0,0,1553,1562,5,19,0,0,1554,1555,
        5,149,0,0,1555,1562,5,177,0,0,1556,1557,5,61,0,0,1557,1558,3,194,
        97,0,1558,1559,3,194,97,0,1559,1562,1,0,0,0,1560,1562,5,62,0,0,1561,
        1492,1,0,0,0,1561,1493,1,0,0,0,1561,1498,1,0,0,0,1561,1500,1,0,0,
        0,1561,1502,1,0,0,0,1561,1507,1,0,0,0,1561,1516,1,0,0,0,1561,1518,
        1,0,0,0,1561,1528,1,0,0,0,1561,1533,1,0,0,0,1561,1544,1,0,0,0,1561,
        1553,1,0,0,0,1561,1554,1,0,0,0,1561,1556,1,0,0,0,1561,1560,1,0,0,
        0,1562,137,1,0,0,0,1563,1564,5,4,0,0,1564,1565,3,182,91,0,1565,1566,
        3,182,91,0,1566,1567,3,182,91,0,1567,1568,3,182,91,0,1568,139,1,
        0,0,0,1569,1610,3,142,71,0,1570,1610,3,230,115,0,1571,1573,5,9,0,
        0,1572,1574,5,192,0,0,1573,1572,1,0,0,0,1573,1574,1,0,0,0,1574,1575,
        1,0,0,0,1575,1610,5,184,0,0,1576,1578,5,21,0,0,1577,1579,5,192,0,
        0,1578,1577,1,0,0,0,1578,1579,1,0,0,0,1579,1580,1,0,0,0,1580,1610,
        3,194,97,0,1581,1582,5,44,0,0,1582,1610,5,217,0,0,1583,1584,5,40,
        0,0,1584,1585,3,194,97,0,1585,1586,3,194,97,0,1586,1587,3,194,97,
        0,1587,1610,1,0,0,0,1588,1589,5,91,0,0,1589,1590,3,194,97,0,1590,
        1591,3,194,97,0,1591,1592,3,194,97,0,1592,1610,1,0,0,0,1593,1595,
        5,41,0,0,1594,1596,5,192,0,0,1595,1594,1,0,0,0,1595,1596,1,0,0,0,
        1596,1597,1,0,0,0,1597,1610,3,194,97,0,1598,1600,5,14,0,0,1599,1601,
        5,192,0,0,1600,1599,1,0,0,0,1600,1601,1,0,0,0,1601,1602,1,0,0,0,
        1602,1610,5,177,0,0,1603,1604,5,15,0,0,1604,1610,5,212,0,0,1605,
        1606,5,17,0,0,1606,1607,5,18,0,0,1607,1610,3,194,97,0,1608,1610,
        5,19,0,0,1609,1569,1,0,0,0,1609,1570,1,0,0,0,1609,1571,1,0,0,0,1609,
        1576,1,0,0,0,1609,1581,1,0,0,0,1609,1583,1,0,0,0,1609,1588,1,0,0,
        0,1609,1593,1,0,0,0,1609,1598,1,0,0,0,1609,1603,1,0,0,0,1609,1605,
        1,0,0,0,1609,1608,1,0,0,0,1610,141,1,0,0,0,1611,1612,5,4,0,0,1612,
        1613,3,182,91,0,1613,1614,3,182,91,0,1614,1615,3,182,91,0,1615,1616,
        3,182,91,0,1616,1617,3,182,91,0,1617,1618,3,182,91,0,1618,1619,3,
        182,91,0,1619,1621,3,190,95,0,1620,1622,3,190,95,0,1621,1620,1,0,
        0,0,1621,1622,1,0,0,0,1622,1624,1,0,0,0,1623,1625,3,190,95,0,1624,
        1623,1,0,0,0,1624,1625,1,0,0,0,1625,143,1,0,0,0,1626,1665,3,142,
        71,0,1627,1629,5,9,0,0,1628,1630,5,192,0,0,1629,1628,1,0,0,0,1629,
        1630,1,0,0,0,1630,1631,1,0,0,0,1631,1665,5,184,0,0,1632,1634,5,21,
        0,0,1633,1635,5,192,0,0,1634,1633,1,0,0,0,1634,1635,1,0,0,0,1635,
        1636,1,0,0,0,1636,1665,3,194,97,0,1637,1638,5,40,0,0,1638,1639,3,
        194,97,0,1639,1640,3,194,97,0,1640,1641,3,194,97,0,1641,1665,1,0,
        0,0,1642,1643,5,91,0,0,1643,1644,3,194,97,0,1644,1645,3,194,97,0,
        1645,1646,3,194,97,0,1646,1647,3,194,97,0,1647,1665,1,0,0,0,1648,
        1650,5,41,0,0,1649,1651,5,192,0,0,1650,1649,1,0,0,0,1650,1651,1,
        0,0,0,1651,1652,1,0,0,0,1652,1665,3,194,97,0,1653,1655,5,14,0,0,
        1654,1656,5,192,0,0,1655,1654,1,0,0,0,1655,1656,1,0,0,0,1656,1657,
        1,0,0,0,1657,1665,5,177,0,0,1658,1659,5,15,0,0,1659,1665,5,212,0,
        0,1660,1661,5,17,0,0,1661,1662,5,18,0,0,1662,1665,3,194,97,0,1663,
        1665,5,19,0,0,1664,1626,1,0,0,0,1664,1627,1,0,0,0,1664,1632,1,0,
        0,0,1664,1637,1,0,0,0,1664,1642,1,0,0,0,1664,1648,1,0,0,0,1664,1653,
        1,0,0,0,1664,1658,1,0,0,0,1664,1660,1,0,0,0,1664,1663,1,0,0,0,1665,
        145,1,0,0,0,1666,1698,3,148,74,0,1667,1669,5,9,0,0,1668,1670,5,192,
        0,0,1669,1668,1,0,0,0,1669,1670,1,0,0,0,1670,1671,1,0,0,0,1671,1698,
        5,184,0,0,1672,1673,5,40,0,0,1673,1674,3,194,97,0,1674,1675,3,194,
        97,0,1675,1676,3,194,97,0,1676,1677,3,194,97,0,1677,1678,3,194,97,
        0,1678,1679,3,194,97,0,1679,1680,3,194,97,0,1680,1698,1,0,0,0,1681,
        1683,5,41,0,0,1682,1684,5,192,0,0,1683,1682,1,0,0,0,1683,1684,1,
        0,0,0,1684,1685,1,0,0,0,1685,1698,3,194,97,0,1686,1688,5,14,0,0,
        1687,1689,5,192,0,0,1688,1687,1,0,0,0,1688,1689,1,0,0,0,1689,1690,
        1,0,0,0,1690,1698,5,177,0,0,1691,1692,5,15,0,0,1692,1698,5,212,0,
        0,1693,1694,5,17,0,0,1694,1695,5,18,0,0,1695,1698,3,194,97,0,1696,
        1698,5,19,0,0,1697,1666,1,0,0,0,1697,1667,1,0,0,0,1697,1672,1,0,
        0,0,1697,1681,1,0,0,0,1697,1686,1,0,0,0,1697,1691,1,0,0,0,1697,1693,
        1,0,0,0,1697,1696,1,0,0,0,1698,147,1,0,0,0,1699,1700,5,4,0,0,1700,
        1701,3,182,91,0,1701,1702,3,182,91,0,1702,1703,3,182,91,0,1703,1704,
        3,182,91,0,1704,1705,3,182,91,0,1705,1706,3,182,91,0,1706,1707,3,
        182,91,0,1707,1708,3,182,91,0,1708,1709,3,190,95,0,1709,1710,3,190,
        95,0,1710,149,1,0,0,0,1711,1755,3,152,76,0,1712,1714,5,9,0,0,1713,
        1715,5,192,0,0,1714,1713,1,0,0,0,1714,1715,1,0,0,0,1715,1716,1,0,
        0,0,1716,1755,5,184,0,0,1717,1718,5,95,0,0,1718,1755,5,184,0,0,1719,
        1720,5,60,0,0,1720,1721,5,177,0,0,1721,1722,5,177,0,0,1722,1755,
        3,194,97,0,1723,1724,5,76,0,0,1724,1755,3,194,97,0,1725,1727,5,41,
        0,0,1726,1728,5,192,0,0,1727,1726,1,0,0,0,1727,1728,1,0,0,0,1728,
        1729,1,0,0,0,1729,1755,3,194,97,0,1730,1732,5,14,0,0,1731,1733,5,
        192,0,0,1732,1731,1,0,0,0,1732,1733,1,0,0,0,1733,1734,1,0,0,0,1734,
        1755,5,177,0,0,1735,1736,5,15,0,0,1736,1755,5,212,0,0,1737,1738,
        5,17,0,0,1738,1739,5,18,0,0,1739,1746,3,194,97,0,1740,1747,5,133,
        0,0,1741,1743,5,9,0,0,1742,1744,5,192,0,0,1743,1742,1,0,0,0,1743,
        1744,1,0,0,0,1744,1745,1,0,0,0,1745,1747,5,184,0,0,1746,1740,1,0,
        0,0,1746,1741,1,0,0,0,1747,1755,1,0,0,0,1748,1755,5,19,0,0,1749,
        1750,5,61,0,0,1750,1751,5,96,0,0,1751,1752,5,177,0,0,1752,1755,5,
        177,0,0,1753,1755,5,62,0,0,1754,1711,1,0,0,0,1754,1712,1,0,0,0,1754,
        1717,1,0,0,0,1754,1719,1,0,0,0,1754,1723,1,0,0,0,1754,1725,1,0,0,
        0,1754,1730,1,0,0,0,1754,1735,1,0,0,0,1754,1737,1,0,0,0,1754,1748,
        1,0,0,0,1754,1749,1,0,0,0,1754,1753,1,0,0,0,1755,151,1,0,0,0,1756,
        1757,5,4,0,0,1757,1758,3,182,91,0,1758,1759,3,182,91,0,1759,1760,
        3,182,91,0,1760,1761,3,182,91,0,1761,1762,3,182,91,0,1762,1763,3,
        182,91,0,1763,1764,3,182,91,0,1764,1765,3,182,91,0,1765,1766,3,182,
        91,0,1766,1767,3,182,91,0,1767,1769,3,182,91,0,1768,1770,3,182,91,
        0,1769,1768,1,0,0,0,1769,1770,1,0,0,0,1770,153,1,0,0,0,1771,1829,
        3,156,78,0,1772,1829,3,232,116,0,1773,1775,5,9,0,0,1774,1776,5,192,
        0,0,1775,1774,1,0,0,0,1775,1776,1,0,0,0,1776,1777,1,0,0,0,1777,1829,
        5,184,0,0,1778,1780,5,41,0,0,1779,1781,5,192,0,0,1780,1779,1,0,0,
        0,1780,1781,1,0,0,0,1781,1782,1,0,0,0,1782,1783,5,184,0,0,1783,1829,
        3,194,97,0,1784,1786,5,14,0,0,1785,1787,5,192,0,0,1786,1785,1,0,
        0,0,1786,1787,1,0,0,0,1787,1788,1,0,0,0,1788,1829,5,177,0,0,1789,
        1791,5,15,0,0,1790,1792,5,211,0,0,1791,1790,1,0,0,0,1791,1792,1,
        0,0,0,1792,1793,1,0,0,0,1793,1794,5,213,0,0,1794,1829,5,212,0,0,
        1795,1797,5,98,0,0,1796,1798,5,192,0,0,1797,1796,1,0,0,0,1797,1798,
        1,0,0,0,1798,1799,1,0,0,0,1799,1800,5,184,0,0,1800,1829,3,194,97,
        0,1801,1803,5,99,0,0,1802,1804,5,192,0,0,1803,1802,1,0,0,0,1803,
        1804,1,0,0,0,1804,1805,1,0,0,0,1805,1806,5,184,0,0,1806,1829,3,194,
        97,0,1807,1809,5,100,0,0,1808,1810,5,192,0,0,1809,1808,1,0,0,0,1809,
        1810,1,0,0,0,1810,1811,1,0,0,0,1811,1812,5,184,0,0,1812,1813,3,194,
        97,0,1813,1814,3,194,97,0,1814,1829,1,0,0,0,1815,1816,5,17,0,0,1816,
        1817,5,18,0,0,1817,1824,3,194,97,0,1818,1825,5,133,0,0,1819,1821,
        5,9,0,0,1820,1822,5,192,0,0,1821,1820,1,0,0,0,1821,1822,1,0,0,0,
        1822,1823,1,0,0,0,1823,1825,5,184,0,0,1824,1818,1,0,0,0,1824,1819,
        1,0,0,0,1825,1829,1,0,0,0,1826,1829,5,19,0,0,1827,1829,5,101,0,0,
        1828,1771,1,0,0,0,1828,1772,1,0,0,0,1828,1773,1,0,0,0,1828,1778,
        1,0,0,0,1828,1784,1,0,0,0,1828,1789,1,0,0,0,1828,1795,1,0,0,0,1828,
        1801,1,0,0,0,1828,1807,1,0,0,0,1828,1815,1,0,0,0,1828,1826,1,0,0,
        0,1828,1827,1,0,0,0,1829,155,1,0,0,0,1830,1831,5,4,0,0,1831,1832,
        3,182,91,0,1832,1833,3,182,91,0,1833,1835,3,190,95,0,1834,1836,3,
        190,95,0,1835,1834,1,0,0,0,1835,1836,1,0,0,0,1836,157,1,0,0,0,1837,
        1887,3,160,80,0,1838,1887,3,234,117,0,1839,1841,5,9,0,0,1840,1842,
        5,192,0,0,1841,1840,1,0,0,0,1841,1842,1,0,0,0,1842,1843,1,0,0,0,
        1843,1887,5,184,0,0,1844,1845,5,103,0,0,1845,1887,5,177,0,0,1846,
        1847,5,40,0,0,1847,1848,3,194,97,0,1848,1849,3,194,97,0,1849,1887,
        1,0,0,0,1850,1852,5,41,0,0,1851,1853,5,192,0,0,1852,1851,1,0,0,0,
        1852,1853,1,0,0,0,1853,1854,1,0,0,0,1854,1887,3,194,97,0,1855,1857,
        5,14,0,0,1856,1858,5,192,0,0,1857,1856,1,0,0,0,1857,1858,1,0,0,0,
        1858,1859,1,0,0,0,1859,1887,5,177,0,0,1860,1861,5,17,0,0,1861,1862,
        5,18,0,0,1862,1869,3,194,97,0,1863,1870,5,133,0,0,1864,1866,5,9,
        0,0,1865,1867,5,192,0,0,1866,1865,1,0,0,0,1866,1867,1,0,0,0,1867,
        1868,1,0,0,0,1868,1870,5,184,0,0,1869,1863,1,0,0,0,1869,1864,1,0,
        0,0,1870,1887,1,0,0,0,1871,1887,5,19,0,0,1872,1873,5,104,0,0,1873,
        1887,5,184,0,0,1874,1875,5,105,0,0,1875,1876,3,194,97,0,1876,1877,
        5,177,0,0,1877,1887,1,0,0,0,1878,1887,5,106,0,0,1879,1887,5,107,
        0,0,1880,1887,5,108,0,0,1881,1887,5,109,0,0,1882,1887,5,110,0,0,
        1883,1887,5,111,0,0,1884,1885,5,112,0,0,1885,1887,5,177,0,0,1886,
        1837,1,0,0,0,1886,1838,1,0,0,0,1886,1839,1,0,0,0,1886,1844,1,0,0,
        0,1886,1846,1,0,0,0,1886,1850,1,0,0,0,1886,1855,1,0,0,0,1886,1860,
        1,0,0,0,1886,1871,1,0,0,0,1886,1872,1,0,0,0,1886,1874,1,0,0,0,1886,
        1878,1,0,0,0,1886,1879,1,0,0,0,1886,1880,1,0,0,0,1886,1881,1,0,0,
        0,1886,1882,1,0,0,0,1886,1883,1,0,0,0,1886,1884,1,0,0,0,1887,159,
        1,0,0,0,1888,1889,5,4,0,0,1889,1890,3,182,91,0,1890,1891,3,182,91,
        0,1891,1892,3,182,91,0,1892,1893,3,182,91,0,1893,1894,3,182,91,0,
        1894,1896,3,190,95,0,1895,1897,3,190,95,0,1896,1895,1,0,0,0,1896,
        1897,1,0,0,0,1897,161,1,0,0,0,1898,1934,3,164,82,0,1899,1901,5,9,
        0,0,1900,1902,5,192,0,0,1901,1900,1,0,0,0,1901,1902,1,0,0,0,1902,
        1903,1,0,0,0,1903,1934,5,184,0,0,1904,1905,5,103,0,0,1905,1934,5,
        177,0,0,1906,1907,5,40,0,0,1907,1908,3,194,97,0,1908,1909,3,194,
        97,0,1909,1934,1,0,0,0,1910,1912,5,41,0,0,1911,1913,5,192,0,0,1912,
        1911,1,0,0,0,1912,1913,1,0,0,0,1913,1914,1,0,0,0,1914,1934,3,194,
        97,0,1915,1917,5,14,0,0,1916,1918,5,192,0,0,1917,1916,1,0,0,0,1917,
        1918,1,0,0,0,1918,1919,1,0,0,0,1919,1934,5,177,0,0,1920,1934,5,106,
        0,0,1921,1934,5,107,0,0,1922,1934,5,105,0,0,1923,1934,5,108,0,0,
        1924,1934,5,109,0,0,1925,1934,5,112,0,0,1926,1927,5,17,0,0,1927,
        1934,5,18,0,0,1928,1934,5,19,0,0,1929,1930,5,104,0,0,1930,1934,5,
        184,0,0,1931,1934,5,110,0,0,1932,1934,5,111,0,0,1933,1898,1,0,0,
        0,1933,1899,1,0,0,0,1933,1904,1,0,0,0,1933,1906,1,0,0,0,1933,1910,
        1,0,0,0,1933,1915,1,0,0,0,1933,1920,1,0,0,0,1933,1921,1,0,0,0,1933,
        1922,1,0,0,0,1933,1923,1,0,0,0,1933,1924,1,0,0,0,1933,1925,1,0,0,
        0,1933,1926,1,0,0,0,1933,1928,1,0,0,0,1933,1929,1,0,0,0,1933,1931,
        1,0,0,0,1933,1932,1,0,0,0,1934,163,1,0,0,0,1935,1936,5,4,0,0,1936,
        1937,3,182,91,0,1937,1938,3,182,91,0,1938,1939,3,182,91,0,1939,1940,
        3,182,91,0,1940,1941,3,182,91,0,1941,1942,3,182,91,0,1942,1944,3,
        190,95,0,1943,1945,3,190,95,0,1944,1943,1,0,0,0,1944,1945,1,0,0,
        0,1945,165,1,0,0,0,1946,1967,3,168,84,0,1947,1949,5,9,0,0,1948,1950,
        5,192,0,0,1949,1948,1,0,0,0,1949,1950,1,0,0,0,1950,1951,1,0,0,0,
        1951,1967,5,184,0,0,1952,1954,5,41,0,0,1953,1955,5,192,0,0,1954,
        1953,1,0,0,0,1954,1955,1,0,0,0,1955,1956,1,0,0,0,1956,1967,3,194,
        97,0,1957,1959,5,14,0,0,1958,1960,5,192,0,0,1959,1958,1,0,0,0,1959,
        1960,1,0,0,0,1960,1961,1,0,0,0,1961,1967,5,177,0,0,1962,1963,5,17,
        0,0,1963,1964,5,18,0,0,1964,1967,3,194,97,0,1965,1967,5,19,0,0,1966,
        1946,1,0,0,0,1966,1947,1,0,0,0,1966,1952,1,0,0,0,1966,1957,1,0,0,
        0,1966,1962,1,0,0,0,1966,1965,1,0,0,0,1967,167,1,0,0,0,1968,1969,
        5,4,0,0,1969,1970,3,182,91,0,1970,1971,3,182,91,0,1971,1972,3,190,
        95,0,1972,1973,3,190,95,0,1973,1974,3,190,95,0,1974,169,1,0,0,0,
        1975,2002,3,172,86,0,1976,1978,5,9,0,0,1977,1979,5,192,0,0,1978,
        1977,1,0,0,0,1978,1979,1,0,0,0,1979,1980,1,0,0,0,1980,2002,5,184,
        0,0,1981,1982,5,116,0,0,1982,2002,5,177,0,0,1983,1984,5,40,0,0,1984,
        2002,3,194,97,0,1985,1987,5,41,0,0,1986,1988,5,192,0,0,1987,1986,
        1,0,0,0,1987,1988,1,0,0,0,1988,1989,1,0,0,0,1989,2002,3,194,97,0,
        1990,1992,5,14,0,0,1991,1993,5,192,0,0,1992,1991,1,0,0,0,1992,1993,
        1,0,0,0,1993,1994,1,0,0,0,1994,2002,5,177,0,0,1995,1996,5,17,0,0,
        1996,1997,5,18,0,0,1997,2002,3,194,97,0,1998,2002,5,19,0,0,1999,
        2000,5,112,0,0,2000,2002,5,177,0,0,2001,1975,1,0,0,0,2001,1976,1,
        0,0,0,2001,1981,1,0,0,0,2001,1983,1,0,0,0,2001,1985,1,0,0,0,2001,
        1990,1,0,0,0,2001,1995,1,0,0,0,2001,1998,1,0,0,0,2001,1999,1,0,0,
        0,2002,171,1,0,0,0,2003,2004,5,4,0,0,2004,2005,3,182,91,0,2005,2006,
        3,182,91,0,2006,2007,3,182,91,0,2007,2009,3,190,95,0,2008,2010,3,
        190,95,0,2009,2008,1,0,0,0,2009,2010,1,0,0,0,2010,173,1,0,0,0,2011,
        2033,3,176,88,0,2012,2033,3,236,118,0,2013,2015,5,9,0,0,2014,2016,
        5,192,0,0,2015,2014,1,0,0,0,2015,2016,1,0,0,0,2016,2017,1,0,0,0,
        2017,2033,5,184,0,0,2018,2020,5,41,0,0,2019,2021,5,192,0,0,2020,
        2019,1,0,0,0,2020,2021,1,0,0,0,2021,2022,1,0,0,0,2022,2033,3,194,
        97,0,2023,2025,5,14,0,0,2024,2026,5,192,0,0,2025,2024,1,0,0,0,2025,
        2026,1,0,0,0,2026,2027,1,0,0,0,2027,2033,5,177,0,0,2028,2029,5,17,
        0,0,2029,2030,5,18,0,0,2030,2033,3,194,97,0,2031,2033,5,19,0,0,2032,
        2011,1,0,0,0,2032,2012,1,0,0,0,2032,2013,1,0,0,0,2032,2018,1,0,0,
        0,2032,2023,1,0,0,0,2032,2028,1,0,0,0,2032,2031,1,0,0,0,2033,175,
        1,0,0,0,2034,2035,5,4,0,0,2035,2036,3,182,91,0,2036,2037,3,182,91,
        0,2037,2038,3,182,91,0,2038,177,1,0,0,0,2039,2107,3,180,90,0,2040,
        2107,3,238,119,0,2041,2043,5,117,0,0,2042,2044,5,192,0,0,2043,2042,
        1,0,0,0,2043,2044,1,0,0,0,2044,2045,1,0,0,0,2045,2107,3,194,97,0,
        2046,2048,5,118,0,0,2047,2049,5,192,0,0,2048,2047,1,0,0,0,2048,2049,
        1,0,0,0,2049,2050,1,0,0,0,2050,2107,3,194,97,0,2051,2053,5,119,0,
        0,2052,2054,5,192,0,0,2053,2052,1,0,0,0,2053,2054,1,0,0,0,2054,2055,
        1,0,0,0,2055,2107,5,177,0,0,2056,2058,5,120,0,0,2057,2059,5,192,
        0,0,2058,2057,1,0,0,0,2058,2059,1,0,0,0,2059,2060,1,0,0,0,2060,2107,
        5,177,0,0,2061,2063,5,121,0,0,2062,2064,5,192,0,0,2063,2062,1,0,
        0,0,2063,2064,1,0,0,0,2064,2065,1,0,0,0,2065,2107,5,177,0,0,2066,
        2068,5,122,0,0,2067,2069,5,192,0,0,2068,2067,1,0,0,0,2068,2069,1,
        0,0,0,2069,2070,1,0,0,0,2070,2107,5,184,0,0,2071,2073,5,123,0,0,
        2072,2074,5,192,0,0,2073,2072,1,0,0,0,2073,2074,1,0,0,0,2074,2075,
        1,0,0,0,2075,2107,3,194,97,0,2076,2078,5,124,0,0,2077,2079,5,192,
        0,0,2078,2077,1,0,0,0,2078,2079,1,0,0,0,2079,2080,1,0,0,0,2080,2107,
        3,194,97,0,2081,2083,5,125,0,0,2082,2084,5,192,0,0,2083,2082,1,0,
        0,0,2083,2084,1,0,0,0,2084,2085,1,0,0,0,2085,2107,3,194,97,0,2086,
        2088,5,126,0,0,2087,2089,5,192,0,0,2088,2087,1,0,0,0,2088,2089,1,
        0,0,0,2089,2090,1,0,0,0,2090,2107,3,194,97,0,2091,2093,5,127,0,0,
        2092,2094,5,192,0,0,2093,2092,1,0,0,0,2093,2094,1,0,0,0,2094,2095,
        1,0,0,0,2095,2107,5,177,0,0,2096,2098,5,128,0,0,2097,2099,5,192,
        0,0,2098,2097,1,0,0,0,2098,2099,1,0,0,0,2099,2100,1,0,0,0,2100,2107,
        5,177,0,0,2101,2103,5,129,0,0,2102,2104,5,192,0,0,2103,2102,1,0,
        0,0,2103,2104,1,0,0,0,2104,2105,1,0,0,0,2105,2107,5,177,0,0,2106,
        2039,1,0,0,0,2106,2040,1,0,0,0,2106,2041,1,0,0,0,2106,2046,1,0,0,
        0,2106,2051,1,0,0,0,2106,2056,1,0,0,0,2106,2061,1,0,0,0,2106,2066,
        1,0,0,0,2106,2071,1,0,0,0,2106,2076,1,0,0,0,2106,2081,1,0,0,0,2106,
        2086,1,0,0,0,2106,2091,1,0,0,0,2106,2096,1,0,0,0,2106,2101,1,0,0,
        0,2107,179,1,0,0,0,2108,2109,5,4,0,0,2109,2110,3,182,91,0,2110,2111,
        3,182,91,0,2111,181,1,0,0,0,2112,2113,5,189,0,0,2113,2114,3,184,
        92,0,2114,2115,5,190,0,0,2115,183,1,0,0,0,2116,2121,3,186,93,0,2117,
        2118,5,172,0,0,2118,2120,3,186,93,0,2119,2117,1,0,0,0,2120,2123,
        1,0,0,0,2121,2119,1,0,0,0,2121,2122,1,0,0,0,2122,185,1,0,0,0,2123,
        2121,1,0,0,0,2124,2129,3,188,94,0,2125,2126,5,173,0,0,2126,2128,
        3,188,94,0,2127,2125,1,0,0,0,2128,2131,1,0,0,0,2129,2127,1,0,0,0,
        2129,2130,1,0,0,0,2130,187,1,0,0,0,2131,2129,1,0,0,0,2132,2133,6,
        94,-1,0,2133,2134,5,189,0,0,2134,2135,3,184,92,0,2135,2136,5,190,
        0,0,2136,2272,1,0,0,0,2137,2272,5,133,0,0,2138,2139,5,135,0,0,2139,
        2140,7,1,0,0,2140,2141,7,2,0,0,2141,2272,7,1,0,0,2142,2144,5,136,
        0,0,2143,2145,5,204,0,0,2144,2143,1,0,0,0,2144,2145,1,0,0,0,2145,
        2146,1,0,0,0,2146,2147,5,205,0,0,2147,2148,5,206,0,0,2148,2272,3,
        192,96,0,2149,2150,5,137,0,0,2150,2272,3,188,94,29,2151,2152,5,138,
        0,0,2152,2272,3,188,94,28,2153,2154,5,139,0,0,2154,2272,3,188,94,
        27,2155,2163,5,140,0,0,2156,2164,5,185,0,0,2157,2160,5,184,0,0,2158,
        2159,5,191,0,0,2159,2161,5,184,0,0,2160,2158,1,0,0,0,2160,2161,1,
        0,0,0,2161,2164,1,0,0,0,2162,2164,5,198,0,0,2163,2156,1,0,0,0,2163,
        2157,1,0,0,0,2163,2162,1,0,0,0,2164,2272,1,0,0,0,2165,2272,5,141,
        0,0,2166,2167,5,142,0,0,2167,2272,5,177,0,0,2168,2272,5,143,0,0,
        2169,2182,5,144,0,0,2170,2183,5,185,0,0,2171,2174,5,184,0,0,2172,
        2173,5,191,0,0,2173,2175,5,184,0,0,2174,2172,1,0,0,0,2174,2175,1,
        0,0,0,2175,2183,1,0,0,0,2176,2179,5,180,0,0,2177,2178,5,191,0,0,
        2178,2180,5,180,0,0,2179,2177,1,0,0,0,2179,2180,1,0,0,0,2180,2183,
        1,0,0,0,2181,2183,5,198,0,0,2182,2170,1,0,0,0,2182,2171,1,0,0,0,
        2182,2176,1,0,0,0,2182,2181,1,0,0,0,2183,2272,1,0,0,0,2184,2185,
        5,174,0,0,2185,2272,3,188,94,21,2186,2187,5,145,0,0,2187,2188,5,
        189,0,0,2188,2190,3,192,96,0,2189,2191,5,175,0,0,2190,2189,1,0,0,
        0,2190,2191,1,0,0,0,2191,2192,1,0,0,0,2192,2194,3,192,96,0,2193,
        2195,5,175,0,0,2194,2193,1,0,0,0,2194,2195,1,0,0,0,2195,2196,1,0,
        0,0,2196,2197,3,192,96,0,2197,2198,5,190,0,0,2198,2199,5,146,0,0,
        2199,2200,3,192,96,0,2200,2272,1,0,0,0,2201,2202,5,145,0,0,2202,
        2203,5,189,0,0,2203,2205,5,170,0,0,2204,2206,5,192,0,0,2205,2204,
        1,0,0,0,2205,2206,1,0,0,0,2206,2207,1,0,0,0,2207,2209,3,182,91,0,
        2208,2210,5,175,0,0,2209,2208,1,0,0,0,2209,2210,1,0,0,0,2210,2216,
        1,0,0,0,2211,2213,5,171,0,0,2212,2214,5,192,0,0,2213,2212,1,0,0,
        0,2213,2214,1,0,0,0,2214,2215,1,0,0,0,2215,2217,3,182,91,0,2216,
        2211,1,0,0,0,2216,2217,1,0,0,0,2217,2218,1,0,0,0,2218,2219,5,190,
        0,0,2219,2220,5,146,0,0,2220,2221,3,192,96,0,2221,2272,1,0,0,0,2222,
        2272,5,147,0,0,2223,2272,5,148,0,0,2224,2232,5,149,0,0,2225,2233,
        5,186,0,0,2226,2229,5,177,0,0,2227,2228,5,191,0,0,2228,2230,5,177,
        0,0,2229,2227,1,0,0,0,2229,2230,1,0,0,0,2230,2233,1,0,0,0,2231,2233,
        5,198,0,0,2232,2225,1,0,0,0,2232,2226,1,0,0,0,2232,2231,1,0,0,0,
        2233,2272,1,0,0,0,2234,2242,5,150,0,0,2235,2243,5,185,0,0,2236,2239,
        5,184,0,0,2237,2238,5,191,0,0,2238,2240,5,184,0,0,2239,2237,1,0,
        0,0,2239,2240,1,0,0,0,2240,2243,1,0,0,0,2241,2243,5,198,0,0,2242,
        2235,1,0,0,0,2242,2236,1,0,0,0,2242,2241,1,0,0,0,2243,2272,1,0,0,
        0,2244,2257,5,152,0,0,2245,2258,5,185,0,0,2246,2249,5,184,0,0,2247,
        2248,5,191,0,0,2248,2250,5,184,0,0,2249,2247,1,0,0,0,2249,2250,1,
        0,0,0,2250,2258,1,0,0,0,2251,2254,5,180,0,0,2252,2253,5,191,0,0,
        2253,2255,5,180,0,0,2254,2252,1,0,0,0,2254,2255,1,0,0,0,2255,2258,
        1,0,0,0,2256,2258,5,198,0,0,2257,2245,1,0,0,0,2257,2246,1,0,0,0,
        2257,2251,1,0,0,0,2257,2256,1,0,0,0,2258,2272,1,0,0,0,2259,2272,
        5,153,0,0,2260,2272,5,154,0,0,2261,2272,5,155,0,0,2262,2272,5,156,
        0,0,2263,2272,5,157,0,0,2264,2272,5,158,0,0,2265,2272,5,159,0,0,
        2266,2272,5,160,0,0,2267,2272,5,161,0,0,2268,2272,5,162,0,0,2269,
        2272,5,130,0,0,2270,2272,5,131,0,0,2271,2132,1,0,0,0,2271,2137,1,
        0,0,0,2271,2138,1,0,0,0,2271,2142,1,0,0,0,2271,2149,1,0,0,0,2271,
        2151,1,0,0,0,2271,2153,1,0,0,0,2271,2155,1,0,0,0,2271,2165,1,0,0,
        0,2271,2166,1,0,0,0,2271,2168,1,0,0,0,2271,2169,1,0,0,0,2271,2184,
        1,0,0,0,2271,2186,1,0,0,0,2271,2201,1,0,0,0,2271,2222,1,0,0,0,2271,
        2223,1,0,0,0,2271,2224,1,0,0,0,2271,2234,1,0,0,0,2271,2244,1,0,0,
        0,2271,2259,1,0,0,0,2271,2260,1,0,0,0,2271,2261,1,0,0,0,2271,2262,
        1,0,0,0,2271,2263,1,0,0,0,2271,2264,1,0,0,0,2271,2265,1,0,0,0,2271,
        2266,1,0,0,0,2271,2267,1,0,0,0,2271,2268,1,0,0,0,2271,2269,1,0,0,
        0,2271,2270,1,0,0,0,2272,2281,1,0,0,0,2273,2274,10,32,0,0,2274,2275,
        5,134,0,0,2275,2280,3,192,96,0,2276,2277,10,14,0,0,2277,2278,5,151,
        0,0,2278,2280,3,192,96,0,2279,2273,1,0,0,0,2279,2276,1,0,0,0,2280,
        2283,1,0,0,0,2281,2279,1,0,0,0,2281,2282,1,0,0,0,2282,189,1,0,0,
        0,2283,2281,1,0,0,0,2284,2285,7,3,0,0,2285,191,1,0,0,0,2286,2287,
        7,4,0,0,2287,193,1,0,0,0,2288,2289,7,3,0,0,2289,195,1,0,0,0,2290,
        2291,7,4,0,0,2291,197,1,0,0,0,2292,2303,5,132,0,0,2293,2301,5,221,
        0,0,2294,2296,5,224,0,0,2295,2294,1,0,0,0,2296,2299,1,0,0,0,2297,
        2295,1,0,0,0,2297,2298,1,0,0,0,2298,2302,1,0,0,0,2299,2297,1,0,0,
        0,2300,2302,5,225,0,0,2301,2297,1,0,0,0,2301,2300,1,0,0,0,2302,2304,
        1,0,0,0,2303,2293,1,0,0,0,2303,2304,1,0,0,0,2304,2305,1,0,0,0,2305,
        2309,5,222,0,0,2306,2308,5,224,0,0,2307,2306,1,0,0,0,2308,2311,1,
        0,0,0,2309,2307,1,0,0,0,2309,2310,1,0,0,0,2310,2312,1,0,0,0,2311,
        2309,1,0,0,0,2312,2313,5,223,0,0,2313,199,1,0,0,0,2314,2315,5,163,
        0,0,2315,2316,3,202,101,0,2316,2317,3,182,91,0,2317,201,1,0,0,0,
        2318,2319,7,5,0,0,2319,2320,3,204,102,0,2320,2321,5,227,0,0,2321,
        2325,1,0,0,0,2322,2323,5,166,0,0,2323,2325,3,212,106,0,2324,2318,
        1,0,0,0,2324,2322,1,0,0,0,2325,203,1,0,0,0,2326,2329,5,237,0,0,2327,
        2328,5,228,0,0,2328,2330,3,206,103,0,2329,2327,1,0,0,0,2329,2330,
        1,0,0,0,2330,205,1,0,0,0,2331,2334,3,208,104,0,2332,2333,7,6,0,0,
        2333,2335,3,206,103,0,2334,2332,1,0,0,0,2334,2335,1,0,0,0,2335,207,
        1,0,0,0,2336,2344,5,237,0,0,2337,2344,3,210,105,0,2338,2344,5,235,
        0,0,2339,2344,5,236,0,0,2340,2344,5,261,0,0,2341,2344,5,260,0,0,
        2342,2344,5,262,0,0,2343,2336,1,0,0,0,2343,2337,1,0,0,0,2343,2338,
        1,0,0,0,2343,2339,1,0,0,0,2343,2340,1,0,0,0,2343,2341,1,0,0,0,2343,
        2342,1,0,0,0,2344,209,1,0,0,0,2345,2346,5,238,0,0,2346,2347,5,264,
        0,0,2347,2348,3,208,104,0,2348,2349,5,227,0,0,2349,2465,1,0,0,0,
        2350,2351,5,239,0,0,2351,2352,5,264,0,0,2352,2353,3,208,104,0,2353,
        2354,5,227,0,0,2354,2465,1,0,0,0,2355,2356,5,241,0,0,2356,2357,5,
        264,0,0,2357,2358,3,208,104,0,2358,2359,5,227,0,0,2359,2465,1,0,
        0,0,2360,2361,5,242,0,0,2361,2362,5,264,0,0,2362,2363,3,208,104,
        0,2363,2364,5,227,0,0,2364,2465,1,0,0,0,2365,2366,5,243,0,0,2366,
        2367,5,264,0,0,2367,2368,3,208,104,0,2368,2369,5,227,0,0,2369,2465,
        1,0,0,0,2370,2371,5,244,0,0,2371,2372,5,264,0,0,2372,2373,3,208,
        104,0,2373,2374,5,227,0,0,2374,2465,1,0,0,0,2375,2376,5,245,0,0,
        2376,2377,5,264,0,0,2377,2378,3,208,104,0,2378,2379,5,227,0,0,2379,
        2465,1,0,0,0,2380,2381,5,246,0,0,2381,2382,5,264,0,0,2382,2383,3,
        208,104,0,2383,2384,5,227,0,0,2384,2465,1,0,0,0,2385,2386,5,247,
        0,0,2386,2387,5,264,0,0,2387,2388,3,208,104,0,2388,2389,5,227,0,
        0,2389,2465,1,0,0,0,2390,2391,5,248,0,0,2391,2392,5,264,0,0,2392,
        2393,3,208,104,0,2393,2394,5,227,0,0,2394,2465,1,0,0,0,2395,2396,
        5,249,0,0,2396,2397,5,264,0,0,2397,2398,3,208,104,0,2398,2399,5,
        227,0,0,2399,2465,1,0,0,0,2400,2401,5,250,0,0,2401,2402,5,264,0,
        0,2402,2407,3,208,104,0,2403,2404,5,234,0,0,2404,2406,3,208,104,
        0,2405,2403,1,0,0,0,2406,2409,1,0,0,0,2407,2405,1,0,0,0,2407,2408,
        1,0,0,0,2408,2410,1,0,0,0,2409,2407,1,0,0,0,2410,2411,5,227,0,0,
        2411,2465,1,0,0,0,2412,2413,5,251,0,0,2413,2414,5,264,0,0,2414,2415,
        3,208,104,0,2415,2416,5,227,0,0,2416,2465,1,0,0,0,2417,2418,5,252,
        0,0,2418,2419,5,264,0,0,2419,2424,3,208,104,0,2420,2421,5,234,0,
        0,2421,2423,3,208,104,0,2422,2420,1,0,0,0,2423,2426,1,0,0,0,2424,
        2422,1,0,0,0,2424,2425,1,0,0,0,2425,2427,1,0,0,0,2426,2424,1,0,0,
        0,2427,2428,5,227,0,0,2428,2465,1,0,0,0,2429,2430,5,253,0,0,2430,
        2431,5,264,0,0,2431,2432,3,208,104,0,2432,2433,5,234,0,0,2433,2434,
        3,208,104,0,2434,2435,5,227,0,0,2435,2465,1,0,0,0,2436,2437,5,254,
        0,0,2437,2438,5,264,0,0,2438,2439,3,208,104,0,2439,2440,5,227,0,
        0,2440,2465,1,0,0,0,2441,2442,5,255,0,0,2442,2443,5,264,0,0,2443,
        2465,5,227,0,0,2444,2445,5,256,0,0,2445,2446,5,264,0,0,2446,2447,
        3,208,104,0,2447,2448,5,227,0,0,2448,2465,1,0,0,0,2449,2450,5,257,
        0,0,2450,2451,5,264,0,0,2451,2452,3,208,104,0,2452,2453,5,227,0,
        0,2453,2465,1,0,0,0,2454,2455,5,258,0,0,2455,2456,5,264,0,0,2456,
        2457,3,208,104,0,2457,2458,5,227,0,0,2458,2465,1,0,0,0,2459,2460,
        5,259,0,0,2460,2461,5,264,0,0,2461,2462,3,208,104,0,2462,2463,5,
        227,0,0,2463,2465,1,0,0,0,2464,2345,1,0,0,0,2464,2350,1,0,0,0,2464,
        2355,1,0,0,0,2464,2360,1,0,0,0,2464,2365,1,0,0,0,2464,2370,1,0,0,
        0,2464,2375,1,0,0,0,2464,2380,1,0,0,0,2464,2385,1,0,0,0,2464,2390,
        1,0,0,0,2464,2395,1,0,0,0,2464,2400,1,0,0,0,2464,2412,1,0,0,0,2464,
        2417,1,0,0,0,2464,2429,1,0,0,0,2464,2436,1,0,0,0,2464,2441,1,0,0,
        0,2464,2444,1,0,0,0,2464,2449,1,0,0,0,2464,2454,1,0,0,0,2464,2459,
        1,0,0,0,2465,211,1,0,0,0,2466,2467,7,7,0,0,2467,2468,5,266,0,0,2468,
        2469,5,275,0,0,2469,2470,5,267,0,0,2470,213,1,0,0,0,2471,2472,5,
        167,0,0,2472,2473,5,260,0,0,2473,2474,5,228,0,0,2474,2475,3,216,
        108,0,2475,2476,5,227,0,0,2476,215,1,0,0,0,2477,2480,3,208,104,0,
        2478,2479,7,6,0,0,2479,2481,3,216,108,0,2480,2478,1,0,0,0,2480,2481,
        1,0,0,0,2481,217,1,0,0,0,2482,2483,5,168,0,0,2483,2484,5,282,0,0,
        2484,2485,5,279,0,0,2485,2504,5,277,0,0,2486,2488,5,280,0,0,2487,
        2486,1,0,0,0,2488,2491,1,0,0,0,2489,2487,1,0,0,0,2489,2490,1,0,0,
        0,2490,2505,1,0,0,0,2491,2489,1,0,0,0,2492,2494,5,281,0,0,2493,2492,
        1,0,0,0,2494,2497,1,0,0,0,2495,2493,1,0,0,0,2495,2496,1,0,0,0,2496,
        2505,1,0,0,0,2497,2495,1,0,0,0,2498,2500,5,283,0,0,2499,2498,1,0,
        0,0,2500,2503,1,0,0,0,2501,2499,1,0,0,0,2501,2502,1,0,0,0,2502,2505,
        1,0,0,0,2503,2501,1,0,0,0,2504,2489,1,0,0,0,2504,2495,1,0,0,0,2504,
        2501,1,0,0,0,2505,2506,1,0,0,0,2506,2507,5,278,0,0,2507,2508,5,169,
        0,0,2508,2513,5,286,0,0,2509,2512,3,214,107,0,2510,2512,3,52,26,
        0,2511,2509,1,0,0,0,2511,2510,1,0,0,0,2512,2515,1,0,0,0,2513,2511,
        1,0,0,0,2513,2514,1,0,0,0,2514,2516,1,0,0,0,2515,2513,1,0,0,0,2516,
        2517,5,2,0,0,2517,2518,5,169,0,0,2518,2519,5,286,0,0,2519,219,1,
        0,0,0,2520,2521,5,168,0,0,2521,2522,5,282,0,0,2522,2523,5,279,0,
        0,2523,2542,5,277,0,0,2524,2526,5,280,0,0,2525,2524,1,0,0,0,2526,
        2529,1,0,0,0,2527,2525,1,0,0,0,2527,2528,1,0,0,0,2528,2543,1,0,0,
        0,2529,2527,1,0,0,0,2530,2532,5,281,0,0,2531,2530,1,0,0,0,2532,2535,
        1,0,0,0,2533,2531,1,0,0,0,2533,2534,1,0,0,0,2534,2543,1,0,0,0,2535,
        2533,1,0,0,0,2536,2538,5,283,0,0,2537,2536,1,0,0,0,2538,2541,1,0,
        0,0,2539,2537,1,0,0,0,2539,2540,1,0,0,0,2540,2543,1,0,0,0,2541,2539,
        1,0,0,0,2542,2527,1,0,0,0,2542,2533,1,0,0,0,2542,2539,1,0,0,0,2543,
        2544,1,0,0,0,2544,2545,5,278,0,0,2545,2546,5,169,0,0,2546,2551,5,
        286,0,0,2547,2550,3,214,107,0,2548,2550,3,60,30,0,2549,2547,1,0,
        0,0,2549,2548,1,0,0,0,2550,2553,1,0,0,0,2551,2549,1,0,0,0,2551,2552,
        1,0,0,0,2552,2554,1,0,0,0,2553,2551,1,0,0,0,2554,2555,5,2,0,0,2555,
        2556,5,169,0,0,2556,2557,5,286,0,0,2557,221,1,0,0,0,2558,2559,5,
        168,0,0,2559,2560,5,282,0,0,2560,2561,5,279,0,0,2561,2580,5,277,
        0,0,2562,2564,5,280,0,0,2563,2562,1,0,0,0,2564,2567,1,0,0,0,2565,
        2563,1,0,0,0,2565,2566,1,0,0,0,2566,2581,1,0,0,0,2567,2565,1,0,0,
        0,2568,2570,5,281,0,0,2569,2568,1,0,0,0,2570,2573,1,0,0,0,2571,2569,
        1,0,0,0,2571,2572,1,0,0,0,2572,2581,1,0,0,0,2573,2571,1,0,0,0,2574,
        2576,5,283,0,0,2575,2574,1,0,0,0,2576,2579,1,0,0,0,2577,2575,1,0,
        0,0,2577,2578,1,0,0,0,2578,2581,1,0,0,0,2579,2577,1,0,0,0,2580,2565,
        1,0,0,0,2580,2571,1,0,0,0,2580,2577,1,0,0,0,2581,2582,1,0,0,0,2582,
        2583,5,278,0,0,2583,2584,5,169,0,0,2584,2589,5,286,0,0,2585,2588,
        3,214,107,0,2586,2588,3,64,32,0,2587,2585,1,0,0,0,2587,2586,1,0,
        0,0,2588,2591,1,0,0,0,2589,2587,1,0,0,0,2589,2590,1,0,0,0,2590,2592,
        1,0,0,0,2591,2589,1,0,0,0,2592,2593,5,2,0,0,2593,2594,5,169,0,0,
        2594,2595,5,286,0,0,2595,223,1,0,0,0,2596,2597,5,168,0,0,2597,2598,
        5,282,0,0,2598,2599,5,279,0,0,2599,2618,5,277,0,0,2600,2602,5,280,
        0,0,2601,2600,1,0,0,0,2602,2605,1,0,0,0,2603,2601,1,0,0,0,2603,2604,
        1,0,0,0,2604,2619,1,0,0,0,2605,2603,1,0,0,0,2606,2608,5,281,0,0,
        2607,2606,1,0,0,0,2608,2611,1,0,0,0,2609,2607,1,0,0,0,2609,2610,
        1,0,0,0,2610,2619,1,0,0,0,2611,2609,1,0,0,0,2612,2614,5,283,0,0,
        2613,2612,1,0,0,0,2614,2617,1,0,0,0,2615,2613,1,0,0,0,2615,2616,
        1,0,0,0,2616,2619,1,0,0,0,2617,2615,1,0,0,0,2618,2603,1,0,0,0,2618,
        2609,1,0,0,0,2618,2615,1,0,0,0,2619,2620,1,0,0,0,2620,2621,5,278,
        0,0,2621,2622,5,169,0,0,2622,2627,5,286,0,0,2623,2626,3,214,107,
        0,2624,2626,3,92,46,0,2625,2623,1,0,0,0,2625,2624,1,0,0,0,2626,2629,
        1,0,0,0,2627,2625,1,0,0,0,2627,2628,1,0,0,0,2628,2630,1,0,0,0,2629,
        2627,1,0,0,0,2630,2631,5,2,0,0,2631,2632,5,169,0,0,2632,2633,5,286,
        0,0,2633,225,1,0,0,0,2634,2635,5,168,0,0,2635,2636,5,282,0,0,2636,
        2637,5,279,0,0,2637,2656,5,277,0,0,2638,2640,5,280,0,0,2639,2638,
        1,0,0,0,2640,2643,1,0,0,0,2641,2639,1,0,0,0,2641,2642,1,0,0,0,2642,
        2657,1,0,0,0,2643,2641,1,0,0,0,2644,2646,5,281,0,0,2645,2644,1,0,
        0,0,2646,2649,1,0,0,0,2647,2645,1,0,0,0,2647,2648,1,0,0,0,2648,2657,
        1,0,0,0,2649,2647,1,0,0,0,2650,2652,5,283,0,0,2651,2650,1,0,0,0,
        2652,2655,1,0,0,0,2653,2651,1,0,0,0,2653,2654,1,0,0,0,2654,2657,
        1,0,0,0,2655,2653,1,0,0,0,2656,2641,1,0,0,0,2656,2647,1,0,0,0,2656,
        2653,1,0,0,0,2657,2658,1,0,0,0,2658,2659,5,278,0,0,2659,2660,5,169,
        0,0,2660,2665,5,286,0,0,2661,2664,3,214,107,0,2662,2664,3,96,48,
        0,2663,2661,1,0,0,0,2663,2662,1,0,0,0,2664,2667,1,0,0,0,2665,2663,
        1,0,0,0,2665,2666,1,0,0,0,2666,2668,1,0,0,0,2667,2665,1,0,0,0,2668,
        2669,5,2,0,0,2669,2670,5,169,0,0,2670,2671,5,286,0,0,2671,227,1,
        0,0,0,2672,2673,5,168,0,0,2673,2674,5,282,0,0,2674,2675,5,279,0,
        0,2675,2694,5,277,0,0,2676,2678,5,280,0,0,2677,2676,1,0,0,0,2678,
        2681,1,0,0,0,2679,2677,1,0,0,0,2679,2680,1,0,0,0,2680,2695,1,0,0,
        0,2681,2679,1,0,0,0,2682,2684,5,281,0,0,2683,2682,1,0,0,0,2684,2687,
        1,0,0,0,2685,2683,1,0,0,0,2685,2686,1,0,0,0,2686,2695,1,0,0,0,2687,
        2685,1,0,0,0,2688,2690,5,283,0,0,2689,2688,1,0,0,0,2690,2693,1,0,
        0,0,2691,2689,1,0,0,0,2691,2692,1,0,0,0,2692,2695,1,0,0,0,2693,2691,
        1,0,0,0,2694,2679,1,0,0,0,2694,2685,1,0,0,0,2694,2691,1,0,0,0,2695,
        2696,1,0,0,0,2696,2697,5,278,0,0,2697,2698,5,169,0,0,2698,2703,5,
        286,0,0,2699,2702,3,214,107,0,2700,2702,3,130,65,0,2701,2699,1,0,
        0,0,2701,2700,1,0,0,0,2702,2705,1,0,0,0,2703,2701,1,0,0,0,2703,2704,
        1,0,0,0,2704,2706,1,0,0,0,2705,2703,1,0,0,0,2706,2707,5,2,0,0,2707,
        2708,5,169,0,0,2708,2709,5,286,0,0,2709,229,1,0,0,0,2710,2711,5,
        168,0,0,2711,2712,5,282,0,0,2712,2713,5,279,0,0,2713,2732,5,277,
        0,0,2714,2716,5,280,0,0,2715,2714,1,0,0,0,2716,2719,1,0,0,0,2717,
        2715,1,0,0,0,2717,2718,1,0,0,0,2718,2733,1,0,0,0,2719,2717,1,0,0,
        0,2720,2722,5,281,0,0,2721,2720,1,0,0,0,2722,2725,1,0,0,0,2723,2721,
        1,0,0,0,2723,2724,1,0,0,0,2724,2733,1,0,0,0,2725,2723,1,0,0,0,2726,
        2728,5,283,0,0,2727,2726,1,0,0,0,2728,2731,1,0,0,0,2729,2727,1,0,
        0,0,2729,2730,1,0,0,0,2730,2733,1,0,0,0,2731,2729,1,0,0,0,2732,2717,
        1,0,0,0,2732,2723,1,0,0,0,2732,2729,1,0,0,0,2733,2734,1,0,0,0,2734,
        2735,5,278,0,0,2735,2736,5,169,0,0,2736,2741,5,286,0,0,2737,2740,
        3,214,107,0,2738,2740,3,142,71,0,2739,2737,1,0,0,0,2739,2738,1,0,
        0,0,2740,2743,1,0,0,0,2741,2739,1,0,0,0,2741,2742,1,0,0,0,2742,2744,
        1,0,0,0,2743,2741,1,0,0,0,2744,2745,5,2,0,0,2745,2746,5,169,0,0,
        2746,2747,5,286,0,0,2747,231,1,0,0,0,2748,2749,5,168,0,0,2749,2750,
        5,282,0,0,2750,2751,5,279,0,0,2751,2770,5,277,0,0,2752,2754,5,280,
        0,0,2753,2752,1,0,0,0,2754,2757,1,0,0,0,2755,2753,1,0,0,0,2755,2756,
        1,0,0,0,2756,2771,1,0,0,0,2757,2755,1,0,0,0,2758,2760,5,281,0,0,
        2759,2758,1,0,0,0,2760,2763,1,0,0,0,2761,2759,1,0,0,0,2761,2762,
        1,0,0,0,2762,2771,1,0,0,0,2763,2761,1,0,0,0,2764,2766,5,283,0,0,
        2765,2764,1,0,0,0,2766,2769,1,0,0,0,2767,2765,1,0,0,0,2767,2768,
        1,0,0,0,2768,2771,1,0,0,0,2769,2767,1,0,0,0,2770,2755,1,0,0,0,2770,
        2761,1,0,0,0,2770,2767,1,0,0,0,2771,2772,1,0,0,0,2772,2773,5,278,
        0,0,2773,2774,5,169,0,0,2774,2779,5,286,0,0,2775,2778,3,214,107,
        0,2776,2778,3,156,78,0,2777,2775,1,0,0,0,2777,2776,1,0,0,0,2778,
        2781,1,0,0,0,2779,2777,1,0,0,0,2779,2780,1,0,0,0,2780,2782,1,0,0,
        0,2781,2779,1,0,0,0,2782,2783,5,2,0,0,2783,2784,5,169,0,0,2784,2785,
        5,286,0,0,2785,233,1,0,0,0,2786,2787,5,168,0,0,2787,2788,5,282,0,
        0,2788,2789,5,279,0,0,2789,2808,5,277,0,0,2790,2792,5,280,0,0,2791,
        2790,1,0,0,0,2792,2795,1,0,0,0,2793,2791,1,0,0,0,2793,2794,1,0,0,
        0,2794,2809,1,0,0,0,2795,2793,1,0,0,0,2796,2798,5,281,0,0,2797,2796,
        1,0,0,0,2798,2801,1,0,0,0,2799,2797,1,0,0,0,2799,2800,1,0,0,0,2800,
        2809,1,0,0,0,2801,2799,1,0,0,0,2802,2804,5,283,0,0,2803,2802,1,0,
        0,0,2804,2807,1,0,0,0,2805,2803,1,0,0,0,2805,2806,1,0,0,0,2806,2809,
        1,0,0,0,2807,2805,1,0,0,0,2808,2793,1,0,0,0,2808,2799,1,0,0,0,2808,
        2805,1,0,0,0,2809,2810,1,0,0,0,2810,2811,5,278,0,0,2811,2812,5,169,
        0,0,2812,2817,5,286,0,0,2813,2816,3,214,107,0,2814,2816,3,160,80,
        0,2815,2813,1,0,0,0,2815,2814,1,0,0,0,2816,2819,1,0,0,0,2817,2815,
        1,0,0,0,2817,2818,1,0,0,0,2818,2820,1,0,0,0,2819,2817,1,0,0,0,2820,
        2821,5,2,0,0,2821,2822,5,169,0,0,2822,2823,5,286,0,0,2823,235,1,
        0,0,0,2824,2825,5,168,0,0,2825,2826,5,282,0,0,2826,2827,5,279,0,
        0,2827,2846,5,277,0,0,2828,2830,5,280,0,0,2829,2828,1,0,0,0,2830,
        2833,1,0,0,0,2831,2829,1,0,0,0,2831,2832,1,0,0,0,2832,2847,1,0,0,
        0,2833,2831,1,0,0,0,2834,2836,5,281,0,0,2835,2834,1,0,0,0,2836,2839,
        1,0,0,0,2837,2835,1,0,0,0,2837,2838,1,0,0,0,2838,2847,1,0,0,0,2839,
        2837,1,0,0,0,2840,2842,5,283,0,0,2841,2840,1,0,0,0,2842,2845,1,0,
        0,0,2843,2841,1,0,0,0,2843,2844,1,0,0,0,2844,2847,1,0,0,0,2845,2843,
        1,0,0,0,2846,2831,1,0,0,0,2846,2837,1,0,0,0,2846,2843,1,0,0,0,2847,
        2848,1,0,0,0,2848,2849,5,278,0,0,2849,2850,5,169,0,0,2850,2855,5,
        286,0,0,2851,2854,3,214,107,0,2852,2854,3,176,88,0,2853,2851,1,0,
        0,0,2853,2852,1,0,0,0,2854,2857,1,0,0,0,2855,2853,1,0,0,0,2855,2856,
        1,0,0,0,2856,2858,1,0,0,0,2857,2855,1,0,0,0,2858,2859,5,2,0,0,2859,
        2860,5,169,0,0,2860,2861,5,286,0,0,2861,237,1,0,0,0,2862,2863,5,
        168,0,0,2863,2864,5,282,0,0,2864,2865,5,279,0,0,2865,2884,5,277,
        0,0,2866,2868,5,280,0,0,2867,2866,1,0,0,0,2868,2871,1,0,0,0,2869,
        2867,1,0,0,0,2869,2870,1,0,0,0,2870,2885,1,0,0,0,2871,2869,1,0,0,
        0,2872,2874,5,281,0,0,2873,2872,1,0,0,0,2874,2877,1,0,0,0,2875,2873,
        1,0,0,0,2875,2876,1,0,0,0,2876,2885,1,0,0,0,2877,2875,1,0,0,0,2878,
        2880,5,283,0,0,2879,2878,1,0,0,0,2880,2883,1,0,0,0,2881,2879,1,0,
        0,0,2881,2882,1,0,0,0,2882,2885,1,0,0,0,2883,2881,1,0,0,0,2884,2869,
        1,0,0,0,2884,2875,1,0,0,0,2884,2881,1,0,0,0,2885,2886,1,0,0,0,2886,
        2887,5,278,0,0,2887,2888,5,169,0,0,2888,2893,5,286,0,0,2889,2892,
        3,214,107,0,2890,2892,3,180,90,0,2891,2889,1,0,0,0,2891,2890,1,0,
        0,0,2892,2895,1,0,0,0,2893,2891,1,0,0,0,2893,2894,1,0,0,0,2894,2896,
        1,0,0,0,2895,2893,1,0,0,0,2896,2897,5,2,0,0,2897,2898,5,169,0,0,
        2898,2899,5,286,0,0,2899,239,1,0,0,0,344,292,294,303,309,315,324,
        332,340,348,356,360,363,369,375,381,390,399,408,417,426,435,444,
        453,462,471,480,489,498,507,516,525,534,543,552,570,575,592,605,
        629,632,639,642,647,652,657,660,663,667,672,677,684,688,693,698,
        703,708,713,718,721,727,733,736,752,762,767,776,787,790,795,802,
        816,821,830,847,852,857,862,869,874,881,893,898,905,914,921,926,
        937,942,953,962,968,973,977,982,985,989,994,999,1003,1009,1013,1017,
        1020,1022,1026,1038,1046,1051,1060,1063,1071,1081,1092,1100,1104,
        1109,1120,1123,1126,1138,1145,1150,1162,1167,1182,1209,1219,1229,
        1232,1237,1242,1246,1258,1282,1290,1297,1308,1314,1320,1324,1335,
        1341,1347,1355,1358,1368,1374,1380,1385,1394,1397,1400,1404,1416,
        1423,1430,1436,1441,1451,1463,1468,1479,1490,1495,1504,1530,1539,
        1542,1561,1573,1578,1595,1600,1609,1621,1624,1629,1634,1650,1655,
        1664,1669,1683,1688,1697,1714,1727,1732,1743,1746,1754,1769,1775,
        1780,1786,1791,1797,1803,1809,1821,1824,1828,1835,1841,1852,1857,
        1866,1869,1886,1896,1901,1912,1917,1933,1944,1949,1954,1959,1966,
        1978,1987,1992,2001,2009,2015,2020,2025,2032,2043,2048,2053,2058,
        2063,2068,2073,2078,2083,2088,2093,2098,2103,2106,2121,2129,2144,
        2160,2163,2174,2179,2182,2190,2194,2205,2209,2213,2216,2229,2232,
        2239,2242,2249,2254,2257,2271,2279,2281,2297,2301,2303,2309,2324,
        2329,2334,2343,2407,2424,2464,2480,2489,2495,2501,2504,2511,2513,
        2527,2533,2539,2542,2549,2551,2565,2571,2577,2580,2587,2589,2603,
        2609,2615,2618,2625,2627,2641,2647,2653,2656,2663,2665,2679,2685,
        2691,2694,2701,2703,2717,2723,2729,2732,2739,2741,2755,2761,2767,
        2770,2777,2779,2793,2799,2805,2808,2815,2817,2831,2837,2843,2846,
        2853,2855,2869,2875,2881,2884,2891,2893
    ]

class XplorMRParser ( Parser ):

    grammarFileName = "XplorMRParser.g4"

    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]

    sharedContextCache = PredictionContextCache()

    literalNames = [ "<INVALID>", "'SET'", "<INVALID>", "'NOE'", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "'BHIG'", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "'CUTOFF'", "'CUTON'", "'FROM'", "'TO'", 
                     "'PEAK'", "'SPECTRUM'", "'VOLUME'", "'PPM1'", "'PPM2'", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "'TYPE'", "<INVALID>", "<INVALID>", "'CV'", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "'XADC'", "<INVALID>", "'SIZE'", 
                     "'ZERO'", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "'RAMA'", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "'SORT'", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "'DCSA'", "<INVALID>", "'PCSA'", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "'TAUC'", "<INVALID>", "'XPCS'", 
                     "'TOLL'", "'SAVE'", "'FMED'", "'ERRON'", "'ERROFF'", 
                     "'FON'", "'FOFF'", "'SON'", "'SOFF'", "'FRUN'", "<INVALID>", 
                     "<INVALID>", "'XCCR'", "'WEIP'", "'KDIR'", "'KLIN'", 
                     "'NSEG'", "'NMIN'", "'NMAX'", "'SEGM'", "'OHCUT'", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "'UPDFRQ'", 
                     "'PRNFRQ'", "'FREEMODE'", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "'ALL'", "<INVALID>", "'ATOM'", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "'ID'", "<INVALID>", "'NAME'", "<INVALID>", 
                     "'CUT'", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "'STORE1'", "'STORE2'", "'STORE3'", 
                     "'STORE4'", "'STORE5'", "'STORE6'", "'STORE7'", "'STORE8'", 
                     "'STORE9'", "'TAG'", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "'SHOW'", "<INVALID>", "'FOR'", "'LOOP'", "'TAIL'", 
                     "'HEAD'", "'OR'", "'AND'", "'NOT'", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "'HBDA'", "'HBDB'", "<INVALID>", 
                     "<INVALID>", "':'", "<INVALID>", "'<'", "'>'", "'<='", 
                     "'>='", "'#'", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "'+'", "'-'", "<INVALID>", "'/'", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "'ACOS'", "'ASIN'", "'COS'", "'DECODE'", "'ENCODE'", 
                     "'EXP'", "'GAUSS'", "'HEAVY'", "'INT'", "'LOG10'", 
                     "'LOG'", "<INVALID>", "'MAXW'", "<INVALID>", "'MOD'", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "'SIN'", "'SQRT'", 
                     "'TAN'", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "'RMS'", "'SUM'", "<INVALID>", "<INVALID>", 
                     "<INVALID>", "<INVALID>", "'IN'" ]

    symbolicNames = [ "<INVALID>", "Set", "End", "Noe", "Assign", "Asymptote", 
                      "Average", "Bhig", "Ceiling", "Classification", "CountViol", 
                      "Distribute", "Monomers", "Ncount", "Nrestraints", 
                      "Potential", "Predict", "Print", "Threshold", "Reset", 
                      "Rswitch", "Scale", "SoExponent", "SqConstant", "SqExponent", 
                      "SqOffset", "Temperature", "Cutoff", "Cuton", "From", 
                      "To", "Peak", "Spectrum", "Volume", "Ppm1", "Ppm2", 
                      "Restraints", "Dihedral", "Nassign", "Sanisotropy", 
                      "Coefficients", "ForceConstant", "Xdipolar", "Dipolar", 
                      "Type", "Sign", "VectorAngle", "Cv", "Partition", 
                      "Tensor", "Anisotropy", "Planar", "Group", "Initialize", 
                      "Selection", "Weight", "Harmonic", "Exponent", "Normal", 
                      "Xadc", "Expectation", "Size", "Zero", "Coupling", 
                      "DegEnergy", "Carbon", "PhiStep", "PsiStep", "Rcoil", 
                      "Proton", "Observed", "Amides", "Nitrogens", "Oxygens", 
                      "RingAtoms", "AlphasAndAmides", "Error", "Ramachandran", 
                      "Gaussian", "Phase", "Quartic", "Shape", "Sort", "Dimensions", 
                      "Collapse", "Danisotropy", "Orient", "Height", "MaxGaussians", 
                      "NewGaussian", "Dcsa", "Sigma", "Pcsa", "OneBond", 
                      "AngleDb", "DerivFlag", "Angle_or_Dihedral", "Paramagnetic", 
                      "Kconst", "Omega", "Tauc", "Debug", "Xpcs", "Tolerance", 
                      "Save", "Fmed", "ErrOn", "ErrOff", "Fon", "Foff", 
                      "Son", "Soff", "Frun", "Xrdcoupling", "Xangle", "Xccr", 
                      "Weip", "Kdir", "Klin", "Nseg", "Nmin", "Nmax", "Segm", 
                      "Ohcut", "Coh1cut", "Coh2cut", "Ohncut", "Updfrq", 
                      "Prnfrq", "Freemode", "Donor", "Acceptor", "Flags", 
                      "All", "Around", "Atom", "Attribute", "BondedTo", 
                      "ByGroup", "ByRes", "Chemical", "Hydrogen", "Id", 
                      "Known", "Name", "Point", "Cut", "Previous", "Pseudo", 
                      "Residue", "Resname", "Saround", "SegIdentifier", 
                      "Store_1", "Store_2", "Store_3", "Store_4", "Store_5", 
                      "Store_6", "Store_7", "Store_8", "Store_9", "Tag", 
                      "Vector", "Do_Lp", "Identify_Lp", "Show", "Evaluate_Lp", 
                      "For", "Loop", "Tail", "Head", "Or_op", "And_op", 
                      "Not_op", "Comma", "Complex", "Integer", "Logical", 
                      "Real", "Double_quote_string", "SHARP_COMMENT", "EXCLM_COMMENT", 
                      "SMCLN_COMMENT", "Simple_name", "Simple_names", "Integers", 
                      "Hbda", "Hbdb", "L_paren", "R_paren", "Colon", "Equ_op", 
                      "Lt_op", "Gt_op", "Leq_op", "Geq_op", "Neq_op", "Symbol_name", 
                      "SPACE", "COMMENT", "SECTION_COMMENT", "LINE_COMMENT", 
                      "SET_VARIABLE", "Abs", "Attr_properties", "Comparison_ops", 
                      "SPACE_ATTR", "Averaging_methods", "Simple_name_A", 
                      "SPACE_AVER", "Equ_op_P", "Potential_types", "Simple_name_P", 
                      "SPACE_POTE", "Rdc_dist_fix_types", "Rdc_or_Diff_anis_types", 
                      "Csa_types", "SPACE_TYPE", "Gauss_or_Quart", "SPACE_SHAP", 
                      "Exclude", "Include", "End_F", "Class_name", "Any_class", 
                      "SPACE_FLAG", "R_paren_VE", "Equ_op_VE", "Add_op_VE", 
                      "Sub_op_VE", "Mul_op_VE", "Div_op_VE", "Exp_op_VE", 
                      "Comma_VE", "Integer_VE", "Real_VE", "Atom_properties_VE", 
                      "Abs_VE", "Acos_VE", "Asin_VE", "Cos_VE", "Decode_VE", 
                      "Encode_VE", "Exp_VE", "Gauss_VE", "Heavy_VE", "Int_VE", 
                      "Log10_VE", "Log_VE", "Max_VE", "Maxw_VE", "Min_VE", 
                      "Mod_VE", "Norm_VE", "Random_VE", "Sign_VE", "Sin_VE", 
                      "Sqrt_VE", "Tan_VE", "Symbol_name_VE", "Simple_name_VE", 
                      "Double_quote_string_VE", "SPACE_VE", "L_paren_VF", 
                      "SPACE_VF", "L_paren_VS", "R_paren_VS", "Average_VS", 
                      "Element_VS", "Max_VS", "Min_VS", "Norm_VS", "Rms_VS", 
                      "Sum_VS", "Atom_properties_VS", "SPACE_VS", "L_paren_CF", 
                      "R_paren_CF", "In_CF", "Integer_CF", "Real_CF", "Symbol_name_CF", 
                      "Simple_name_CF", "SPACE_CF", "COMMENT_CF", "Simple_name_LL", 
                      "SPACE_LL" ]

    RULE_xplor_nih_mr = 0
    RULE_distance_restraint = 1
    RULE_dihedral_angle_restraint = 2
    RULE_rdc_restraint = 3
    RULE_planar_restraint = 4
    RULE_harmonic_restraint = 5
    RULE_antidistance_restraint = 6
    RULE_coupling_restraint = 7
    RULE_carbon_shift_restraint = 8
    RULE_proton_shift_restraint = 9
    RULE_dihedral_angle_db_restraint = 10
    RULE_radius_of_gyration_restraint = 11
    RULE_diffusion_anisotropy_restraint = 12
    RULE_orientation_db_restraint = 13
    RULE_csa_restraint = 14
    RULE_pcsa_restraint = 15
    RULE_one_bond_coupling_restraint = 16
    RULE_angle_db_restraint = 17
    RULE_pre_restraint = 18
    RULE_pcs_restraint = 19
    RULE_prdc_restraint = 20
    RULE_porientation_restraint = 21
    RULE_pccr_restraint = 22
    RULE_hbond_restraint = 23
    RULE_hbond_db_restraint = 24
    RULE_noe_statement = 25
    RULE_noe_assign = 26
    RULE_predict_statement = 27
    RULE_noe_annotation = 28
    RULE_dihedral_statement = 29
    RULE_dihedral_assign = 30
    RULE_sani_statement = 31
    RULE_sani_assign = 32
    RULE_xdip_statement = 33
    RULE_xdip_assign = 34
    RULE_vean_statement = 35
    RULE_vean_assign = 36
    RULE_tenso_statement = 37
    RULE_tenso_assign = 38
    RULE_anis_statement = 39
    RULE_anis_assign = 40
    RULE_planar_statement = 41
    RULE_group_statement = 42
    RULE_harmonic_statement = 43
    RULE_harmonic_assign = 44
    RULE_antidistance_statement = 45
    RULE_xadc_assign = 46
    RULE_coupling_statement = 47
    RULE_coup_assign = 48
    RULE_carbon_shift_statement = 49
    RULE_carbon_shift_assign = 50
    RULE_carbon_shift_rcoil = 51
    RULE_proton_shift_statement = 52
    RULE_observed = 53
    RULE_proton_shift_rcoil = 54
    RULE_proton_shift_anisotropy = 55
    RULE_proton_shift_amides = 56
    RULE_proton_shift_carbons = 57
    RULE_proton_shift_nitrogens = 58
    RULE_proton_shift_oxygens = 59
    RULE_proton_shift_ring_atoms = 60
    RULE_proton_shift_alphas_and_amides = 61
    RULE_ramachandran_statement = 62
    RULE_rama_assign = 63
    RULE_collapse_statement = 64
    RULE_coll_assign = 65
    RULE_diffusion_statement = 66
    RULE_dani_assign = 67
    RULE_orientation_statement = 68
    RULE_orie_assign = 69
    RULE_csa_statement = 70
    RULE_csa_assign = 71
    RULE_pcsa_statement = 72
    RULE_one_bond_coupling_statement = 73
    RULE_one_bond_assign = 74
    RULE_angle_db_statement = 75
    RULE_angle_db_assign = 76
    RULE_pre_statement = 77
    RULE_pre_assign = 78
    RULE_pcs_statement = 79
    RULE_pcs_assign = 80
    RULE_prdc_statement = 81
    RULE_prdc_assign = 82
    RULE_porientation_statement = 83
    RULE_porientation_assign = 84
    RULE_pccr_statement = 85
    RULE_pccr_assign = 86
    RULE_hbond_statement = 87
    RULE_hbond_assign = 88
    RULE_hbond_db_statement = 89
    RULE_hbond_db_assign = 90
    RULE_selection = 91
    RULE_selection_expression = 92
    RULE_term = 93
    RULE_factor = 94
    RULE_number = 95
    RULE_number_f = 96
    RULE_number_s = 97
    RULE_number_a = 98
    RULE_flag_statement = 99
    RULE_vector_statement = 100
    RULE_vector_mode = 101
    RULE_vector_expression = 102
    RULE_vector_operation = 103
    RULE_vflc = 104
    RULE_vector_func_call = 105
    RULE_vector_show_property = 106
    RULE_evaluate_statement = 107
    RULE_evaluate_operation = 108
    RULE_noe_assign_loop = 109
    RULE_dihedral_assign_loop = 110
    RULE_sani_assign_loop = 111
    RULE_xadc_assign_loop = 112
    RULE_coup_assign_loop = 113
    RULE_coll_assign_loop = 114
    RULE_csa_assign_loop = 115
    RULE_pre_assign_loop = 116
    RULE_pcs_assign_loop = 117
    RULE_hbond_assign_loop = 118
    RULE_hbond_db_assign_loop = 119

    ruleNames =  [ "xplor_nih_mr", "distance_restraint", "dihedral_angle_restraint", 
                   "rdc_restraint", "planar_restraint", "harmonic_restraint", 
                   "antidistance_restraint", "coupling_restraint", "carbon_shift_restraint", 
                   "proton_shift_restraint", "dihedral_angle_db_restraint", 
                   "radius_of_gyration_restraint", "diffusion_anisotropy_restraint", 
                   "orientation_db_restraint", "csa_restraint", "pcsa_restraint", 
                   "one_bond_coupling_restraint", "angle_db_restraint", 
                   "pre_restraint", "pcs_restraint", "prdc_restraint", "porientation_restraint", 
                   "pccr_restraint", "hbond_restraint", "hbond_db_restraint", 
                   "noe_statement", "noe_assign", "predict_statement", "noe_annotation", 
                   "dihedral_statement", "dihedral_assign", "sani_statement", 
                   "sani_assign", "xdip_statement", "xdip_assign", "vean_statement", 
                   "vean_assign", "tenso_statement", "tenso_assign", "anis_statement", 
                   "anis_assign", "planar_statement", "group_statement", 
                   "harmonic_statement", "harmonic_assign", "antidistance_statement", 
                   "xadc_assign", "coupling_statement", "coup_assign", "carbon_shift_statement", 
                   "carbon_shift_assign", "carbon_shift_rcoil", "proton_shift_statement", 
                   "observed", "proton_shift_rcoil", "proton_shift_anisotropy", 
                   "proton_shift_amides", "proton_shift_carbons", "proton_shift_nitrogens", 
                   "proton_shift_oxygens", "proton_shift_ring_atoms", "proton_shift_alphas_and_amides", 
                   "ramachandran_statement", "rama_assign", "collapse_statement", 
                   "coll_assign", "diffusion_statement", "dani_assign", 
                   "orientation_statement", "orie_assign", "csa_statement", 
                   "csa_assign", "pcsa_statement", "one_bond_coupling_statement", 
                   "one_bond_assign", "angle_db_statement", "angle_db_assign", 
                   "pre_statement", "pre_assign", "pcs_statement", "pcs_assign", 
                   "prdc_statement", "prdc_assign", "porientation_statement", 
                   "porientation_assign", "pccr_statement", "pccr_assign", 
                   "hbond_statement", "hbond_assign", "hbond_db_statement", 
                   "hbond_db_assign", "selection", "selection_expression", 
                   "term", "factor", "number", "number_f", "number_s", "number_a", 
                   "flag_statement", "vector_statement", "vector_mode", 
                   "vector_expression", "vector_operation", "vflc", "vector_func_call", 
                   "vector_show_property", "evaluate_statement", "evaluate_operation", 
                   "noe_assign_loop", "dihedral_assign_loop", "sani_assign_loop", 
                   "xadc_assign_loop", "coup_assign_loop", "coll_assign_loop", 
                   "csa_assign_loop", "pre_assign_loop", "pcs_assign_loop", 
                   "hbond_assign_loop", "hbond_db_assign_loop" ]

    EOF = Token.EOF
    Set=1
    End=2
    Noe=3
    Assign=4
    Asymptote=5
    Average=6
    Bhig=7
    Ceiling=8
    Classification=9
    CountViol=10
    Distribute=11
    Monomers=12
    Ncount=13
    Nrestraints=14
    Potential=15
    Predict=16
    Print=17
    Threshold=18
    Reset=19
    Rswitch=20
    Scale=21
    SoExponent=22
    SqConstant=23
    SqExponent=24
    SqOffset=25
    Temperature=26
    Cutoff=27
    Cuton=28
    From=29
    To=30
    Peak=31
    Spectrum=32
    Volume=33
    Ppm1=34
    Ppm2=35
    Restraints=36
    Dihedral=37
    Nassign=38
    Sanisotropy=39
    Coefficients=40
    ForceConstant=41
    Xdipolar=42
    Dipolar=43
    Type=44
    Sign=45
    VectorAngle=46
    Cv=47
    Partition=48
    Tensor=49
    Anisotropy=50
    Planar=51
    Group=52
    Initialize=53
    Selection=54
    Weight=55
    Harmonic=56
    Exponent=57
    Normal=58
    Xadc=59
    Expectation=60
    Size=61
    Zero=62
    Coupling=63
    DegEnergy=64
    Carbon=65
    PhiStep=66
    PsiStep=67
    Rcoil=68
    Proton=69
    Observed=70
    Amides=71
    Nitrogens=72
    Oxygens=73
    RingAtoms=74
    AlphasAndAmides=75
    Error=76
    Ramachandran=77
    Gaussian=78
    Phase=79
    Quartic=80
    Shape=81
    Sort=82
    Dimensions=83
    Collapse=84
    Danisotropy=85
    Orient=86
    Height=87
    MaxGaussians=88
    NewGaussian=89
    Dcsa=90
    Sigma=91
    Pcsa=92
    OneBond=93
    AngleDb=94
    DerivFlag=95
    Angle_or_Dihedral=96
    Paramagnetic=97
    Kconst=98
    Omega=99
    Tauc=100
    Debug=101
    Xpcs=102
    Tolerance=103
    Save=104
    Fmed=105
    ErrOn=106
    ErrOff=107
    Fon=108
    Foff=109
    Son=110
    Soff=111
    Frun=112
    Xrdcoupling=113
    Xangle=114
    Xccr=115
    Weip=116
    Kdir=117
    Klin=118
    Nseg=119
    Nmin=120
    Nmax=121
    Segm=122
    Ohcut=123
    Coh1cut=124
    Coh2cut=125
    Ohncut=126
    Updfrq=127
    Prnfrq=128
    Freemode=129
    Donor=130
    Acceptor=131
    Flags=132
    All=133
    Around=134
    Atom=135
    Attribute=136
    BondedTo=137
    ByGroup=138
    ByRes=139
    Chemical=140
    Hydrogen=141
    Id=142
    Known=143
    Name=144
    Point=145
    Cut=146
    Previous=147
    Pseudo=148
    Residue=149
    Resname=150
    Saround=151
    SegIdentifier=152
    Store_1=153
    Store_2=154
    Store_3=155
    Store_4=156
    Store_5=157
    Store_6=158
    Store_7=159
    Store_8=160
    Store_9=161
    Tag=162
    Vector=163
    Do_Lp=164
    Identify_Lp=165
    Show=166
    Evaluate_Lp=167
    For=168
    Loop=169
    Tail=170
    Head=171
    Or_op=172
    And_op=173
    Not_op=174
    Comma=175
    Complex=176
    Integer=177
    Logical=178
    Real=179
    Double_quote_string=180
    SHARP_COMMENT=181
    EXCLM_COMMENT=182
    SMCLN_COMMENT=183
    Simple_name=184
    Simple_names=185
    Integers=186
    Hbda=187
    Hbdb=188
    L_paren=189
    R_paren=190
    Colon=191
    Equ_op=192
    Lt_op=193
    Gt_op=194
    Leq_op=195
    Geq_op=196
    Neq_op=197
    Symbol_name=198
    SPACE=199
    COMMENT=200
    SECTION_COMMENT=201
    LINE_COMMENT=202
    SET_VARIABLE=203
    Abs=204
    Attr_properties=205
    Comparison_ops=206
    SPACE_ATTR=207
    Averaging_methods=208
    Simple_name_A=209
    SPACE_AVER=210
    Equ_op_P=211
    Potential_types=212
    Simple_name_P=213
    SPACE_POTE=214
    Rdc_dist_fix_types=215
    Rdc_or_Diff_anis_types=216
    Csa_types=217
    SPACE_TYPE=218
    Gauss_or_Quart=219
    SPACE_SHAP=220
    Exclude=221
    Include=222
    End_F=223
    Class_name=224
    Any_class=225
    SPACE_FLAG=226
    R_paren_VE=227
    Equ_op_VE=228
    Add_op_VE=229
    Sub_op_VE=230
    Mul_op_VE=231
    Div_op_VE=232
    Exp_op_VE=233
    Comma_VE=234
    Integer_VE=235
    Real_VE=236
    Atom_properties_VE=237
    Abs_VE=238
    Acos_VE=239
    Asin_VE=240
    Cos_VE=241
    Decode_VE=242
    Encode_VE=243
    Exp_VE=244
    Gauss_VE=245
    Heavy_VE=246
    Int_VE=247
    Log10_VE=248
    Log_VE=249
    Max_VE=250
    Maxw_VE=251
    Min_VE=252
    Mod_VE=253
    Norm_VE=254
    Random_VE=255
    Sign_VE=256
    Sin_VE=257
    Sqrt_VE=258
    Tan_VE=259
    Symbol_name_VE=260
    Simple_name_VE=261
    Double_quote_string_VE=262
    SPACE_VE=263
    L_paren_VF=264
    SPACE_VF=265
    L_paren_VS=266
    R_paren_VS=267
    Average_VS=268
    Element_VS=269
    Max_VS=270
    Min_VS=271
    Norm_VS=272
    Rms_VS=273
    Sum_VS=274
    Atom_properties_VS=275
    SPACE_VS=276
    L_paren_CF=277
    R_paren_CF=278
    In_CF=279
    Integer_CF=280
    Real_CF=281
    Symbol_name_CF=282
    Simple_name_CF=283
    SPACE_CF=284
    COMMENT_CF=285
    Simple_name_LL=286
    SPACE_LL=287

    def __init__(self, input:TokenStream, output:TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.10.1")
        self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
        self._predicates = None




    class Xplor_nih_mrContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def EOF(self):
            return self.getToken(XplorMRParser.EOF, 0)

        def distance_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Distance_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Distance_restraintContext,i)


        def dihedral_angle_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Dihedral_angle_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Dihedral_angle_restraintContext,i)


        def rdc_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Rdc_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Rdc_restraintContext,i)


        def planar_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Planar_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Planar_restraintContext,i)


        def harmonic_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Harmonic_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Harmonic_restraintContext,i)


        def antidistance_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Antidistance_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Antidistance_restraintContext,i)


        def coupling_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Coupling_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Coupling_restraintContext,i)


        def carbon_shift_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Carbon_shift_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Carbon_shift_restraintContext,i)


        def proton_shift_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Proton_shift_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Proton_shift_restraintContext,i)


        def dihedral_angle_db_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Dihedral_angle_db_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Dihedral_angle_db_restraintContext,i)


        def radius_of_gyration_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Radius_of_gyration_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Radius_of_gyration_restraintContext,i)


        def diffusion_anisotropy_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Diffusion_anisotropy_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Diffusion_anisotropy_restraintContext,i)


        def orientation_db_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Orientation_db_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Orientation_db_restraintContext,i)


        def csa_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Csa_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Csa_restraintContext,i)


        def pcsa_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pcsa_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pcsa_restraintContext,i)


        def one_bond_coupling_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.One_bond_coupling_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.One_bond_coupling_restraintContext,i)


        def angle_db_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Angle_db_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Angle_db_restraintContext,i)


        def pre_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pre_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pre_restraintContext,i)


        def pcs_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pcs_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pcs_restraintContext,i)


        def prdc_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Prdc_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Prdc_restraintContext,i)


        def porientation_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Porientation_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Porientation_restraintContext,i)


        def pccr_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pccr_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pccr_restraintContext,i)


        def hbond_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_restraintContext,i)


        def hbond_db_restraint(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_db_restraintContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_db_restraintContext,i)


        def flag_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Flag_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Flag_statementContext,i)


        def vector_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Vector_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Vector_statementContext,i)


        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def noe_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Noe_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Noe_assign_loopContext,i)


        def dihedral_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Dihedral_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Dihedral_assign_loopContext,i)


        def sani_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Sani_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Sani_assign_loopContext,i)


        def hbond_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_assign_loopContext,i)


        def hbond_db_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_db_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_db_assign_loopContext,i)


        def coup_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Coup_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Coup_assign_loopContext,i)


        def xadc_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Xadc_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Xadc_assign_loopContext,i)


        def coll_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Coll_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Coll_assign_loopContext,i)


        def csa_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Csa_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Csa_assign_loopContext,i)


        def pre_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pre_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pre_assign_loopContext,i)


        def pcs_assign_loop(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pcs_assign_loopContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pcs_assign_loopContext,i)


        def noe_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Noe_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Noe_assignContext,i)


        def dihedral_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Dihedral_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Dihedral_assignContext,i)


        def sani_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Sani_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Sani_assignContext,i)


        def planar_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Planar_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Planar_statementContext,i)


        def harmonic_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Harmonic_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Harmonic_assignContext,i)


        def hbond_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_assignContext,i)


        def hbond_db_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_db_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_db_assignContext,i)


        def coup_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Coup_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Coup_assignContext,i)


        def xadc_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Xadc_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Xadc_assignContext,i)


        def coll_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Coll_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Coll_assignContext,i)


        def csa_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Csa_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Csa_assignContext,i)


        def pre_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pre_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pre_assignContext,i)


        def pcs_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pcs_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pcs_assignContext,i)


        def observed(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.ObservedContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.ObservedContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_xplor_nih_mr

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterXplor_nih_mr" ):
                listener.enterXplor_nih_mr(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitXplor_nih_mr" ):
                listener.exitXplor_nih_mr(self)




    def xplor_nih_mr(self):

        localctx = XplorMRParser.Xplor_nih_mrContext(self, self._ctx, self.state)
        self.enterRule(localctx, 0, self.RULE_xplor_nih_mr)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 294
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Noe) | (1 << XplorMRParser.Assign) | (1 << XplorMRParser.Restraints) | (1 << XplorMRParser.Dihedral) | (1 << XplorMRParser.Sanisotropy) | (1 << XplorMRParser.Xdipolar) | (1 << XplorMRParser.Dipolar) | (1 << XplorMRParser.VectorAngle) | (1 << XplorMRParser.Tensor) | (1 << XplorMRParser.Anisotropy) | (1 << XplorMRParser.Planar) | (1 << XplorMRParser.Group) | (1 << XplorMRParser.Initialize) | (1 << XplorMRParser.Harmonic) | (1 << XplorMRParser.Xadc) | (1 << XplorMRParser.Coupling))) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & ((1 << (XplorMRParser.Carbon - 65)) | (1 << (XplorMRParser.Proton - 65)) | (1 << (XplorMRParser.Observed - 65)) | (1 << (XplorMRParser.Ramachandran - 65)) | (1 << (XplorMRParser.Collapse - 65)) | (1 << (XplorMRParser.Danisotropy - 65)) | (1 << (XplorMRParser.Orient - 65)) | (1 << (XplorMRParser.Dcsa - 65)) | (1 << (XplorMRParser.Pcsa - 65)) | (1 << (XplorMRParser.OneBond - 65)) | (1 << (XplorMRParser.AngleDb - 65)) | (1 << (XplorMRParser.Paramagnetic - 65)) | (1 << (XplorMRParser.Xpcs - 65)) | (1 << (XplorMRParser.Xrdcoupling - 65)) | (1 << (XplorMRParser.Xangle - 65)) | (1 << (XplorMRParser.Xccr - 65)))) != 0) or ((((_la - 132)) & ~0x3f) == 0 and ((1 << (_la - 132)) & ((1 << (XplorMRParser.Flags - 132)) | (1 << (XplorMRParser.Vector - 132)) | (1 << (XplorMRParser.Evaluate_Lp - 132)) | (1 << (XplorMRParser.For - 132)) | (1 << (XplorMRParser.Hbda - 132)) | (1 << (XplorMRParser.Hbdb - 132)))) != 0):
                self.state = 292
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,0,self._ctx)
                if la_ == 1:
                    self.state = 240
                    self.distance_restraint()
                    pass

                elif la_ == 2:
                    self.state = 241
                    self.dihedral_angle_restraint()
                    pass

                elif la_ == 3:
                    self.state = 242
                    self.rdc_restraint()
                    pass

                elif la_ == 4:
                    self.state = 243
                    self.planar_restraint()
                    pass

                elif la_ == 5:
                    self.state = 244
                    self.harmonic_restraint()
                    pass

                elif la_ == 6:
                    self.state = 245
                    self.antidistance_restraint()
                    pass

                elif la_ == 7:
                    self.state = 246
                    self.coupling_restraint()
                    pass

                elif la_ == 8:
                    self.state = 247
                    self.carbon_shift_restraint()
                    pass

                elif la_ == 9:
                    self.state = 248
                    self.proton_shift_restraint()
                    pass

                elif la_ == 10:
                    self.state = 249
                    self.dihedral_angle_db_restraint()
                    pass

                elif la_ == 11:
                    self.state = 250
                    self.radius_of_gyration_restraint()
                    pass

                elif la_ == 12:
                    self.state = 251
                    self.diffusion_anisotropy_restraint()
                    pass

                elif la_ == 13:
                    self.state = 252
                    self.orientation_db_restraint()
                    pass

                elif la_ == 14:
                    self.state = 253
                    self.csa_restraint()
                    pass

                elif la_ == 15:
                    self.state = 254
                    self.pcsa_restraint()
                    pass

                elif la_ == 16:
                    self.state = 255
                    self.one_bond_coupling_restraint()
                    pass

                elif la_ == 17:
                    self.state = 256
                    self.angle_db_restraint()
                    pass

                elif la_ == 18:
                    self.state = 257
                    self.pre_restraint()
                    pass

                elif la_ == 19:
                    self.state = 258
                    self.pcs_restraint()
                    pass

                elif la_ == 20:
                    self.state = 259
                    self.prdc_restraint()
                    pass

                elif la_ == 21:
                    self.state = 260
                    self.porientation_restraint()
                    pass

                elif la_ == 22:
                    self.state = 261
                    self.pccr_restraint()
                    pass

                elif la_ == 23:
                    self.state = 262
                    self.hbond_restraint()
                    pass

                elif la_ == 24:
                    self.state = 263
                    self.hbond_db_restraint()
                    pass

                elif la_ == 25:
                    self.state = 264
                    self.flag_statement()
                    pass

                elif la_ == 26:
                    self.state = 265
                    self.vector_statement()
                    pass

                elif la_ == 27:
                    self.state = 266
                    self.evaluate_statement()
                    pass

                elif la_ == 28:
                    self.state = 267
                    self.noe_assign_loop()
                    pass

                elif la_ == 29:
                    self.state = 268
                    self.dihedral_assign_loop()
                    pass

                elif la_ == 30:
                    self.state = 269
                    self.sani_assign_loop()
                    pass

                elif la_ == 31:
                    self.state = 270
                    self.hbond_assign_loop()
                    pass

                elif la_ == 32:
                    self.state = 271
                    self.hbond_db_assign_loop()
                    pass

                elif la_ == 33:
                    self.state = 272
                    self.coup_assign_loop()
                    pass

                elif la_ == 34:
                    self.state = 273
                    self.xadc_assign_loop()
                    pass

                elif la_ == 35:
                    self.state = 274
                    self.coll_assign_loop()
                    pass

                elif la_ == 36:
                    self.state = 275
                    self.csa_assign_loop()
                    pass

                elif la_ == 37:
                    self.state = 276
                    self.pre_assign_loop()
                    pass

                elif la_ == 38:
                    self.state = 277
                    self.pcs_assign_loop()
                    pass

                elif la_ == 39:
                    self.state = 278
                    self.noe_assign()
                    pass

                elif la_ == 40:
                    self.state = 279
                    self.dihedral_assign()
                    pass

                elif la_ == 41:
                    self.state = 280
                    self.sani_assign()
                    pass

                elif la_ == 42:
                    self.state = 281
                    self.planar_statement()
                    pass

                elif la_ == 43:
                    self.state = 282
                    self.harmonic_assign()
                    pass

                elif la_ == 44:
                    self.state = 283
                    self.hbond_assign()
                    pass

                elif la_ == 45:
                    self.state = 284
                    self.hbond_db_assign()
                    pass

                elif la_ == 46:
                    self.state = 285
                    self.coup_assign()
                    pass

                elif la_ == 47:
                    self.state = 286
                    self.xadc_assign()
                    pass

                elif la_ == 48:
                    self.state = 287
                    self.coll_assign()
                    pass

                elif la_ == 49:
                    self.state = 288
                    self.csa_assign()
                    pass

                elif la_ == 50:
                    self.state = 289
                    self.pre_assign()
                    pass

                elif la_ == 51:
                    self.state = 290
                    self.pcs_assign()
                    pass

                elif la_ == 52:
                    self.state = 291
                    self.observed()
                    pass


                self.state = 296
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 297
            self.match(XplorMRParser.EOF)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Distance_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Noe(self):
            return self.getToken(XplorMRParser.Noe, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def noe_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Noe_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Noe_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_distance_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDistance_restraint" ):
                listener.enterDistance_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDistance_restraint" ):
                listener.exitDistance_restraint(self)




    def distance_restraint(self):

        localctx = XplorMRParser.Distance_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 2, self.RULE_distance_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 299
            self.match(XplorMRParser.Noe)
            self.state = 303
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Asymptote) | (1 << XplorMRParser.Average) | (1 << XplorMRParser.Bhig) | (1 << XplorMRParser.Ceiling) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.CountViol) | (1 << XplorMRParser.Distribute) | (1 << XplorMRParser.Monomers) | (1 << XplorMRParser.Ncount) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Predict) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Rswitch) | (1 << XplorMRParser.Scale) | (1 << XplorMRParser.SoExponent) | (1 << XplorMRParser.SqConstant) | (1 << XplorMRParser.SqExponent) | (1 << XplorMRParser.SqOffset) | (1 << XplorMRParser.Temperature))) != 0) or _la==XplorMRParser.For:
                self.state = 300
                self.noe_statement()
                self.state = 305
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 306
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Dihedral_angle_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Dihedral(self):
            return self.getToken(XplorMRParser.Dihedral, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def Restraints(self):
            return self.getToken(XplorMRParser.Restraints, 0)

        def dihedral_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Dihedral_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Dihedral_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_dihedral_angle_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDihedral_angle_restraint" ):
                listener.enterDihedral_angle_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDihedral_angle_restraint" ):
                listener.exitDihedral_angle_restraint(self)




    def dihedral_angle_restraint(self):

        localctx = XplorMRParser.Dihedral_angle_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 4, self.RULE_dihedral_angle_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 309
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.Restraints:
                self.state = 308
                self.match(XplorMRParser.Restraints)


            self.state = 311
            self.match(XplorMRParser.Dihedral)
            self.state = 315
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Scale) | (1 << XplorMRParser.Nassign))) != 0) or _la==XplorMRParser.For:
                self.state = 312
                self.dihedral_statement()
                self.state = 317
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 318
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Rdc_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Sanisotropy(self):
            return self.getToken(XplorMRParser.Sanisotropy, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def sani_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Sani_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Sani_statementContext,i)


        def Xdipolar(self):
            return self.getToken(XplorMRParser.Xdipolar, 0)

        def Dipolar(self):
            return self.getToken(XplorMRParser.Dipolar, 0)

        def xdip_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Xdip_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Xdip_statementContext,i)


        def VectorAngle(self):
            return self.getToken(XplorMRParser.VectorAngle, 0)

        def vean_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Vean_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Vean_statementContext,i)


        def Tensor(self):
            return self.getToken(XplorMRParser.Tensor, 0)

        def tenso_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Tenso_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Tenso_statementContext,i)


        def Anisotropy(self):
            return self.getToken(XplorMRParser.Anisotropy, 0)

        def anis_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Anis_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Anis_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_rdc_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterRdc_restraint" ):
                listener.enterRdc_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitRdc_restraint" ):
                listener.exitRdc_restraint(self)




    def rdc_restraint(self):

        localctx = XplorMRParser.Rdc_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 6, self.RULE_rdc_restraint)
        self._la = 0 # Token type
        try:
            self.state = 360
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Sanisotropy]:
                self.enterOuterAlt(localctx, 1)
                self.state = 320
                self.match(XplorMRParser.Sanisotropy)
                self.state = 324
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant))) != 0) or _la==XplorMRParser.For:
                    self.state = 321
                    self.sani_statement()
                    self.state = 326
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 327
                self.match(XplorMRParser.End)
                pass
            elif token in [XplorMRParser.Xdipolar, XplorMRParser.Dipolar]:
                self.enterOuterAlt(localctx, 2)
                self.state = 328
                _la = self._input.LA(1)
                if not(_la==XplorMRParser.Xdipolar or _la==XplorMRParser.Dipolar):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()
                self.state = 332
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Average) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Scale) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Type) | (1 << XplorMRParser.Sign))) != 0):
                    self.state = 329
                    self.xdip_statement()
                    self.state = 334
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 335
                self.match(XplorMRParser.End)
                pass
            elif token in [XplorMRParser.VectorAngle]:
                self.enterOuterAlt(localctx, 3)
                self.state = 336
                self.match(XplorMRParser.VectorAngle)
                self.state = 340
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Cv) | (1 << XplorMRParser.Partition))) != 0):
                    self.state = 337
                    self.vean_statement()
                    self.state = 342
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 343
                self.match(XplorMRParser.End)
                pass
            elif token in [XplorMRParser.Tensor]:
                self.enterOuterAlt(localctx, 4)
                self.state = 344
                self.match(XplorMRParser.Tensor)
                self.state = 348
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Coefficients))) != 0):
                    self.state = 345
                    self.tenso_statement()
                    self.state = 350
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 351
                self.match(XplorMRParser.End)
                pass
            elif token in [XplorMRParser.Anisotropy]:
                self.enterOuterAlt(localctx, 5)
                self.state = 352
                self.match(XplorMRParser.Anisotropy)
                self.state = 356
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Type))) != 0):
                    self.state = 353
                    self.anis_statement()
                    self.state = 358
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 359
                self.match(XplorMRParser.End)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Planar_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Planar(self):
            return self.getToken(XplorMRParser.Planar, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def Restraints(self):
            return self.getToken(XplorMRParser.Restraints, 0)

        def planar_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Planar_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Planar_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_planar_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPlanar_restraint" ):
                listener.enterPlanar_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPlanar_restraint" ):
                listener.exitPlanar_restraint(self)




    def planar_restraint(self):

        localctx = XplorMRParser.Planar_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 8, self.RULE_planar_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 363
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.Restraints:
                self.state = 362
                self.match(XplorMRParser.Restraints)


            self.state = 365
            self.match(XplorMRParser.Planar)
            self.state = 369
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Group or _la==XplorMRParser.Initialize:
                self.state = 366
                self.planar_statement()
                self.state = 371
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 372
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Harmonic_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Harmonic(self):
            return self.getToken(XplorMRParser.Harmonic, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def Restraints(self):
            return self.getToken(XplorMRParser.Restraints, 0)

        def harmonic_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Harmonic_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Harmonic_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_harmonic_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHarmonic_restraint" ):
                listener.enterHarmonic_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHarmonic_restraint" ):
                listener.exitHarmonic_restraint(self)




    def harmonic_restraint(self):

        localctx = XplorMRParser.Harmonic_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 10, self.RULE_harmonic_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 375
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.Restraints:
                self.state = 374
                self.match(XplorMRParser.Restraints)


            self.state = 377
            self.match(XplorMRParser.Harmonic)
            self.state = 381
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Exponent or _la==XplorMRParser.Normal:
                self.state = 378
                self.harmonic_statement()
                self.state = 383
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 384
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Antidistance_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Xadc(self):
            return self.getToken(XplorMRParser.Xadc, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def antidistance_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Antidistance_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Antidistance_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_antidistance_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterAntidistance_restraint" ):
                listener.enterAntidistance_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitAntidistance_restraint" ):
                listener.exitAntidistance_restraint(self)




    def antidistance_restraint(self):

        localctx = XplorMRParser.Antidistance_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 12, self.RULE_antidistance_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 386
            self.match(XplorMRParser.Xadc)
            self.state = 390
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Expectation) | (1 << XplorMRParser.Size) | (1 << XplorMRParser.Zero))) != 0) or _la==XplorMRParser.For:
                self.state = 387
                self.antidistance_statement()
                self.state = 392
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 393
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Coupling_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Coupling(self):
            return self.getToken(XplorMRParser.Coupling, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def coupling_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Coupling_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Coupling_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_coupling_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCoupling_restraint" ):
                listener.enterCoupling_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCoupling_restraint" ):
                listener.exitCoupling_restraint(self)




    def coupling_restraint(self):

        localctx = XplorMRParser.Coupling_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 14, self.RULE_coupling_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 395
            self.match(XplorMRParser.Coupling)
            self.state = 399
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while ((((_la - 4)) & ~0x3f) == 0 and ((1 << (_la - 4)) & ((1 << (XplorMRParser.Assign - 4)) | (1 << (XplorMRParser.Classification - 4)) | (1 << (XplorMRParser.Nrestraints - 4)) | (1 << (XplorMRParser.Potential - 4)) | (1 << (XplorMRParser.Print - 4)) | (1 << (XplorMRParser.Reset - 4)) | (1 << (XplorMRParser.Coefficients - 4)) | (1 << (XplorMRParser.ForceConstant - 4)) | (1 << (XplorMRParser.Cv - 4)) | (1 << (XplorMRParser.Partition - 4)) | (1 << (XplorMRParser.DegEnergy - 4)))) != 0) or _la==XplorMRParser.For:
                self.state = 396
                self.coupling_statement()
                self.state = 401
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 402
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Carbon_shift_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Carbon(self):
            return self.getToken(XplorMRParser.Carbon, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def carbon_shift_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Carbon_shift_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Carbon_shift_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_carbon_shift_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCarbon_shift_restraint" ):
                listener.enterCarbon_shift_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCarbon_shift_restraint" ):
                listener.exitCarbon_shift_restraint(self)




    def carbon_shift_restraint(self):

        localctx = XplorMRParser.Carbon_shift_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 16, self.RULE_carbon_shift_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 404
            self.match(XplorMRParser.Carbon)
            self.state = 408
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Expectation) | (1 << XplorMRParser.Zero))) != 0) or ((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & ((1 << (XplorMRParser.PhiStep - 66)) | (1 << (XplorMRParser.PsiStep - 66)) | (1 << (XplorMRParser.Rcoil - 66)))) != 0):
                self.state = 405
                self.carbon_shift_statement()
                self.state = 410
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 411
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Proton(self):
            return self.getToken(XplorMRParser.Proton, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def proton_shift_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Proton_shift_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Proton_shift_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_restraint" ):
                listener.enterProton_shift_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_restraint" ):
                listener.exitProton_shift_restraint(self)




    def proton_shift_restraint(self):

        localctx = XplorMRParser.Proton_shift_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 18, self.RULE_proton_shift_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 413
            self.match(XplorMRParser.Proton)
            self.state = 417
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Classification) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Anisotropy))) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & ((1 << (XplorMRParser.DegEnergy - 64)) | (1 << (XplorMRParser.Carbon - 64)) | (1 << (XplorMRParser.Rcoil - 64)) | (1 << (XplorMRParser.Observed - 64)) | (1 << (XplorMRParser.Amides - 64)) | (1 << (XplorMRParser.Nitrogens - 64)) | (1 << (XplorMRParser.Oxygens - 64)) | (1 << (XplorMRParser.RingAtoms - 64)) | (1 << (XplorMRParser.AlphasAndAmides - 64)) | (1 << (XplorMRParser.Error - 64)))) != 0):
                self.state = 414
                self.proton_shift_statement()
                self.state = 419
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 420
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Dihedral_angle_db_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Ramachandran(self):
            return self.getToken(XplorMRParser.Ramachandran, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def ramachandran_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Ramachandran_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Ramachandran_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_dihedral_angle_db_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDihedral_angle_db_restraint" ):
                listener.enterDihedral_angle_db_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDihedral_angle_db_restraint" ):
                listener.exitDihedral_angle_db_restraint(self)




    def dihedral_angle_db_restraint(self):

        localctx = XplorMRParser.Dihedral_angle_db_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 20, self.RULE_dihedral_angle_db_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 422
            self.match(XplorMRParser.Ramachandran)
            self.state = 426
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Scale) | (1 << XplorMRParser.Cutoff) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Size) | (1 << XplorMRParser.Zero))) != 0) or ((((_la - 78)) & ~0x3f) == 0 and ((1 << (_la - 78)) & ((1 << (XplorMRParser.Gaussian - 78)) | (1 << (XplorMRParser.Phase - 78)) | (1 << (XplorMRParser.Quartic - 78)) | (1 << (XplorMRParser.Shape - 78)) | (1 << (XplorMRParser.Sort - 78)))) != 0):
                self.state = 423
                self.ramachandran_statement()
                self.state = 428
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 429
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Radius_of_gyration_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Collapse(self):
            return self.getToken(XplorMRParser.Collapse, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def collapse_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Collapse_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Collapse_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_radius_of_gyration_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterRadius_of_gyration_restraint" ):
                listener.enterRadius_of_gyration_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitRadius_of_gyration_restraint" ):
                listener.exitRadius_of_gyration_restraint(self)




    def radius_of_gyration_restraint(self):

        localctx = XplorMRParser.Radius_of_gyration_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 22, self.RULE_radius_of_gyration_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 431
            self.match(XplorMRParser.Collapse)
            self.state = 435
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Scale))) != 0) or _la==XplorMRParser.For:
                self.state = 432
                self.collapse_statement()
                self.state = 437
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 438
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Diffusion_anisotropy_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Danisotropy(self):
            return self.getToken(XplorMRParser.Danisotropy, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def diffusion_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Diffusion_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Diffusion_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_diffusion_anisotropy_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDiffusion_anisotropy_restraint" ):
                listener.enterDiffusion_anisotropy_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDiffusion_anisotropy_restraint" ):
                listener.exitDiffusion_anisotropy_restraint(self)




    def diffusion_anisotropy_restraint(self):

        localctx = XplorMRParser.Diffusion_anisotropy_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 24, self.RULE_diffusion_anisotropy_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 440
            self.match(XplorMRParser.Danisotropy)
            self.state = 444
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Type))) != 0):
                self.state = 441
                self.diffusion_statement()
                self.state = 446
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 447
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Orientation_db_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Orient(self):
            return self.getToken(XplorMRParser.Orient, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def orientation_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Orientation_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Orientation_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_orientation_db_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterOrientation_db_restraint" ):
                listener.enterOrientation_db_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitOrientation_db_restraint" ):
                listener.exitOrientation_db_restraint(self)




    def orientation_db_restraint(self):

        localctx = XplorMRParser.Orientation_db_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 26, self.RULE_orientation_db_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 449
            self.match(XplorMRParser.Orient)
            self.state = 453
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Cutoff) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Size) | (1 << XplorMRParser.Zero))) != 0) or ((((_la - 78)) & ~0x3f) == 0 and ((1 << (_la - 78)) & ((1 << (XplorMRParser.Gaussian - 78)) | (1 << (XplorMRParser.Quartic - 78)) | (1 << (XplorMRParser.Height - 78)) | (1 << (XplorMRParser.MaxGaussians - 78)) | (1 << (XplorMRParser.NewGaussian - 78)))) != 0) or _la==XplorMRParser.Residue:
                self.state = 450
                self.orientation_statement()
                self.state = 455
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 456
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Csa_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Dcsa(self):
            return self.getToken(XplorMRParser.Dcsa, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def csa_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Csa_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Csa_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_csa_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCsa_restraint" ):
                listener.enterCsa_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCsa_restraint" ):
                listener.exitCsa_restraint(self)




    def csa_restraint(self):

        localctx = XplorMRParser.Csa_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 28, self.RULE_csa_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 458
            self.match(XplorMRParser.Dcsa)
            self.state = 462
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Scale) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Type))) != 0) or _la==XplorMRParser.Sigma or _la==XplorMRParser.For:
                self.state = 459
                self.csa_statement()
                self.state = 464
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 465
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pcsa_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Pcsa(self):
            return self.getToken(XplorMRParser.Pcsa, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def pcsa_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pcsa_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pcsa_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_pcsa_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPcsa_restraint" ):
                listener.enterPcsa_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPcsa_restraint" ):
                listener.exitPcsa_restraint(self)




    def pcsa_restraint(self):

        localctx = XplorMRParser.Pcsa_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 30, self.RULE_pcsa_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 467
            self.match(XplorMRParser.Pcsa)
            self.state = 471
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Scale) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant))) != 0) or _la==XplorMRParser.Sigma:
                self.state = 468
                self.pcsa_statement()
                self.state = 473
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 474
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class One_bond_coupling_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OneBond(self):
            return self.getToken(XplorMRParser.OneBond, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def one_bond_coupling_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.One_bond_coupling_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.One_bond_coupling_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_one_bond_coupling_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterOne_bond_coupling_restraint" ):
                listener.enterOne_bond_coupling_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitOne_bond_coupling_restraint" ):
                listener.exitOne_bond_coupling_restraint(self)




    def one_bond_coupling_restraint(self):

        localctx = XplorMRParser.One_bond_coupling_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 32, self.RULE_one_bond_coupling_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 476
            self.match(XplorMRParser.OneBond)
            self.state = 480
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant))) != 0):
                self.state = 477
                self.one_bond_coupling_statement()
                self.state = 482
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 483
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Angle_db_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def AngleDb(self):
            return self.getToken(XplorMRParser.AngleDb, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def angle_db_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Angle_db_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Angle_db_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_angle_db_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterAngle_db_restraint" ):
                listener.enterAngle_db_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitAngle_db_restraint" ):
                listener.exitAngle_db_restraint(self)




    def angle_db_restraint(self):

        localctx = XplorMRParser.Angle_db_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 34, self.RULE_angle_db_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 485
            self.match(XplorMRParser.AngleDb)
            self.state = 489
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.ForceConstant) | (1 << XplorMRParser.Expectation) | (1 << XplorMRParser.Size) | (1 << XplorMRParser.Zero))) != 0) or _la==XplorMRParser.Error or _la==XplorMRParser.DerivFlag:
                self.state = 486
                self.angle_db_statement()
                self.state = 491
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 492
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pre_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Paramagnetic(self):
            return self.getToken(XplorMRParser.Paramagnetic, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def pre_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pre_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pre_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_pre_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPre_restraint" ):
                listener.enterPre_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPre_restraint" ):
                listener.exitPre_restraint(self)




    def pre_restraint(self):

        localctx = XplorMRParser.Pre_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 36, self.RULE_pre_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 494
            self.match(XplorMRParser.Paramagnetic)
            self.state = 498
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Potential) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.ForceConstant))) != 0) or ((((_la - 98)) & ~0x3f) == 0 and ((1 << (_la - 98)) & ((1 << (XplorMRParser.Kconst - 98)) | (1 << (XplorMRParser.Omega - 98)) | (1 << (XplorMRParser.Tauc - 98)) | (1 << (XplorMRParser.Debug - 98)))) != 0) or _la==XplorMRParser.For:
                self.state = 495
                self.pre_statement()
                self.state = 500
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 501
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pcs_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Xpcs(self):
            return self.getToken(XplorMRParser.Xpcs, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def pcs_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pcs_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pcs_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_pcs_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPcs_restraint" ):
                listener.enterPcs_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPcs_restraint" ):
                listener.exitPcs_restraint(self)




    def pcs_restraint(self):

        localctx = XplorMRParser.Pcs_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 38, self.RULE_pcs_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 503
            self.match(XplorMRParser.Xpcs)
            self.state = 507
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant))) != 0) or ((((_la - 103)) & ~0x3f) == 0 and ((1 << (_la - 103)) & ((1 << (XplorMRParser.Tolerance - 103)) | (1 << (XplorMRParser.Save - 103)) | (1 << (XplorMRParser.Fmed - 103)) | (1 << (XplorMRParser.ErrOn - 103)) | (1 << (XplorMRParser.ErrOff - 103)) | (1 << (XplorMRParser.Fon - 103)) | (1 << (XplorMRParser.Foff - 103)) | (1 << (XplorMRParser.Son - 103)) | (1 << (XplorMRParser.Soff - 103)) | (1 << (XplorMRParser.Frun - 103)))) != 0) or _la==XplorMRParser.For:
                self.state = 504
                self.pcs_statement()
                self.state = 509
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 510
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Prdc_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Xrdcoupling(self):
            return self.getToken(XplorMRParser.Xrdcoupling, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def prdc_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Prdc_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Prdc_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_prdc_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPrdc_restraint" ):
                listener.enterPrdc_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPrdc_restraint" ):
                listener.exitPrdc_restraint(self)




    def prdc_restraint(self):

        localctx = XplorMRParser.Prdc_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 40, self.RULE_prdc_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 512
            self.match(XplorMRParser.Xrdcoupling)
            self.state = 516
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant))) != 0) or ((((_la - 103)) & ~0x3f) == 0 and ((1 << (_la - 103)) & ((1 << (XplorMRParser.Tolerance - 103)) | (1 << (XplorMRParser.Save - 103)) | (1 << (XplorMRParser.Fmed - 103)) | (1 << (XplorMRParser.ErrOn - 103)) | (1 << (XplorMRParser.ErrOff - 103)) | (1 << (XplorMRParser.Fon - 103)) | (1 << (XplorMRParser.Foff - 103)) | (1 << (XplorMRParser.Son - 103)) | (1 << (XplorMRParser.Soff - 103)) | (1 << (XplorMRParser.Frun - 103)))) != 0):
                self.state = 513
                self.prdc_statement()
                self.state = 518
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 519
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Porientation_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Xangle(self):
            return self.getToken(XplorMRParser.Xangle, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def porientation_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Porientation_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Porientation_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_porientation_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPorientation_restraint" ):
                listener.enterPorientation_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPorientation_restraint" ):
                listener.exitPorientation_restraint(self)




    def porientation_restraint(self):

        localctx = XplorMRParser.Porientation_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 42, self.RULE_porientation_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 521
            self.match(XplorMRParser.Xangle)
            self.state = 525
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.ForceConstant))) != 0):
                self.state = 522
                self.porientation_statement()
                self.state = 527
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 528
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pccr_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Xccr(self):
            return self.getToken(XplorMRParser.Xccr, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def pccr_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pccr_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pccr_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_pccr_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPccr_restraint" ):
                listener.enterPccr_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPccr_restraint" ):
                listener.exitPccr_restraint(self)




    def pccr_restraint(self):

        localctx = XplorMRParser.Pccr_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 44, self.RULE_pccr_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 530
            self.match(XplorMRParser.Xccr)
            self.state = 534
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.Coefficients) | (1 << XplorMRParser.ForceConstant))) != 0) or _la==XplorMRParser.Frun or _la==XplorMRParser.Weip:
                self.state = 531
                self.pccr_statement()
                self.state = 536
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 537
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Hbond_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Hbda(self):
            return self.getToken(XplorMRParser.Hbda, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def hbond_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_hbond_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHbond_restraint" ):
                listener.enterHbond_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHbond_restraint" ):
                listener.exitHbond_restraint(self)




    def hbond_restraint(self):

        localctx = XplorMRParser.Hbond_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 46, self.RULE_hbond_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 539
            self.match(XplorMRParser.Hbda)
            self.state = 543
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Assign) | (1 << XplorMRParser.Classification) | (1 << XplorMRParser.Nrestraints) | (1 << XplorMRParser.Print) | (1 << XplorMRParser.Reset) | (1 << XplorMRParser.ForceConstant))) != 0) or _la==XplorMRParser.For:
                self.state = 540
                self.hbond_statement()
                self.state = 545
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 546
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Hbond_db_restraintContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Hbdb(self):
            return self.getToken(XplorMRParser.Hbdb, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def hbond_db_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_db_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_db_statementContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_hbond_db_restraint

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHbond_db_restraint" ):
                listener.enterHbond_db_restraint(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHbond_db_restraint" ):
                listener.exitHbond_db_restraint(self)




    def hbond_db_restraint(self):

        localctx = XplorMRParser.Hbond_db_restraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 48, self.RULE_hbond_db_restraint)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 548
            self.match(XplorMRParser.Hbdb)
            self.state = 552
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or ((((_la - 117)) & ~0x3f) == 0 and ((1 << (_la - 117)) & ((1 << (XplorMRParser.Kdir - 117)) | (1 << (XplorMRParser.Klin - 117)) | (1 << (XplorMRParser.Nseg - 117)) | (1 << (XplorMRParser.Nmin - 117)) | (1 << (XplorMRParser.Nmax - 117)) | (1 << (XplorMRParser.Segm - 117)) | (1 << (XplorMRParser.Ohcut - 117)) | (1 << (XplorMRParser.Coh1cut - 117)) | (1 << (XplorMRParser.Coh2cut - 117)) | (1 << (XplorMRParser.Ohncut - 117)) | (1 << (XplorMRParser.Updfrq - 117)) | (1 << (XplorMRParser.Prnfrq - 117)) | (1 << (XplorMRParser.Freemode - 117)) | (1 << (XplorMRParser.For - 117)))) != 0):
                self.state = 549
                self.hbond_db_statement()
                self.state = 554
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 555
            self.match(XplorMRParser.End)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Noe_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def noe_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Noe_assignContext,0)


        def noe_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Noe_assign_loopContext,0)


        def Asymptote(self):
            return self.getToken(XplorMRParser.Asymptote, 0)

        def Simple_name(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name)
            else:
                return self.getToken(XplorMRParser.Simple_name, i)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def Average(self):
            return self.getToken(XplorMRParser.Average, 0)

        def Simple_name_A(self):
            return self.getToken(XplorMRParser.Simple_name_A, 0)

        def Averaging_methods(self):
            return self.getToken(XplorMRParser.Averaging_methods, 0)

        def Bhig(self):
            return self.getToken(XplorMRParser.Bhig, 0)

        def Ceiling(self):
            return self.getToken(XplorMRParser.Ceiling, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def CountViol(self):
            return self.getToken(XplorMRParser.CountViol, 0)

        def Distribute(self):
            return self.getToken(XplorMRParser.Distribute, 0)

        def Monomers(self):
            return self.getToken(XplorMRParser.Monomers, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Ncount(self):
            return self.getToken(XplorMRParser.Ncount, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Simple_name_P(self):
            return self.getToken(XplorMRParser.Simple_name_P, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Predict(self):
            return self.getToken(XplorMRParser.Predict, 0)

        def predict_statement(self):
            return self.getTypedRuleContext(XplorMRParser.Predict_statementContext,0)


        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Rswitch(self):
            return self.getToken(XplorMRParser.Rswitch, 0)

        def Scale(self):
            return self.getToken(XplorMRParser.Scale, 0)

        def SoExponent(self):
            return self.getToken(XplorMRParser.SoExponent, 0)

        def SqConstant(self):
            return self.getToken(XplorMRParser.SqConstant, 0)

        def SqExponent(self):
            return self.getToken(XplorMRParser.SqExponent, 0)

        def SqOffset(self):
            return self.getToken(XplorMRParser.SqOffset, 0)

        def Temperature(self):
            return self.getToken(XplorMRParser.Temperature, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_noe_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNoe_statement" ):
                listener.enterNoe_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNoe_statement" ):
                listener.exitNoe_statement(self)




    def noe_statement(self):

        localctx = XplorMRParser.Noe_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 50, self.RULE_noe_statement)
        self._la = 0 # Token type
        try:
            self.state = 632
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 557
                self.noe_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 558
                self.noe_assign_loop()
                pass
            elif token in [XplorMRParser.Asymptote]:
                self.enterOuterAlt(localctx, 3)
                self.state = 559
                self.match(XplorMRParser.Asymptote)
                self.state = 560
                self.match(XplorMRParser.Simple_name)
                self.state = 561
                self.number_s()
                pass
            elif token in [XplorMRParser.Average]:
                self.enterOuterAlt(localctx, 4)
                self.state = 562
                self.match(XplorMRParser.Average)
                self.state = 563
                self.match(XplorMRParser.Simple_name_A)
                self.state = 564
                self.match(XplorMRParser.Averaging_methods)
                pass
            elif token in [XplorMRParser.Bhig]:
                self.enterOuterAlt(localctx, 5)
                self.state = 565
                self.match(XplorMRParser.Bhig)
                self.state = 566
                self.match(XplorMRParser.Simple_name)
                self.state = 567
                self.number_s()
                pass
            elif token in [XplorMRParser.Ceiling]:
                self.enterOuterAlt(localctx, 6)
                self.state = 568
                self.match(XplorMRParser.Ceiling)
                self.state = 570
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 569
                    self.match(XplorMRParser.Equ_op)


                self.state = 572
                self.number_s()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 7)
                self.state = 573
                self.match(XplorMRParser.Classification)
                self.state = 575
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 574
                    self.match(XplorMRParser.Equ_op)


                self.state = 577
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.CountViol]:
                self.enterOuterAlt(localctx, 8)
                self.state = 578
                self.match(XplorMRParser.CountViol)
                self.state = 579
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Distribute]:
                self.enterOuterAlt(localctx, 9)
                self.state = 580
                self.match(XplorMRParser.Distribute)
                self.state = 581
                self.match(XplorMRParser.Simple_name)
                self.state = 582
                self.match(XplorMRParser.Simple_name)
                self.state = 583
                self.number_s()
                pass
            elif token in [XplorMRParser.Monomers]:
                self.enterOuterAlt(localctx, 10)
                self.state = 584
                self.match(XplorMRParser.Monomers)
                self.state = 585
                self.match(XplorMRParser.Simple_name)
                self.state = 586
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Ncount]:
                self.enterOuterAlt(localctx, 11)
                self.state = 587
                self.match(XplorMRParser.Ncount)
                self.state = 588
                self.match(XplorMRParser.Simple_name)
                self.state = 589
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 12)
                self.state = 590
                self.match(XplorMRParser.Nrestraints)
                self.state = 592
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 591
                    self.match(XplorMRParser.Equ_op)


                self.state = 594
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 13)
                self.state = 595
                self.match(XplorMRParser.Potential)
                self.state = 596
                self.match(XplorMRParser.Simple_name_P)
                self.state = 597
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Predict]:
                self.enterOuterAlt(localctx, 14)
                self.state = 598
                self.match(XplorMRParser.Predict)
                self.state = 599
                self.predict_statement()
                self.state = 600
                self.match(XplorMRParser.End)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 15)
                self.state = 602
                self.match(XplorMRParser.Print)
                self.state = 603
                self.match(XplorMRParser.Threshold)
                self.state = 605
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 604
                    self.match(XplorMRParser.Equ_op)


                self.state = 607
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 16)
                self.state = 608
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Rswitch]:
                self.enterOuterAlt(localctx, 17)
                self.state = 609
                self.match(XplorMRParser.Rswitch)
                self.state = 610
                self.match(XplorMRParser.Simple_name)
                self.state = 611
                self.number_s()
                pass
            elif token in [XplorMRParser.Scale]:
                self.enterOuterAlt(localctx, 18)
                self.state = 612
                self.match(XplorMRParser.Scale)
                self.state = 613
                self.match(XplorMRParser.Simple_name)
                self.state = 614
                self.number_s()
                pass
            elif token in [XplorMRParser.SoExponent]:
                self.enterOuterAlt(localctx, 19)
                self.state = 615
                self.match(XplorMRParser.SoExponent)
                self.state = 616
                self.match(XplorMRParser.Simple_name)
                self.state = 617
                self.number_s()
                pass
            elif token in [XplorMRParser.SqConstant]:
                self.enterOuterAlt(localctx, 20)
                self.state = 618
                self.match(XplorMRParser.SqConstant)
                self.state = 619
                self.match(XplorMRParser.Simple_name)
                self.state = 620
                self.number_s()
                pass
            elif token in [XplorMRParser.SqExponent]:
                self.enterOuterAlt(localctx, 21)
                self.state = 621
                self.match(XplorMRParser.SqExponent)
                self.state = 622
                self.match(XplorMRParser.Simple_name)
                self.state = 623
                self.number_s()
                pass
            elif token in [XplorMRParser.SqOffset]:
                self.enterOuterAlt(localctx, 22)
                self.state = 624
                self.match(XplorMRParser.SqOffset)
                self.state = 625
                self.match(XplorMRParser.Simple_name)
                self.state = 626
                self.number_s()
                pass
            elif token in [XplorMRParser.Temperature]:
                self.enterOuterAlt(localctx, 23)
                self.state = 627
                self.match(XplorMRParser.Temperature)
                self.state = 629
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 628
                    self.match(XplorMRParser.Equ_op)


                self.state = 631
                self.number_s()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Noe_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Assign)
            else:
                return self.getToken(XplorMRParser.Assign, i)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def noe_annotation(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Noe_annotationContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Noe_annotationContext,i)


        def Or_op(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Or_op)
            else:
                return self.getToken(XplorMRParser.Or_op, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_noe_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNoe_assign" ):
                listener.enterNoe_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNoe_assign" ):
                listener.exitNoe_assign(self)




    def noe_assign(self):

        localctx = XplorMRParser.Noe_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 52, self.RULE_noe_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 634
            self.match(XplorMRParser.Assign)
            self.state = 635
            self.selection()
            self.state = 636
            self.selection()
            self.state = 637
            self.number()
            self.state = 639
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,40,self._ctx)
            if la_ == 1:
                self.state = 638
                self.number()


            self.state = 642
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 641
                self.number()


            self.state = 647
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << XplorMRParser.Peak) | (1 << XplorMRParser.Spectrum) | (1 << XplorMRParser.Volume) | (1 << XplorMRParser.Ppm1) | (1 << XplorMRParser.Ppm2) | (1 << XplorMRParser.Cv) | (1 << XplorMRParser.Weight))) != 0):
                self.state = 644
                self.noe_annotation()
                self.state = 649
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 667
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Or_op:
                self.state = 650
                self.match(XplorMRParser.Or_op)
                self.state = 652
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Assign:
                    self.state = 651
                    self.match(XplorMRParser.Assign)


                self.state = 654
                self.selection()
                self.state = 655
                self.selection()
                self.state = 657
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,44,self._ctx)
                if la_ == 1:
                    self.state = 656
                    self.number()


                self.state = 660
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,45,self._ctx)
                if la_ == 1:
                    self.state = 659
                    self.number()


                self.state = 663
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                    self.state = 662
                    self.number()


                self.state = 669
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Predict_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Cutoff(self):
            return self.getToken(XplorMRParser.Cutoff, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Cuton(self):
            return self.getToken(XplorMRParser.Cuton, 0)

        def From(self):
            return self.getToken(XplorMRParser.From, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def To(self):
            return self.getToken(XplorMRParser.To, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_predict_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPredict_statement" ):
                listener.enterPredict_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPredict_statement" ):
                listener.exitPredict_statement(self)




    def predict_statement(self):

        localctx = XplorMRParser.Predict_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 54, self.RULE_predict_statement)
        self._la = 0 # Token type
        try:
            self.state = 684
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Cutoff]:
                self.enterOuterAlt(localctx, 1)
                self.state = 670
                self.match(XplorMRParser.Cutoff)
                self.state = 672
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 671
                    self.match(XplorMRParser.Equ_op)


                self.state = 674
                self.number_s()
                pass
            elif token in [XplorMRParser.Cuton]:
                self.enterOuterAlt(localctx, 2)
                self.state = 675
                self.match(XplorMRParser.Cuton)
                self.state = 677
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 676
                    self.match(XplorMRParser.Equ_op)


                self.state = 679
                self.number_s()
                pass
            elif token in [XplorMRParser.From]:
                self.enterOuterAlt(localctx, 3)
                self.state = 680
                self.match(XplorMRParser.From)
                self.state = 681
                self.selection()
                pass
            elif token in [XplorMRParser.To]:
                self.enterOuterAlt(localctx, 4)
                self.state = 682
                self.match(XplorMRParser.To)
                self.state = 683
                self.selection()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Noe_annotationContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Peak(self):
            return self.getToken(XplorMRParser.Peak, 0)

        def number_a(self):
            return self.getTypedRuleContext(XplorMRParser.Number_aContext,0)


        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Spectrum(self):
            return self.getToken(XplorMRParser.Spectrum, 0)

        def Weight(self):
            return self.getToken(XplorMRParser.Weight, 0)

        def Volume(self):
            return self.getToken(XplorMRParser.Volume, 0)

        def Ppm1(self):
            return self.getToken(XplorMRParser.Ppm1, 0)

        def Ppm2(self):
            return self.getToken(XplorMRParser.Ppm2, 0)

        def Cv(self):
            return self.getToken(XplorMRParser.Cv, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_noe_annotation

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNoe_annotation" ):
                listener.enterNoe_annotation(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNoe_annotation" ):
                listener.exitNoe_annotation(self)




    def noe_annotation(self):

        localctx = XplorMRParser.Noe_annotationContext(self, self._ctx, self.state)
        self.enterRule(localctx, 56, self.RULE_noe_annotation)
        self._la = 0 # Token type
        try:
            self.state = 721
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Peak]:
                self.enterOuterAlt(localctx, 1)
                self.state = 686
                self.match(XplorMRParser.Peak)
                self.state = 688
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 687
                    self.match(XplorMRParser.Equ_op)


                self.state = 690
                self.number_a()
                pass
            elif token in [XplorMRParser.Spectrum]:
                self.enterOuterAlt(localctx, 2)
                self.state = 691
                self.match(XplorMRParser.Spectrum)
                self.state = 693
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 692
                    self.match(XplorMRParser.Equ_op)


                self.state = 695
                self.number_a()
                pass
            elif token in [XplorMRParser.Weight]:
                self.enterOuterAlt(localctx, 3)
                self.state = 696
                self.match(XplorMRParser.Weight)
                self.state = 698
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 697
                    self.match(XplorMRParser.Equ_op)


                self.state = 700
                self.number_a()
                pass
            elif token in [XplorMRParser.Volume]:
                self.enterOuterAlt(localctx, 4)
                self.state = 701
                self.match(XplorMRParser.Volume)
                self.state = 703
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 702
                    self.match(XplorMRParser.Equ_op)


                self.state = 705
                self.number_a()
                pass
            elif token in [XplorMRParser.Ppm1]:
                self.enterOuterAlt(localctx, 5)
                self.state = 706
                self.match(XplorMRParser.Ppm1)
                self.state = 708
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 707
                    self.match(XplorMRParser.Equ_op)


                self.state = 710
                self.number_a()
                pass
            elif token in [XplorMRParser.Ppm2]:
                self.enterOuterAlt(localctx, 6)
                self.state = 711
                self.match(XplorMRParser.Ppm2)
                self.state = 713
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 712
                    self.match(XplorMRParser.Equ_op)


                self.state = 715
                self.number_a()
                pass
            elif token in [XplorMRParser.Cv]:
                self.enterOuterAlt(localctx, 7)
                self.state = 716
                self.match(XplorMRParser.Cv)
                self.state = 718
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 717
                    self.match(XplorMRParser.Equ_op)


                self.state = 720
                self.number_a()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Dihedral_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def dihedral_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Dihedral_assignContext,0)


        def dihedral_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Dihedral_assign_loopContext,0)


        def Nassign(self):
            return self.getToken(XplorMRParser.Nassign, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Scale(self):
            return self.getToken(XplorMRParser.Scale, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_dihedral_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDihedral_statement" ):
                listener.enterDihedral_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDihedral_statement" ):
                listener.exitDihedral_statement(self)




    def dihedral_statement(self):

        localctx = XplorMRParser.Dihedral_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 58, self.RULE_dihedral_statement)
        self._la = 0 # Token type
        try:
            self.state = 736
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 723
                self.dihedral_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 724
                self.dihedral_assign_loop()
                pass
            elif token in [XplorMRParser.Nassign]:
                self.enterOuterAlt(localctx, 3)
                self.state = 725
                self.match(XplorMRParser.Nassign)
                self.state = 727
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 726
                    self.match(XplorMRParser.Equ_op)


                self.state = 729
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 4)
                self.state = 730
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Scale]:
                self.enterOuterAlt(localctx, 5)
                self.state = 731
                self.match(XplorMRParser.Scale)
                self.state = 733
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 732
                    self.match(XplorMRParser.Equ_op)


                self.state = 735
                self.number_s()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Dihedral_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_dihedral_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDihedral_assign" ):
                listener.enterDihedral_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDihedral_assign" ):
                listener.exitDihedral_assign(self)




    def dihedral_assign(self):

        localctx = XplorMRParser.Dihedral_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 60, self.RULE_dihedral_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 738
            self.match(XplorMRParser.Assign)
            self.state = 739
            self.selection()
            self.state = 740
            self.selection()
            self.state = 741
            self.selection()
            self.state = 742
            self.selection()
            self.state = 743
            self.number()
            self.state = 744
            self.number()
            self.state = 745
            self.number()
            self.state = 746
            self.match(XplorMRParser.Integer)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Sani_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def sani_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Sani_assignContext,0)


        def sani_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Sani_assign_loopContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_sani_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterSani_statement" ):
                listener.enterSani_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitSani_statement" ):
                listener.exitSani_statement(self)




    def sani_statement(self):

        localctx = XplorMRParser.Sani_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 62, self.RULE_sani_statement)
        self._la = 0 # Token type
        try:
            self.state = 776
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 748
                self.sani_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 749
                self.sani_assign_loop()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 3)
                self.state = 750
                self.match(XplorMRParser.Classification)
                self.state = 752
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 751
                    self.match(XplorMRParser.Equ_op)


                self.state = 754
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 4)
                self.state = 755
                self.match(XplorMRParser.Coefficients)
                self.state = 756
                self.number_s()
                self.state = 757
                self.number_s()
                self.state = 758
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 5)
                self.state = 760
                self.match(XplorMRParser.ForceConstant)
                self.state = 762
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 761
                    self.match(XplorMRParser.Equ_op)


                self.state = 764
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 6)
                self.state = 765
                self.match(XplorMRParser.Nrestraints)
                self.state = 767
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 766
                    self.match(XplorMRParser.Equ_op)


                self.state = 769
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 7)
                self.state = 770
                self.match(XplorMRParser.Potential)
                self.state = 771
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 8)
                self.state = 772
                self.match(XplorMRParser.Print)
                self.state = 773
                self.match(XplorMRParser.Threshold)
                self.state = 774
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 9)
                self.state = 775
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Sani_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_sani_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterSani_assign" ):
                listener.enterSani_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitSani_assign" ):
                listener.exitSani_assign(self)




    def sani_assign(self):

        localctx = XplorMRParser.Sani_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 64, self.RULE_sani_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 778
            self.match(XplorMRParser.Assign)
            self.state = 779
            self.selection()
            self.state = 780
            self.selection()
            self.state = 781
            self.selection()
            self.state = 782
            self.selection()
            self.state = 783
            self.selection()
            self.state = 784
            self.selection()
            self.state = 785
            self.number()
            self.state = 787
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,66,self._ctx)
            if la_ == 1:
                self.state = 786
                self.number()


            self.state = 790
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 789
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Xdip_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def xdip_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Xdip_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Type(self):
            return self.getToken(XplorMRParser.Type, 0)

        def Rdc_dist_fix_types(self):
            return self.getToken(XplorMRParser.Rdc_dist_fix_types, 0)

        def Scale(self):
            return self.getToken(XplorMRParser.Scale, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def Sign(self):
            return self.getToken(XplorMRParser.Sign, 0)

        def Logical(self):
            return self.getToken(XplorMRParser.Logical, 0)

        def Average(self):
            return self.getToken(XplorMRParser.Average, 0)

        def Averaging_methods(self):
            return self.getToken(XplorMRParser.Averaging_methods, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_xdip_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterXdip_statement" ):
                listener.enterXdip_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitXdip_statement" ):
                listener.exitXdip_statement(self)




    def xdip_statement(self):

        localctx = XplorMRParser.Xdip_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 66, self.RULE_xdip_statement)
        self._la = 0 # Token type
        try:
            self.state = 830
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 792
                self.xdip_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 793
                self.match(XplorMRParser.Classification)
                self.state = 795
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 794
                    self.match(XplorMRParser.Equ_op)


                self.state = 797
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Type]:
                self.enterOuterAlt(localctx, 3)
                self.state = 798
                self.match(XplorMRParser.Type)
                self.state = 799
                self.match(XplorMRParser.Rdc_dist_fix_types)
                pass
            elif token in [XplorMRParser.Scale]:
                self.enterOuterAlt(localctx, 4)
                self.state = 800
                self.match(XplorMRParser.Scale)
                self.state = 802
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 801
                    self.match(XplorMRParser.Equ_op)


                self.state = 804
                self.number_s()
                pass
            elif token in [XplorMRParser.Sign]:
                self.enterOuterAlt(localctx, 5)
                self.state = 805
                self.match(XplorMRParser.Sign)
                self.state = 806
                self.match(XplorMRParser.Logical)
                pass
            elif token in [XplorMRParser.Average]:
                self.enterOuterAlt(localctx, 6)
                self.state = 807
                self.match(XplorMRParser.Average)
                self.state = 808
                self.match(XplorMRParser.Averaging_methods)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 7)
                self.state = 809
                self.match(XplorMRParser.Coefficients)
                self.state = 810
                self.number_s()
                self.state = 811
                self.number_s()
                self.state = 812
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 8)
                self.state = 814
                self.match(XplorMRParser.ForceConstant)
                self.state = 816
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 815
                    self.match(XplorMRParser.Equ_op)


                self.state = 818
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 9)
                self.state = 819
                self.match(XplorMRParser.Nrestraints)
                self.state = 821
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 820
                    self.match(XplorMRParser.Equ_op)


                self.state = 823
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 10)
                self.state = 824
                self.match(XplorMRParser.Potential)
                self.state = 825
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 11)
                self.state = 826
                self.match(XplorMRParser.Print)
                self.state = 827
                self.match(XplorMRParser.Threshold)
                self.state = 828
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 12)
                self.state = 829
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Xdip_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_xdip_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterXdip_assign" ):
                listener.enterXdip_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitXdip_assign" ):
                listener.exitXdip_assign(self)




    def xdip_assign(self):

        localctx = XplorMRParser.Xdip_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 68, self.RULE_xdip_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 832
            self.match(XplorMRParser.Assign)
            self.state = 833
            self.selection()
            self.state = 834
            self.selection()
            self.state = 835
            self.selection()
            self.state = 836
            self.selection()
            self.state = 837
            self.selection()
            self.state = 838
            self.selection()
            self.state = 839
            self.number()
            self.state = 840
            self.number()
            self.state = 847
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,73,self._ctx)
            if la_ == 1:
                self.state = 841
                self.number()

            elif la_ == 2:
                self.state = 842
                self.number()
                self.state = 843
                self.number()
                self.state = 844
                self.number()
                self.state = 845
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Vean_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def vean_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Vean_assignContext,0)


        def Cv(self):
            return self.getToken(XplorMRParser.Cv, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Partition(self):
            return self.getToken(XplorMRParser.Partition, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_vean_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVean_statement" ):
                listener.enterVean_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVean_statement" ):
                listener.exitVean_statement(self)




    def vean_statement(self):

        localctx = XplorMRParser.Vean_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 70, self.RULE_vean_statement)
        self._la = 0 # Token type
        try:
            self.state = 881
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 849
                self.vean_assign()
                pass
            elif token in [XplorMRParser.Cv]:
                self.enterOuterAlt(localctx, 2)
                self.state = 850
                self.match(XplorMRParser.Cv)
                self.state = 852
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 851
                    self.match(XplorMRParser.Equ_op)


                self.state = 854
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 3)
                self.state = 855
                self.match(XplorMRParser.Classification)
                self.state = 857
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 856
                    self.match(XplorMRParser.Equ_op)


                self.state = 859
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 4)
                self.state = 860
                self.match(XplorMRParser.ForceConstant)
                self.state = 862
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 861
                    self.match(XplorMRParser.Equ_op)


                self.state = 864
                self.number_s()
                self.state = 865
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 5)
                self.state = 867
                self.match(XplorMRParser.Nrestraints)
                self.state = 869
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 868
                    self.match(XplorMRParser.Equ_op)


                self.state = 871
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Partition]:
                self.enterOuterAlt(localctx, 6)
                self.state = 872
                self.match(XplorMRParser.Partition)
                self.state = 874
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 873
                    self.match(XplorMRParser.Equ_op)


                self.state = 876
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 7)
                self.state = 877
                self.match(XplorMRParser.Print)
                self.state = 878
                self.match(XplorMRParser.Threshold)
                self.state = 879
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 8)
                self.state = 880
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Vean_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_vean_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVean_assign" ):
                listener.enterVean_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVean_assign" ):
                listener.exitVean_assign(self)




    def vean_assign(self):

        localctx = XplorMRParser.Vean_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 72, self.RULE_vean_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 883
            self.match(XplorMRParser.Assign)
            self.state = 884
            self.selection()
            self.state = 885
            self.selection()
            self.state = 886
            self.selection()
            self.state = 887
            self.selection()
            self.state = 888
            self.number()
            self.state = 889
            self.number()
            self.state = 893
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 890
                self.number()
                self.state = 891
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Tenso_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def tenso_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Tenso_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_tenso_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterTenso_statement" ):
                listener.enterTenso_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitTenso_statement" ):
                listener.exitTenso_statement(self)




    def tenso_statement(self):

        localctx = XplorMRParser.Tenso_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 74, self.RULE_tenso_statement)
        self._la = 0 # Token type
        try:
            self.state = 914
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 895
                self.tenso_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 896
                self.match(XplorMRParser.Classification)
                self.state = 898
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 897
                    self.match(XplorMRParser.Equ_op)


                self.state = 900
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 3)
                self.state = 901
                self.match(XplorMRParser.Coefficients)
                self.state = 902
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 4)
                self.state = 903
                self.match(XplorMRParser.Nrestraints)
                self.state = 905
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 904
                    self.match(XplorMRParser.Equ_op)


                self.state = 907
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 5)
                self.state = 908
                self.match(XplorMRParser.Potential)
                self.state = 909
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 6)
                self.state = 910
                self.match(XplorMRParser.Print)
                self.state = 911
                self.match(XplorMRParser.Threshold)
                self.state = 912
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 7)
                self.state = 913
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Tenso_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_tenso_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterTenso_assign" ):
                listener.enterTenso_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitTenso_assign" ):
                listener.exitTenso_assign(self)




    def tenso_assign(self):

        localctx = XplorMRParser.Tenso_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 76, self.RULE_tenso_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 916
            self.match(XplorMRParser.Assign)
            self.state = 917
            self.selection()
            self.state = 918
            self.selection()
            self.state = 919
            self.number()
            self.state = 921
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 920
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Anis_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def anis_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Anis_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Type(self):
            return self.getToken(XplorMRParser.Type, 0)

        def Rdc_or_Diff_anis_types(self):
            return self.getToken(XplorMRParser.Rdc_or_Diff_anis_types, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_anis_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterAnis_statement" ):
                listener.enterAnis_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitAnis_statement" ):
                listener.exitAnis_statement(self)




    def anis_statement(self):

        localctx = XplorMRParser.Anis_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 78, self.RULE_anis_statement)
        self._la = 0 # Token type
        try:
            self.state = 953
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 923
                self.anis_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 924
                self.match(XplorMRParser.Classification)
                self.state = 926
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 925
                    self.match(XplorMRParser.Equ_op)


                self.state = 928
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 3)
                self.state = 929
                self.match(XplorMRParser.Coefficients)
                self.state = 930
                self.number_s()
                self.state = 931
                self.number_s()
                self.state = 932
                self.number_s()
                self.state = 933
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 4)
                self.state = 935
                self.match(XplorMRParser.ForceConstant)
                self.state = 937
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 936
                    self.match(XplorMRParser.Equ_op)


                self.state = 939
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 5)
                self.state = 940
                self.match(XplorMRParser.Nrestraints)
                self.state = 942
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 941
                    self.match(XplorMRParser.Equ_op)


                self.state = 944
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 6)
                self.state = 945
                self.match(XplorMRParser.Potential)
                self.state = 946
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 7)
                self.state = 947
                self.match(XplorMRParser.Print)
                self.state = 948
                self.match(XplorMRParser.Threshold)
                self.state = 949
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 8)
                self.state = 950
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Type]:
                self.enterOuterAlt(localctx, 9)
                self.state = 951
                self.match(XplorMRParser.Type)
                self.state = 952
                self.match(XplorMRParser.Rdc_or_Diff_anis_types)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Anis_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_anis_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterAnis_assign" ):
                listener.enterAnis_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitAnis_assign" ):
                listener.exitAnis_assign(self)




    def anis_assign(self):

        localctx = XplorMRParser.Anis_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 80, self.RULE_anis_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 955
            self.match(XplorMRParser.Assign)
            self.state = 956
            self.selection()
            self.state = 957
            self.selection()
            self.state = 958
            self.selection()
            self.state = 959
            self.selection()
            self.state = 960
            self.number()
            self.state = 962
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 961
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Planar_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Group(self):
            return self.getToken(XplorMRParser.Group, 0)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def group_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Group_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Group_statementContext,i)


        def Initialize(self):
            return self.getToken(XplorMRParser.Initialize, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_planar_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPlanar_statement" ):
                listener.enterPlanar_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPlanar_statement" ):
                listener.exitPlanar_statement(self)




    def planar_statement(self):

        localctx = XplorMRParser.Planar_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 82, self.RULE_planar_statement)
        self._la = 0 # Token type
        try:
            self.state = 973
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Group]:
                self.enterOuterAlt(localctx, 1)
                self.state = 964
                self.match(XplorMRParser.Group)
                self.state = 968
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Selection or _la==XplorMRParser.Weight:
                    self.state = 965
                    self.group_statement()
                    self.state = 970
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 971
                self.match(XplorMRParser.End)
                pass
            elif token in [XplorMRParser.Initialize]:
                self.enterOuterAlt(localctx, 2)
                self.state = 972
                self.match(XplorMRParser.Initialize)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Group_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Selection(self):
            return self.getToken(XplorMRParser.Selection, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Weight(self):
            return self.getToken(XplorMRParser.Weight, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_group_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterGroup_statement" ):
                listener.enterGroup_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitGroup_statement" ):
                listener.exitGroup_statement(self)




    def group_statement(self):

        localctx = XplorMRParser.Group_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 84, self.RULE_group_statement)
        self._la = 0 # Token type
        try:
            self.state = 985
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Selection]:
                self.enterOuterAlt(localctx, 1)
                self.state = 975
                self.match(XplorMRParser.Selection)
                self.state = 977
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 976
                    self.match(XplorMRParser.Equ_op)


                self.state = 979
                self.selection()
                pass
            elif token in [XplorMRParser.Weight]:
                self.enterOuterAlt(localctx, 2)
                self.state = 980
                self.match(XplorMRParser.Weight)
                self.state = 982
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 981
                    self.match(XplorMRParser.Equ_op)


                self.state = 984
                self.number_s()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Harmonic_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Exponent(self):
            return self.getToken(XplorMRParser.Exponent, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Equ_op(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Equ_op)
            else:
                return self.getToken(XplorMRParser.Equ_op, i)

        def Normal(self):
            return self.getToken(XplorMRParser.Normal, 0)

        def L_paren(self):
            return self.getToken(XplorMRParser.L_paren, 0)

        def R_paren(self):
            return self.getToken(XplorMRParser.R_paren, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def Tail(self):
            return self.getToken(XplorMRParser.Tail, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def Comma(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Comma)
            else:
                return self.getToken(XplorMRParser.Comma, i)

        def Head(self):
            return self.getToken(XplorMRParser.Head, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_harmonic_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHarmonic_statement" ):
                listener.enterHarmonic_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHarmonic_statement" ):
                listener.exitHarmonic_statement(self)




    def harmonic_statement(self):

        localctx = XplorMRParser.Harmonic_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 86, self.RULE_harmonic_statement)
        self._la = 0 # Token type
        try:
            self.state = 1026
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Exponent]:
                self.enterOuterAlt(localctx, 1)
                self.state = 987
                self.match(XplorMRParser.Exponent)
                self.state = 989
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 988
                    self.match(XplorMRParser.Equ_op)


                self.state = 991
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Normal]:
                self.enterOuterAlt(localctx, 2)
                self.state = 992
                self.match(XplorMRParser.Normal)
                self.state = 994
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 993
                    self.match(XplorMRParser.Equ_op)


                self.state = 996
                self.match(XplorMRParser.L_paren)
                self.state = 1022
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Integer, XplorMRParser.Real, XplorMRParser.Symbol_name]:
                    self.state = 997
                    self.number_s()
                    self.state = 999
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Comma:
                        self.state = 998
                        self.match(XplorMRParser.Comma)


                    self.state = 1001
                    self.number_s()
                    self.state = 1003
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Comma:
                        self.state = 1002
                        self.match(XplorMRParser.Comma)


                    self.state = 1005
                    self.number_s()
                    pass
                elif token in [XplorMRParser.Tail]:
                    self.state = 1007
                    self.match(XplorMRParser.Tail)
                    self.state = 1009
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 1008
                        self.match(XplorMRParser.Equ_op)


                    self.state = 1011
                    self.selection()
                    self.state = 1013
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Comma:
                        self.state = 1012
                        self.match(XplorMRParser.Comma)


                    self.state = 1020
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Head:
                        self.state = 1015
                        self.match(XplorMRParser.Head)
                        self.state = 1017
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if _la==XplorMRParser.Equ_op:
                            self.state = 1016
                            self.match(XplorMRParser.Equ_op)


                        self.state = 1019
                        self.selection()


                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1024
                self.match(XplorMRParser.R_paren)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Harmonic_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_harmonic_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHarmonic_assign" ):
                listener.enterHarmonic_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHarmonic_assign" ):
                listener.exitHarmonic_assign(self)




    def harmonic_assign(self):

        localctx = XplorMRParser.Harmonic_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 88, self.RULE_harmonic_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1028
            self.match(XplorMRParser.Assign)
            self.state = 1029
            self.selection()
            self.state = 1030
            self.number()
            self.state = 1031
            self.number()
            self.state = 1032
            self.number()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Antidistance_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def xadc_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Xadc_assignContext,0)


        def xadc_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Xadc_assign_loopContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Expectation(self):
            return self.getToken(XplorMRParser.Expectation, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def All(self):
            return self.getToken(XplorMRParser.All, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Size(self):
            return self.getToken(XplorMRParser.Size, 0)

        def Zero(self):
            return self.getToken(XplorMRParser.Zero, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_antidistance_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterAntidistance_statement" ):
                listener.enterAntidistance_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitAntidistance_statement" ):
                listener.exitAntidistance_statement(self)




    def antidistance_statement(self):

        localctx = XplorMRParser.Antidistance_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 90, self.RULE_antidistance_statement)
        self._la = 0 # Token type
        try:
            self.state = 1071
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1034
                self.xadc_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1035
                self.xadc_assign_loop()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1036
                self.match(XplorMRParser.Classification)
                self.state = 1038
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1037
                    self.match(XplorMRParser.Equ_op)


                self.state = 1040
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Expectation]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1041
                self.match(XplorMRParser.Expectation)
                self.state = 1042
                self.match(XplorMRParser.Integer)
                self.state = 1043
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1044
                self.match(XplorMRParser.ForceConstant)
                self.state = 1046
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1045
                    self.match(XplorMRParser.Equ_op)


                self.state = 1048
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1049
                self.match(XplorMRParser.Nrestraints)
                self.state = 1051
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1050
                    self.match(XplorMRParser.Equ_op)


                self.state = 1053
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1054
                self.match(XplorMRParser.Print)
                self.state = 1055
                self.match(XplorMRParser.Threshold)
                self.state = 1056
                self.number_s()
                self.state = 1063
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.All]:
                    self.state = 1057
                    self.match(XplorMRParser.All)
                    pass
                elif token in [XplorMRParser.Classification]:
                    self.state = 1058
                    self.match(XplorMRParser.Classification)
                    self.state = 1060
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 1059
                        self.match(XplorMRParser.Equ_op)


                    self.state = 1062
                    self.match(XplorMRParser.Simple_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1065
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Size]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1066
                self.match(XplorMRParser.Size)
                self.state = 1067
                self.number_s()
                self.state = 1068
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Zero]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1070
                self.match(XplorMRParser.Zero)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Xadc_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_xadc_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterXadc_assign" ):
                listener.enterXadc_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitXadc_assign" ):
                listener.exitXadc_assign(self)




    def xadc_assign(self):

        localctx = XplorMRParser.Xadc_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 92, self.RULE_xadc_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1073
            self.match(XplorMRParser.Assign)
            self.state = 1074
            self.selection()
            self.state = 1075
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Coupling_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def coup_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Coup_assignContext,0)


        def coup_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Coup_assign_loopContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def Cv(self):
            return self.getToken(XplorMRParser.Cv, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def DegEnergy(self):
            return self.getToken(XplorMRParser.DegEnergy, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Partition(self):
            return self.getToken(XplorMRParser.Partition, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def All(self):
            return self.getToken(XplorMRParser.All, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_coupling_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCoupling_statement" ):
                listener.enterCoupling_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCoupling_statement" ):
                listener.exitCoupling_statement(self)




    def coupling_statement(self):

        localctx = XplorMRParser.Coupling_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 94, self.RULE_coupling_statement)
        self._la = 0 # Token type
        try:
            self.state = 1126
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1077
                self.coup_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1078
                self.coup_assign_loop()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1079
                self.match(XplorMRParser.Classification)
                self.state = 1081
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1080
                    self.match(XplorMRParser.Equ_op)


                self.state = 1083
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1084
                self.match(XplorMRParser.Coefficients)
                self.state = 1085
                self.number_s()
                self.state = 1086
                self.number_s()
                self.state = 1087
                self.number_s()
                self.state = 1088
                self.number_s()
                pass
            elif token in [XplorMRParser.Cv]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1090
                self.match(XplorMRParser.Cv)
                self.state = 1092
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1091
                    self.match(XplorMRParser.Equ_op)


                self.state = 1094
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.DegEnergy]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1095
                self.match(XplorMRParser.DegEnergy)
                self.state = 1096
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1097
                self.match(XplorMRParser.ForceConstant)
                self.state = 1098
                self.number_s()
                self.state = 1100
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                    self.state = 1099
                    self.number_s()


                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1102
                self.match(XplorMRParser.Nrestraints)
                self.state = 1104
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1103
                    self.match(XplorMRParser.Equ_op)


                self.state = 1106
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Partition]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1107
                self.match(XplorMRParser.Partition)
                self.state = 1109
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1108
                    self.match(XplorMRParser.Equ_op)


                self.state = 1111
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1112
                self.match(XplorMRParser.Potential)
                self.state = 1113
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1114
                self.match(XplorMRParser.Print)
                self.state = 1115
                self.match(XplorMRParser.Threshold)
                self.state = 1116
                self.number_s()
                self.state = 1123
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.All]:
                    self.state = 1117
                    self.match(XplorMRParser.All)
                    pass
                elif token in [XplorMRParser.Classification]:
                    self.state = 1118
                    self.match(XplorMRParser.Classification)
                    self.state = 1120
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 1119
                        self.match(XplorMRParser.Equ_op)


                    self.state = 1122
                    self.match(XplorMRParser.Simple_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1125
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Coup_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_coup_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCoup_assign" ):
                listener.enterCoup_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCoup_assign" ):
                listener.exitCoup_assign(self)




    def coup_assign(self):

        localctx = XplorMRParser.Coup_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 96, self.RULE_coup_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1128
            self.match(XplorMRParser.Assign)
            self.state = 1129
            self.selection()
            self.state = 1130
            self.selection()
            self.state = 1131
            self.selection()
            self.state = 1132
            self.selection()
            self.state = 1138
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.L_paren:
                self.state = 1133
                self.selection()
                self.state = 1134
                self.selection()
                self.state = 1135
                self.selection()
                self.state = 1136
                self.selection()


            self.state = 1140
            self.number()
            self.state = 1141
            self.number()
            self.state = 1145
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 1142
                self.number()
                self.state = 1143
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Carbon_shift_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def carbon_shift_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Carbon_shift_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Expectation(self):
            return self.getToken(XplorMRParser.Expectation, 0)

        def Integer(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer)
            else:
                return self.getToken(XplorMRParser.Integer, i)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def PhiStep(self):
            return self.getToken(XplorMRParser.PhiStep, 0)

        def PsiStep(self):
            return self.getToken(XplorMRParser.PsiStep, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def carbon_shift_rcoil(self):
            return self.getTypedRuleContext(XplorMRParser.Carbon_shift_rcoilContext,0)


        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Zero(self):
            return self.getToken(XplorMRParser.Zero, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_carbon_shift_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCarbon_shift_statement" ):
                listener.enterCarbon_shift_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCarbon_shift_statement" ):
                listener.exitCarbon_shift_statement(self)




    def carbon_shift_statement(self):

        localctx = XplorMRParser.Carbon_shift_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 98, self.RULE_carbon_shift_statement)
        self._la = 0 # Token type
        try:
            self.state = 1182
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1147
                self.carbon_shift_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1148
                self.match(XplorMRParser.Classification)
                self.state = 1150
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1149
                    self.match(XplorMRParser.Equ_op)


                self.state = 1152
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Expectation]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1153
                self.match(XplorMRParser.Expectation)
                self.state = 1154
                self.match(XplorMRParser.Integer)
                self.state = 1155
                self.match(XplorMRParser.Integer)
                self.state = 1156
                self.number_s()
                self.state = 1157
                self.number_s()
                self.state = 1158
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1160
                self.match(XplorMRParser.ForceConstant)
                self.state = 1162
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1161
                    self.match(XplorMRParser.Equ_op)


                self.state = 1164
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1165
                self.match(XplorMRParser.Nrestraints)
                self.state = 1167
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1166
                    self.match(XplorMRParser.Equ_op)


                self.state = 1169
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.PhiStep]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1170
                self.match(XplorMRParser.PhiStep)
                self.state = 1171
                self.number_s()
                pass
            elif token in [XplorMRParser.PsiStep]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1172
                self.match(XplorMRParser.PsiStep)
                self.state = 1173
                self.number_s()
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1174
                self.match(XplorMRParser.Potential)
                self.state = 1175
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1176
                self.match(XplorMRParser.Print)
                self.state = 1177
                self.match(XplorMRParser.Threshold)
                self.state = 1178
                self.number_s()
                pass
            elif token in [XplorMRParser.Rcoil]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1179
                self.carbon_shift_rcoil()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1180
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Zero]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1181
                self.match(XplorMRParser.Zero)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Carbon_shift_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_carbon_shift_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCarbon_shift_assign" ):
                listener.enterCarbon_shift_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCarbon_shift_assign" ):
                listener.exitCarbon_shift_assign(self)




    def carbon_shift_assign(self):

        localctx = XplorMRParser.Carbon_shift_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 100, self.RULE_carbon_shift_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1184
            self.match(XplorMRParser.Assign)
            self.state = 1185
            self.selection()
            self.state = 1186
            self.selection()
            self.state = 1187
            self.selection()
            self.state = 1188
            self.selection()
            self.state = 1189
            self.selection()
            self.state = 1190
            self.number()
            self.state = 1191
            self.number()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Carbon_shift_rcoilContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Rcoil(self):
            return self.getToken(XplorMRParser.Rcoil, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_carbon_shift_rcoil

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCarbon_shift_rcoil" ):
                listener.enterCarbon_shift_rcoil(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCarbon_shift_rcoil" ):
                listener.exitCarbon_shift_rcoil(self)




    def carbon_shift_rcoil(self):

        localctx = XplorMRParser.Carbon_shift_rcoilContext(self, self._ctx, self.state)
        self.enterRule(localctx, 102, self.RULE_carbon_shift_rcoil)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1193
            self.match(XplorMRParser.Rcoil)
            self.state = 1194
            self.selection()
            self.state = 1195
            self.number()
            self.state = 1196
            self.number()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def observed(self):
            return self.getTypedRuleContext(XplorMRParser.ObservedContext,0)


        def proton_shift_rcoil(self):
            return self.getTypedRuleContext(XplorMRParser.Proton_shift_rcoilContext,0)


        def proton_shift_anisotropy(self):
            return self.getTypedRuleContext(XplorMRParser.Proton_shift_anisotropyContext,0)


        def proton_shift_amides(self):
            return self.getTypedRuleContext(XplorMRParser.Proton_shift_amidesContext,0)


        def proton_shift_carbons(self):
            return self.getTypedRuleContext(XplorMRParser.Proton_shift_carbonsContext,0)


        def proton_shift_nitrogens(self):
            return self.getTypedRuleContext(XplorMRParser.Proton_shift_nitrogensContext,0)


        def proton_shift_oxygens(self):
            return self.getTypedRuleContext(XplorMRParser.Proton_shift_oxygensContext,0)


        def proton_shift_ring_atoms(self):
            return self.getTypedRuleContext(XplorMRParser.Proton_shift_ring_atomsContext,0)


        def proton_shift_alphas_and_amides(self):
            return self.getTypedRuleContext(XplorMRParser.Proton_shift_alphas_and_amidesContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name)
            else:
                return self.getToken(XplorMRParser.Simple_name, i)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Error(self):
            return self.getToken(XplorMRParser.Error, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def DegEnergy(self):
            return self.getToken(XplorMRParser.DegEnergy, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def All(self):
            return self.getToken(XplorMRParser.All, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_statement" ):
                listener.enterProton_shift_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_statement" ):
                listener.exitProton_shift_statement(self)




    def proton_shift_statement(self):

        localctx = XplorMRParser.Proton_shift_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 104, self.RULE_proton_shift_statement)
        self._la = 0 # Token type
        try:
            self.state = 1237
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Observed]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1198
                self.observed()
                pass
            elif token in [XplorMRParser.Rcoil]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1199
                self.proton_shift_rcoil()
                pass
            elif token in [XplorMRParser.Anisotropy]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1200
                self.proton_shift_anisotropy()
                pass
            elif token in [XplorMRParser.Amides]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1201
                self.proton_shift_amides()
                pass
            elif token in [XplorMRParser.Carbon]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1202
                self.proton_shift_carbons()
                pass
            elif token in [XplorMRParser.Nitrogens]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1203
                self.proton_shift_nitrogens()
                pass
            elif token in [XplorMRParser.Oxygens]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1204
                self.proton_shift_oxygens()
                pass
            elif token in [XplorMRParser.RingAtoms]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1205
                self.proton_shift_ring_atoms()
                pass
            elif token in [XplorMRParser.AlphasAndAmides]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1206
                self.proton_shift_alphas_and_amides()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1207
                self.match(XplorMRParser.Classification)
                self.state = 1209
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1208
                    self.match(XplorMRParser.Equ_op)


                self.state = 1211
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Error]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1212
                self.match(XplorMRParser.Error)
                self.state = 1213
                self.number_s()
                pass
            elif token in [XplorMRParser.DegEnergy]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1214
                self.match(XplorMRParser.DegEnergy)
                self.state = 1215
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 13)
                self.state = 1216
                self.match(XplorMRParser.ForceConstant)
                self.state = 1217
                self.number_s()
                self.state = 1219
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                    self.state = 1218
                    self.number_s()


                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 14)
                self.state = 1221
                self.match(XplorMRParser.Potential)
                self.state = 1222
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 15)
                self.state = 1223
                self.match(XplorMRParser.Print)
                self.state = 1224
                self.match(XplorMRParser.Threshold)
                self.state = 1225
                self.number_s()
                self.state = 1232
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.All]:
                    self.state = 1226
                    self.match(XplorMRParser.All)
                    pass
                elif token in [XplorMRParser.Classification]:
                    self.state = 1227
                    self.match(XplorMRParser.Classification)
                    self.state = 1229
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 1228
                        self.match(XplorMRParser.Equ_op)


                    self.state = 1231
                    self.match(XplorMRParser.Simple_name)
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1234
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 16)
                self.state = 1236
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class ObservedContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Observed(self):
            return self.getToken(XplorMRParser.Observed, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_observed

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterObserved" ):
                listener.enterObserved(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitObserved" ):
                listener.exitObserved(self)




    def observed(self):

        localctx = XplorMRParser.ObservedContext(self, self._ctx, self.state)
        self.enterRule(localctx, 106, self.RULE_observed)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1239
            self.match(XplorMRParser.Observed)
            self.state = 1240
            self.selection()
            self.state = 1242
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.L_paren:
                self.state = 1241
                self.selection()


            self.state = 1244
            self.number()
            self.state = 1246
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 1245
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_rcoilContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Rcoil(self):
            return self.getToken(XplorMRParser.Rcoil, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def number(self):
            return self.getTypedRuleContext(XplorMRParser.NumberContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_rcoil

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_rcoil" ):
                listener.enterProton_shift_rcoil(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_rcoil" ):
                listener.exitProton_shift_rcoil(self)




    def proton_shift_rcoil(self):

        localctx = XplorMRParser.Proton_shift_rcoilContext(self, self._ctx, self.state)
        self.enterRule(localctx, 108, self.RULE_proton_shift_rcoil)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1248
            self.match(XplorMRParser.Rcoil)
            self.state = 1249
            self.selection()
            self.state = 1250
            self.number()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_anisotropyContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Anisotropy(self):
            return self.getToken(XplorMRParser.Anisotropy, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def Simple_name(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name)
            else:
                return self.getToken(XplorMRParser.Simple_name, i)

        def Logical(self):
            return self.getToken(XplorMRParser.Logical, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_anisotropy

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_anisotropy" ):
                listener.enterProton_shift_anisotropy(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_anisotropy" ):
                listener.exitProton_shift_anisotropy(self)




    def proton_shift_anisotropy(self):

        localctx = XplorMRParser.Proton_shift_anisotropyContext(self, self._ctx, self.state)
        self.enterRule(localctx, 110, self.RULE_proton_shift_anisotropy)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1252
            self.match(XplorMRParser.Anisotropy)
            self.state = 1253
            self.selection()
            self.state = 1254
            self.selection()
            self.state = 1255
            self.selection()
            self.state = 1256
            self.match(XplorMRParser.Simple_name)
            self.state = 1258
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.Logical:
                self.state = 1257
                self.match(XplorMRParser.Logical)


            self.state = 1260
            self.match(XplorMRParser.Simple_name)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_amidesContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Amides(self):
            return self.getToken(XplorMRParser.Amides, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_amides

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_amides" ):
                listener.enterProton_shift_amides(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_amides" ):
                listener.exitProton_shift_amides(self)




    def proton_shift_amides(self):

        localctx = XplorMRParser.Proton_shift_amidesContext(self, self._ctx, self.state)
        self.enterRule(localctx, 112, self.RULE_proton_shift_amides)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1262
            self.match(XplorMRParser.Amides)
            self.state = 1263
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_carbonsContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Carbon(self):
            return self.getToken(XplorMRParser.Carbon, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_carbons

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_carbons" ):
                listener.enterProton_shift_carbons(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_carbons" ):
                listener.exitProton_shift_carbons(self)




    def proton_shift_carbons(self):

        localctx = XplorMRParser.Proton_shift_carbonsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 114, self.RULE_proton_shift_carbons)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1265
            self.match(XplorMRParser.Carbon)
            self.state = 1266
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_nitrogensContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Nitrogens(self):
            return self.getToken(XplorMRParser.Nitrogens, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_nitrogens

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_nitrogens" ):
                listener.enterProton_shift_nitrogens(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_nitrogens" ):
                listener.exitProton_shift_nitrogens(self)




    def proton_shift_nitrogens(self):

        localctx = XplorMRParser.Proton_shift_nitrogensContext(self, self._ctx, self.state)
        self.enterRule(localctx, 116, self.RULE_proton_shift_nitrogens)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1268
            self.match(XplorMRParser.Nitrogens)
            self.state = 1269
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_oxygensContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Oxygens(self):
            return self.getToken(XplorMRParser.Oxygens, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_oxygens

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_oxygens" ):
                listener.enterProton_shift_oxygens(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_oxygens" ):
                listener.exitProton_shift_oxygens(self)




    def proton_shift_oxygens(self):

        localctx = XplorMRParser.Proton_shift_oxygensContext(self, self._ctx, self.state)
        self.enterRule(localctx, 118, self.RULE_proton_shift_oxygens)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1271
            self.match(XplorMRParser.Oxygens)
            self.state = 1272
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_ring_atomsContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def RingAtoms(self):
            return self.getToken(XplorMRParser.RingAtoms, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_ring_atoms

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_ring_atoms" ):
                listener.enterProton_shift_ring_atoms(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_ring_atoms" ):
                listener.exitProton_shift_ring_atoms(self)




    def proton_shift_ring_atoms(self):

        localctx = XplorMRParser.Proton_shift_ring_atomsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 120, self.RULE_proton_shift_ring_atoms)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1274
            self.match(XplorMRParser.RingAtoms)
            self.state = 1275
            self.match(XplorMRParser.Simple_name)
            self.state = 1276
            self.selection()
            self.state = 1277
            self.selection()
            self.state = 1278
            self.selection()
            self.state = 1279
            self.selection()
            self.state = 1280
            self.selection()
            self.state = 1282
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.L_paren:
                self.state = 1281
                self.selection()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Proton_shift_alphas_and_amidesContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def AlphasAndAmides(self):
            return self.getToken(XplorMRParser.AlphasAndAmides, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_proton_shift_alphas_and_amides

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterProton_shift_alphas_and_amides" ):
                listener.enterProton_shift_alphas_and_amides(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitProton_shift_alphas_and_amides" ):
                listener.exitProton_shift_alphas_and_amides(self)




    def proton_shift_alphas_and_amides(self):

        localctx = XplorMRParser.Proton_shift_alphas_and_amidesContext(self, self._ctx, self.state)
        self.enterRule(localctx, 122, self.RULE_proton_shift_alphas_and_amides)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1284
            self.match(XplorMRParser.AlphasAndAmides)
            self.state = 1285
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Ramachandran_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def rama_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Rama_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Cutoff(self):
            return self.getToken(XplorMRParser.Cutoff, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Gaussian(self):
            return self.getToken(XplorMRParser.Gaussian, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Phase(self):
            return self.getToken(XplorMRParser.Phase, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def All(self):
            return self.getToken(XplorMRParser.All, 0)

        def Quartic(self):
            return self.getToken(XplorMRParser.Quartic, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Scale(self):
            return self.getToken(XplorMRParser.Scale, 0)

        def Shape(self):
            return self.getToken(XplorMRParser.Shape, 0)

        def Gauss_or_Quart(self):
            return self.getToken(XplorMRParser.Gauss_or_Quart, 0)

        def Size(self):
            return self.getToken(XplorMRParser.Size, 0)

        def Dimensions(self):
            return self.getToken(XplorMRParser.Dimensions, 0)

        def Sort(self):
            return self.getToken(XplorMRParser.Sort, 0)

        def Zero(self):
            return self.getToken(XplorMRParser.Zero, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_ramachandran_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterRamachandran_statement" ):
                listener.enterRamachandran_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitRamachandran_statement" ):
                listener.exitRamachandran_statement(self)




    def ramachandran_statement(self):

        localctx = XplorMRParser.Ramachandran_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 124, self.RULE_ramachandran_statement)
        self._la = 0 # Token type
        try:
            self.state = 1404
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1287
                self.rama_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1288
                self.match(XplorMRParser.Classification)
                self.state = 1290
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1289
                    self.match(XplorMRParser.Equ_op)


                self.state = 1292
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Cutoff]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1293
                self.match(XplorMRParser.Cutoff)
                self.state = 1294
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1295
                self.match(XplorMRParser.ForceConstant)
                self.state = 1297
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1296
                    self.match(XplorMRParser.Equ_op)


                self.state = 1299
                self.number_s()
                pass
            elif token in [XplorMRParser.Gaussian]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1300
                self.match(XplorMRParser.Gaussian)
                self.state = 1301
                self.number_s()
                self.state = 1302
                self.number_s()
                self.state = 1303
                self.number_s()
                self.state = 1308
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,136,self._ctx)
                if la_ == 1:
                    self.state = 1304
                    self.number_s()
                    self.state = 1305
                    self.number_s()
                    self.state = 1306
                    self.number_s()


                self.state = 1314
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,137,self._ctx)
                if la_ == 1:
                    self.state = 1310
                    self.number_s()
                    self.state = 1311
                    self.number_s()
                    self.state = 1312
                    self.number_s()


                self.state = 1320
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                    self.state = 1316
                    self.number_s()
                    self.state = 1317
                    self.number_s()
                    self.state = 1318
                    self.number_s()


                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1322
                self.match(XplorMRParser.Nrestraints)
                self.state = 1324
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1323
                    self.match(XplorMRParser.Equ_op)


                self.state = 1326
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Phase]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1327
                self.match(XplorMRParser.Phase)
                self.state = 1328
                self.number_s()
                self.state = 1329
                self.number_s()
                self.state = 1330
                self.number_s()
                self.state = 1335
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,140,self._ctx)
                if la_ == 1:
                    self.state = 1331
                    self.number_s()
                    self.state = 1332
                    self.number_s()
                    self.state = 1333
                    self.number_s()


                self.state = 1341
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,141,self._ctx)
                if la_ == 1:
                    self.state = 1337
                    self.number_s()
                    self.state = 1338
                    self.number_s()
                    self.state = 1339
                    self.number_s()


                self.state = 1347
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                    self.state = 1343
                    self.number_s()
                    self.state = 1344
                    self.number_s()
                    self.state = 1345
                    self.number_s()


                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1349
                self.match(XplorMRParser.Print)
                self.state = 1350
                self.match(XplorMRParser.Threshold)
                self.state = 1351
                self.number_s()
                self.state = 1358
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.All]:
                    self.state = 1352
                    self.match(XplorMRParser.All)
                    pass
                elif token in [XplorMRParser.Classification]:
                    self.state = 1353
                    self.match(XplorMRParser.Classification)
                    self.state = 1355
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 1354
                        self.match(XplorMRParser.Equ_op)


                    self.state = 1357
                    self.match(XplorMRParser.Simple_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass
            elif token in [XplorMRParser.Quartic]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1360
                self.match(XplorMRParser.Quartic)
                self.state = 1361
                self.number_s()
                self.state = 1362
                self.number_s()
                self.state = 1363
                self.number_s()
                self.state = 1368
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,145,self._ctx)
                if la_ == 1:
                    self.state = 1364
                    self.number_s()
                    self.state = 1365
                    self.number_s()
                    self.state = 1366
                    self.number_s()


                self.state = 1374
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,146,self._ctx)
                if la_ == 1:
                    self.state = 1370
                    self.number_s()
                    self.state = 1371
                    self.number_s()
                    self.state = 1372
                    self.number_s()


                self.state = 1380
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                    self.state = 1376
                    self.number_s()
                    self.state = 1377
                    self.number_s()
                    self.state = 1378
                    self.number_s()


                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1382
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Scale]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1383
                self.match(XplorMRParser.Scale)
                self.state = 1385
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1384
                    self.match(XplorMRParser.Equ_op)


                self.state = 1387
                self.number_s()
                pass
            elif token in [XplorMRParser.Shape]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1388
                self.match(XplorMRParser.Shape)
                self.state = 1389
                self.match(XplorMRParser.Gauss_or_Quart)
                pass
            elif token in [XplorMRParser.Size]:
                self.enterOuterAlt(localctx, 13)
                self.state = 1390
                self.match(XplorMRParser.Size)
                self.state = 1391
                self.match(XplorMRParser.Dimensions)
                self.state = 1392
                self.number_s()
                self.state = 1394
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,149,self._ctx)
                if la_ == 1:
                    self.state = 1393
                    self.number_s()


                self.state = 1397
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input,150,self._ctx)
                if la_ == 1:
                    self.state = 1396
                    self.number_s()


                self.state = 1400
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                    self.state = 1399
                    self.number_s()


                pass
            elif token in [XplorMRParser.Sort]:
                self.enterOuterAlt(localctx, 14)
                self.state = 1402
                self.match(XplorMRParser.Sort)
                pass
            elif token in [XplorMRParser.Zero]:
                self.enterOuterAlt(localctx, 15)
                self.state = 1403
                self.match(XplorMRParser.Zero)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Rama_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_rama_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterRama_assign" ):
                listener.enterRama_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitRama_assign" ):
                listener.exitRama_assign(self)




    def rama_assign(self):

        localctx = XplorMRParser.Rama_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 126, self.RULE_rama_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1406
            self.match(XplorMRParser.Assign)
            self.state = 1407
            self.selection()
            self.state = 1408
            self.selection()
            self.state = 1409
            self.selection()
            self.state = 1410
            self.selection()
            self.state = 1416
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,153,self._ctx)
            if la_ == 1:
                self.state = 1411
                self.selection()
                self.state = 1412
                self.selection()
                self.state = 1413
                self.selection()
                self.state = 1414
                self.selection()


            self.state = 1423
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,154,self._ctx)
            if la_ == 1:
                self.state = 1418
                self.selection()
                self.state = 1419
                self.selection()
                self.state = 1420
                self.selection()
                self.state = 1421
                self.selection()


            self.state = 1430
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.L_paren:
                self.state = 1425
                self.selection()
                self.state = 1426
                self.selection()
                self.state = 1427
                self.selection()
                self.state = 1428
                self.selection()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Collapse_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def coll_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Coll_assignContext,0)


        def coll_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Coll_assign_loopContext,0)


        def Scale(self):
            return self.getToken(XplorMRParser.Scale, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_collapse_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCollapse_statement" ):
                listener.enterCollapse_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCollapse_statement" ):
                listener.exitCollapse_statement(self)




    def collapse_statement(self):

        localctx = XplorMRParser.Collapse_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 128, self.RULE_collapse_statement)
        self._la = 0 # Token type
        try:
            self.state = 1441
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1432
                self.coll_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1433
                self.coll_assign_loop()
                pass
            elif token in [XplorMRParser.Scale]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1434
                self.match(XplorMRParser.Scale)
                self.state = 1436
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1435
                    self.match(XplorMRParser.Equ_op)


                self.state = 1438
                self.number_s()
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1439
                self.match(XplorMRParser.Print)
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1440
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Coll_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_coll_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterColl_assign" ):
                listener.enterColl_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitColl_assign" ):
                listener.exitColl_assign(self)




    def coll_assign(self):

        localctx = XplorMRParser.Coll_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 130, self.RULE_coll_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1443
            self.match(XplorMRParser.Assign)
            self.state = 1444
            self.selection()
            self.state = 1445
            self.number()
            self.state = 1446
            self.number()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Diffusion_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def dani_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Dani_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Type(self):
            return self.getToken(XplorMRParser.Type, 0)

        def Rdc_or_Diff_anis_types(self):
            return self.getToken(XplorMRParser.Rdc_or_Diff_anis_types, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_diffusion_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDiffusion_statement" ):
                listener.enterDiffusion_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDiffusion_statement" ):
                listener.exitDiffusion_statement(self)




    def diffusion_statement(self):

        localctx = XplorMRParser.Diffusion_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 132, self.RULE_diffusion_statement)
        self._la = 0 # Token type
        try:
            self.state = 1479
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1448
                self.dani_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1449
                self.match(XplorMRParser.Classification)
                self.state = 1451
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1450
                    self.match(XplorMRParser.Equ_op)


                self.state = 1453
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1454
                self.match(XplorMRParser.Coefficients)
                self.state = 1455
                self.number_s()
                self.state = 1456
                self.number_s()
                self.state = 1457
                self.number_s()
                self.state = 1458
                self.number_s()
                self.state = 1459
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1461
                self.match(XplorMRParser.ForceConstant)
                self.state = 1463
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1462
                    self.match(XplorMRParser.Equ_op)


                self.state = 1465
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1466
                self.match(XplorMRParser.Nrestraints)
                self.state = 1468
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1467
                    self.match(XplorMRParser.Equ_op)


                self.state = 1470
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1471
                self.match(XplorMRParser.Potential)
                self.state = 1472
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1473
                self.match(XplorMRParser.Print)
                self.state = 1474
                self.match(XplorMRParser.Threshold)
                self.state = 1475
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1476
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Type]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1477
                self.match(XplorMRParser.Type)
                self.state = 1478
                self.match(XplorMRParser.Rdc_or_Diff_anis_types)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Dani_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_dani_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDani_assign" ):
                listener.enterDani_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDani_assign" ):
                listener.exitDani_assign(self)




    def dani_assign(self):

        localctx = XplorMRParser.Dani_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 134, self.RULE_dani_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1481
            self.match(XplorMRParser.Assign)
            self.state = 1482
            self.selection()
            self.state = 1483
            self.selection()
            self.state = 1484
            self.selection()
            self.state = 1485
            self.selection()
            self.state = 1486
            self.selection()
            self.state = 1487
            self.selection()
            self.state = 1488
            self.number()
            self.state = 1490
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 1489
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Orientation_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def orie_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Orie_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Cutoff(self):
            return self.getToken(XplorMRParser.Cutoff, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def Height(self):
            return self.getToken(XplorMRParser.Height, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Gaussian(self):
            return self.getToken(XplorMRParser.Gaussian, 0)

        def MaxGaussians(self):
            return self.getToken(XplorMRParser.MaxGaussians, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def NewGaussian(self):
            return self.getToken(XplorMRParser.NewGaussian, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def All(self):
            return self.getToken(XplorMRParser.All, 0)

        def Quartic(self):
            return self.getToken(XplorMRParser.Quartic, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Residue(self):
            return self.getToken(XplorMRParser.Residue, 0)

        def Size(self):
            return self.getToken(XplorMRParser.Size, 0)

        def Zero(self):
            return self.getToken(XplorMRParser.Zero, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_orientation_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterOrientation_statement" ):
                listener.enterOrientation_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitOrientation_statement" ):
                listener.exitOrientation_statement(self)




    def orientation_statement(self):

        localctx = XplorMRParser.Orientation_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 136, self.RULE_orientation_statement)
        self._la = 0 # Token type
        try:
            self.state = 1561
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1492
                self.orie_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1493
                self.match(XplorMRParser.Classification)
                self.state = 1495
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1494
                    self.match(XplorMRParser.Equ_op)


                self.state = 1497
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Cutoff]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1498
                self.match(XplorMRParser.Cutoff)
                self.state = 1499
                self.number_s()
                pass
            elif token in [XplorMRParser.Height]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1500
                self.match(XplorMRParser.Height)
                self.state = 1501
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1502
                self.match(XplorMRParser.ForceConstant)
                self.state = 1504
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1503
                    self.match(XplorMRParser.Equ_op)


                self.state = 1506
                self.number_s()
                pass
            elif token in [XplorMRParser.Gaussian]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1507
                self.match(XplorMRParser.Gaussian)
                self.state = 1508
                self.number_s()
                self.state = 1509
                self.number_s()
                self.state = 1510
                self.number_s()
                self.state = 1511
                self.number_s()
                self.state = 1512
                self.number_s()
                self.state = 1513
                self.number_s()
                self.state = 1514
                self.number_s()
                pass
            elif token in [XplorMRParser.MaxGaussians]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1516
                self.match(XplorMRParser.MaxGaussians)
                self.state = 1517
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.NewGaussian]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1518
                self.match(XplorMRParser.NewGaussian)
                self.state = 1519
                self.number_s()
                self.state = 1520
                self.number_s()
                self.state = 1521
                self.number_s()
                self.state = 1522
                self.number_s()
                self.state = 1523
                self.number_s()
                self.state = 1524
                self.number_s()
                self.state = 1525
                self.number_s()
                self.state = 1526
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1528
                self.match(XplorMRParser.Nrestraints)
                self.state = 1530
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1529
                    self.match(XplorMRParser.Equ_op)


                self.state = 1532
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1533
                self.match(XplorMRParser.Print)
                self.state = 1534
                self.match(XplorMRParser.Threshold)
                self.state = 1535
                self.number_s()
                self.state = 1542
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.All]:
                    self.state = 1536
                    self.match(XplorMRParser.All)
                    pass
                elif token in [XplorMRParser.Classification]:
                    self.state = 1537
                    self.match(XplorMRParser.Classification)
                    self.state = 1539
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 1538
                        self.match(XplorMRParser.Equ_op)


                    self.state = 1541
                    self.match(XplorMRParser.Simple_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass
            elif token in [XplorMRParser.Quartic]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1544
                self.match(XplorMRParser.Quartic)
                self.state = 1545
                self.number_s()
                self.state = 1546
                self.number_s()
                self.state = 1547
                self.number_s()
                self.state = 1548
                self.number_s()
                self.state = 1549
                self.number_s()
                self.state = 1550
                self.number_s()
                self.state = 1551
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1553
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Residue]:
                self.enterOuterAlt(localctx, 13)
                self.state = 1554
                self.match(XplorMRParser.Residue)
                self.state = 1555
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Size]:
                self.enterOuterAlt(localctx, 14)
                self.state = 1556
                self.match(XplorMRParser.Size)
                self.state = 1557
                self.number_s()
                self.state = 1558
                self.number_s()
                pass
            elif token in [XplorMRParser.Zero]:
                self.enterOuterAlt(localctx, 15)
                self.state = 1560
                self.match(XplorMRParser.Zero)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Orie_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_orie_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterOrie_assign" ):
                listener.enterOrie_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitOrie_assign" ):
                listener.exitOrie_assign(self)




    def orie_assign(self):

        localctx = XplorMRParser.Orie_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 138, self.RULE_orie_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1563
            self.match(XplorMRParser.Assign)
            self.state = 1564
            self.selection()
            self.state = 1565
            self.selection()
            self.state = 1566
            self.selection()
            self.state = 1567
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Csa_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def csa_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Csa_assignContext,0)


        def csa_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Csa_assign_loopContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Scale(self):
            return self.getToken(XplorMRParser.Scale, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def Type(self):
            return self.getToken(XplorMRParser.Type, 0)

        def Csa_types(self):
            return self.getToken(XplorMRParser.Csa_types, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def Sigma(self):
            return self.getToken(XplorMRParser.Sigma, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_csa_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCsa_statement" ):
                listener.enterCsa_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCsa_statement" ):
                listener.exitCsa_statement(self)




    def csa_statement(self):

        localctx = XplorMRParser.Csa_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 140, self.RULE_csa_statement)
        self._la = 0 # Token type
        try:
            self.state = 1609
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1569
                self.csa_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1570
                self.csa_assign_loop()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1571
                self.match(XplorMRParser.Classification)
                self.state = 1573
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1572
                    self.match(XplorMRParser.Equ_op)


                self.state = 1575
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Scale]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1576
                self.match(XplorMRParser.Scale)
                self.state = 1578
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1577
                    self.match(XplorMRParser.Equ_op)


                self.state = 1580
                self.number_s()
                pass
            elif token in [XplorMRParser.Type]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1581
                self.match(XplorMRParser.Type)
                self.state = 1582
                self.match(XplorMRParser.Csa_types)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1583
                self.match(XplorMRParser.Coefficients)
                self.state = 1584
                self.number_s()
                self.state = 1585
                self.number_s()
                self.state = 1586
                self.number_s()
                pass
            elif token in [XplorMRParser.Sigma]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1588
                self.match(XplorMRParser.Sigma)
                self.state = 1589
                self.number_s()
                self.state = 1590
                self.number_s()
                self.state = 1591
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1593
                self.match(XplorMRParser.ForceConstant)
                self.state = 1595
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1594
                    self.match(XplorMRParser.Equ_op)


                self.state = 1597
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1598
                self.match(XplorMRParser.Nrestraints)
                self.state = 1600
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1599
                    self.match(XplorMRParser.Equ_op)


                self.state = 1602
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1603
                self.match(XplorMRParser.Potential)
                self.state = 1604
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1605
                self.match(XplorMRParser.Print)
                self.state = 1606
                self.match(XplorMRParser.Threshold)
                self.state = 1607
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1608
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Csa_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_csa_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCsa_assign" ):
                listener.enterCsa_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCsa_assign" ):
                listener.exitCsa_assign(self)




    def csa_assign(self):

        localctx = XplorMRParser.Csa_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 142, self.RULE_csa_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1611
            self.match(XplorMRParser.Assign)
            self.state = 1612
            self.selection()
            self.state = 1613
            self.selection()
            self.state = 1614
            self.selection()
            self.state = 1615
            self.selection()
            self.state = 1616
            self.selection()
            self.state = 1617
            self.selection()
            self.state = 1618
            self.selection()
            self.state = 1619
            self.number()
            self.state = 1621
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,174,self._ctx)
            if la_ == 1:
                self.state = 1620
                self.number()


            self.state = 1624
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 1623
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pcsa_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def csa_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Csa_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Scale(self):
            return self.getToken(XplorMRParser.Scale, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def Sigma(self):
            return self.getToken(XplorMRParser.Sigma, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_pcsa_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPcsa_statement" ):
                listener.enterPcsa_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPcsa_statement" ):
                listener.exitPcsa_statement(self)




    def pcsa_statement(self):

        localctx = XplorMRParser.Pcsa_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 144, self.RULE_pcsa_statement)
        self._la = 0 # Token type
        try:
            self.state = 1664
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1626
                self.csa_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1627
                self.match(XplorMRParser.Classification)
                self.state = 1629
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1628
                    self.match(XplorMRParser.Equ_op)


                self.state = 1631
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Scale]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1632
                self.match(XplorMRParser.Scale)
                self.state = 1634
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1633
                    self.match(XplorMRParser.Equ_op)


                self.state = 1636
                self.number_s()
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1637
                self.match(XplorMRParser.Coefficients)
                self.state = 1638
                self.number_s()
                self.state = 1639
                self.number_s()
                self.state = 1640
                self.number_s()
                pass
            elif token in [XplorMRParser.Sigma]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1642
                self.match(XplorMRParser.Sigma)
                self.state = 1643
                self.number_s()
                self.state = 1644
                self.number_s()
                self.state = 1645
                self.number_s()
                self.state = 1646
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1648
                self.match(XplorMRParser.ForceConstant)
                self.state = 1650
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1649
                    self.match(XplorMRParser.Equ_op)


                self.state = 1652
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1653
                self.match(XplorMRParser.Nrestraints)
                self.state = 1655
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1654
                    self.match(XplorMRParser.Equ_op)


                self.state = 1657
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1658
                self.match(XplorMRParser.Potential)
                self.state = 1659
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1660
                self.match(XplorMRParser.Print)
                self.state = 1661
                self.match(XplorMRParser.Threshold)
                self.state = 1662
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1663
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class One_bond_coupling_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def one_bond_assign(self):
            return self.getTypedRuleContext(XplorMRParser.One_bond_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_one_bond_coupling_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterOne_bond_coupling_statement" ):
                listener.enterOne_bond_coupling_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitOne_bond_coupling_statement" ):
                listener.exitOne_bond_coupling_statement(self)




    def one_bond_coupling_statement(self):

        localctx = XplorMRParser.One_bond_coupling_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 146, self.RULE_one_bond_coupling_statement)
        self._la = 0 # Token type
        try:
            self.state = 1697
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1666
                self.one_bond_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1667
                self.match(XplorMRParser.Classification)
                self.state = 1669
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1668
                    self.match(XplorMRParser.Equ_op)


                self.state = 1671
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1672
                self.match(XplorMRParser.Coefficients)
                self.state = 1673
                self.number_s()
                self.state = 1674
                self.number_s()
                self.state = 1675
                self.number_s()
                self.state = 1676
                self.number_s()
                self.state = 1677
                self.number_s()
                self.state = 1678
                self.number_s()
                self.state = 1679
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1681
                self.match(XplorMRParser.ForceConstant)
                self.state = 1683
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1682
                    self.match(XplorMRParser.Equ_op)


                self.state = 1685
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1686
                self.match(XplorMRParser.Nrestraints)
                self.state = 1688
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1687
                    self.match(XplorMRParser.Equ_op)


                self.state = 1690
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1691
                self.match(XplorMRParser.Potential)
                self.state = 1692
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1693
                self.match(XplorMRParser.Print)
                self.state = 1694
                self.match(XplorMRParser.Threshold)
                self.state = 1695
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1696
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class One_bond_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_one_bond_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterOne_bond_assign" ):
                listener.enterOne_bond_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitOne_bond_assign" ):
                listener.exitOne_bond_assign(self)




    def one_bond_assign(self):

        localctx = XplorMRParser.One_bond_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 148, self.RULE_one_bond_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1699
            self.match(XplorMRParser.Assign)
            self.state = 1700
            self.selection()
            self.state = 1701
            self.selection()
            self.state = 1702
            self.selection()
            self.state = 1703
            self.selection()
            self.state = 1704
            self.selection()
            self.state = 1705
            self.selection()
            self.state = 1706
            self.selection()
            self.state = 1707
            self.selection()
            self.state = 1708
            self.number()
            self.state = 1709
            self.number()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Angle_db_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def angle_db_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Angle_db_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def DerivFlag(self):
            return self.getToken(XplorMRParser.DerivFlag, 0)

        def Expectation(self):
            return self.getToken(XplorMRParser.Expectation, 0)

        def Integer(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer)
            else:
                return self.getToken(XplorMRParser.Integer, i)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def Error(self):
            return self.getToken(XplorMRParser.Error, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def All(self):
            return self.getToken(XplorMRParser.All, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Size(self):
            return self.getToken(XplorMRParser.Size, 0)

        def Angle_or_Dihedral(self):
            return self.getToken(XplorMRParser.Angle_or_Dihedral, 0)

        def Zero(self):
            return self.getToken(XplorMRParser.Zero, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_angle_db_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterAngle_db_statement" ):
                listener.enterAngle_db_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitAngle_db_statement" ):
                listener.exitAngle_db_statement(self)




    def angle_db_statement(self):

        localctx = XplorMRParser.Angle_db_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 150, self.RULE_angle_db_statement)
        self._la = 0 # Token type
        try:
            self.state = 1754
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1711
                self.angle_db_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1712
                self.match(XplorMRParser.Classification)
                self.state = 1714
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1713
                    self.match(XplorMRParser.Equ_op)


                self.state = 1716
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.DerivFlag]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1717
                self.match(XplorMRParser.DerivFlag)
                self.state = 1718
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Expectation]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1719
                self.match(XplorMRParser.Expectation)
                self.state = 1720
                self.match(XplorMRParser.Integer)
                self.state = 1721
                self.match(XplorMRParser.Integer)
                self.state = 1722
                self.number_s()
                pass
            elif token in [XplorMRParser.Error]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1723
                self.match(XplorMRParser.Error)
                self.state = 1724
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1725
                self.match(XplorMRParser.ForceConstant)
                self.state = 1727
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1726
                    self.match(XplorMRParser.Equ_op)


                self.state = 1729
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1730
                self.match(XplorMRParser.Nrestraints)
                self.state = 1732
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1731
                    self.match(XplorMRParser.Equ_op)


                self.state = 1734
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1735
                self.match(XplorMRParser.Potential)
                self.state = 1736
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1737
                self.match(XplorMRParser.Print)
                self.state = 1738
                self.match(XplorMRParser.Threshold)
                self.state = 1739
                self.number_s()
                self.state = 1746
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.All]:
                    self.state = 1740
                    self.match(XplorMRParser.All)
                    pass
                elif token in [XplorMRParser.Classification]:
                    self.state = 1741
                    self.match(XplorMRParser.Classification)
                    self.state = 1743
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 1742
                        self.match(XplorMRParser.Equ_op)


                    self.state = 1745
                    self.match(XplorMRParser.Simple_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1748
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Size]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1749
                self.match(XplorMRParser.Size)
                self.state = 1750
                self.match(XplorMRParser.Angle_or_Dihedral)
                self.state = 1751
                self.match(XplorMRParser.Integer)
                self.state = 1752
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Zero]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1753
                self.match(XplorMRParser.Zero)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Angle_db_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_angle_db_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterAngle_db_assign" ):
                listener.enterAngle_db_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitAngle_db_assign" ):
                listener.exitAngle_db_assign(self)




    def angle_db_assign(self):

        localctx = XplorMRParser.Angle_db_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 152, self.RULE_angle_db_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1756
            self.match(XplorMRParser.Assign)
            self.state = 1757
            self.selection()
            self.state = 1758
            self.selection()
            self.state = 1759
            self.selection()
            self.state = 1760
            self.selection()
            self.state = 1761
            self.selection()
            self.state = 1762
            self.selection()
            self.state = 1763
            self.selection()
            self.state = 1764
            self.selection()
            self.state = 1765
            self.selection()
            self.state = 1766
            self.selection()
            self.state = 1767
            self.selection()
            self.state = 1769
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.L_paren:
                self.state = 1768
                self.selection()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pre_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def pre_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Pre_assignContext,0)


        def pre_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Pre_assign_loopContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Potential(self):
            return self.getToken(XplorMRParser.Potential, 0)

        def Simple_name_P(self):
            return self.getToken(XplorMRParser.Simple_name_P, 0)

        def Potential_types(self):
            return self.getToken(XplorMRParser.Potential_types, 0)

        def Equ_op_P(self):
            return self.getToken(XplorMRParser.Equ_op_P, 0)

        def Kconst(self):
            return self.getToken(XplorMRParser.Kconst, 0)

        def Omega(self):
            return self.getToken(XplorMRParser.Omega, 0)

        def Tauc(self):
            return self.getToken(XplorMRParser.Tauc, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def All(self):
            return self.getToken(XplorMRParser.All, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Debug(self):
            return self.getToken(XplorMRParser.Debug, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_pre_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPre_statement" ):
                listener.enterPre_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPre_statement" ):
                listener.exitPre_statement(self)




    def pre_statement(self):

        localctx = XplorMRParser.Pre_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 154, self.RULE_pre_statement)
        self._la = 0 # Token type
        try:
            self.state = 1828
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1771
                self.pre_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1772
                self.pre_assign_loop()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1773
                self.match(XplorMRParser.Classification)
                self.state = 1775
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1774
                    self.match(XplorMRParser.Equ_op)


                self.state = 1777
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1778
                self.match(XplorMRParser.ForceConstant)
                self.state = 1780
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1779
                    self.match(XplorMRParser.Equ_op)


                self.state = 1782
                self.match(XplorMRParser.Simple_name)
                self.state = 1783
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1784
                self.match(XplorMRParser.Nrestraints)
                self.state = 1786
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1785
                    self.match(XplorMRParser.Equ_op)


                self.state = 1788
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Potential]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1789
                self.match(XplorMRParser.Potential)
                self.state = 1791
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op_P:
                    self.state = 1790
                    self.match(XplorMRParser.Equ_op_P)


                self.state = 1793
                self.match(XplorMRParser.Simple_name_P)
                self.state = 1794
                self.match(XplorMRParser.Potential_types)
                pass
            elif token in [XplorMRParser.Kconst]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1795
                self.match(XplorMRParser.Kconst)
                self.state = 1797
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1796
                    self.match(XplorMRParser.Equ_op)


                self.state = 1799
                self.match(XplorMRParser.Simple_name)
                self.state = 1800
                self.number_s()
                pass
            elif token in [XplorMRParser.Omega]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1801
                self.match(XplorMRParser.Omega)
                self.state = 1803
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1802
                    self.match(XplorMRParser.Equ_op)


                self.state = 1805
                self.match(XplorMRParser.Simple_name)
                self.state = 1806
                self.number_s()
                pass
            elif token in [XplorMRParser.Tauc]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1807
                self.match(XplorMRParser.Tauc)
                self.state = 1809
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1808
                    self.match(XplorMRParser.Equ_op)


                self.state = 1811
                self.match(XplorMRParser.Simple_name)
                self.state = 1812
                self.number_s()
                self.state = 1813
                self.number_s()
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1815
                self.match(XplorMRParser.Print)
                self.state = 1816
                self.match(XplorMRParser.Threshold)
                self.state = 1817
                self.number_s()
                self.state = 1824
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.All]:
                    self.state = 1818
                    self.match(XplorMRParser.All)
                    pass
                elif token in [XplorMRParser.Classification]:
                    self.state = 1819
                    self.match(XplorMRParser.Classification)
                    self.state = 1821
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 1820
                        self.match(XplorMRParser.Equ_op)


                    self.state = 1823
                    self.match(XplorMRParser.Simple_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1826
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Debug]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1827
                self.match(XplorMRParser.Debug)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pre_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_pre_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPre_assign" ):
                listener.enterPre_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPre_assign" ):
                listener.exitPre_assign(self)




    def pre_assign(self):

        localctx = XplorMRParser.Pre_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 156, self.RULE_pre_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1830
            self.match(XplorMRParser.Assign)
            self.state = 1831
            self.selection()
            self.state = 1832
            self.selection()
            self.state = 1833
            self.number()
            self.state = 1835
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 1834
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pcs_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def pcs_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Pcs_assignContext,0)


        def pcs_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Pcs_assign_loopContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Tolerance(self):
            return self.getToken(XplorMRParser.Tolerance, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def All(self):
            return self.getToken(XplorMRParser.All, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Save(self):
            return self.getToken(XplorMRParser.Save, 0)

        def Fmed(self):
            return self.getToken(XplorMRParser.Fmed, 0)

        def ErrOn(self):
            return self.getToken(XplorMRParser.ErrOn, 0)

        def ErrOff(self):
            return self.getToken(XplorMRParser.ErrOff, 0)

        def Fon(self):
            return self.getToken(XplorMRParser.Fon, 0)

        def Foff(self):
            return self.getToken(XplorMRParser.Foff, 0)

        def Son(self):
            return self.getToken(XplorMRParser.Son, 0)

        def Soff(self):
            return self.getToken(XplorMRParser.Soff, 0)

        def Frun(self):
            return self.getToken(XplorMRParser.Frun, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_pcs_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPcs_statement" ):
                listener.enterPcs_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPcs_statement" ):
                listener.exitPcs_statement(self)




    def pcs_statement(self):

        localctx = XplorMRParser.Pcs_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 158, self.RULE_pcs_statement)
        self._la = 0 # Token type
        try:
            self.state = 1886
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1837
                self.pcs_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1838
                self.pcs_assign_loop()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1839
                self.match(XplorMRParser.Classification)
                self.state = 1841
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1840
                    self.match(XplorMRParser.Equ_op)


                self.state = 1843
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Tolerance]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1844
                self.match(XplorMRParser.Tolerance)
                self.state = 1845
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1846
                self.match(XplorMRParser.Coefficients)
                self.state = 1847
                self.number_s()
                self.state = 1848
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1850
                self.match(XplorMRParser.ForceConstant)
                self.state = 1852
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1851
                    self.match(XplorMRParser.Equ_op)


                self.state = 1854
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1855
                self.match(XplorMRParser.Nrestraints)
                self.state = 1857
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1856
                    self.match(XplorMRParser.Equ_op)


                self.state = 1859
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1860
                self.match(XplorMRParser.Print)
                self.state = 1861
                self.match(XplorMRParser.Threshold)
                self.state = 1862
                self.number_s()
                self.state = 1869
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.All]:
                    self.state = 1863
                    self.match(XplorMRParser.All)
                    pass
                elif token in [XplorMRParser.Classification]:
                    self.state = 1864
                    self.match(XplorMRParser.Classification)
                    self.state = 1866
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 1865
                        self.match(XplorMRParser.Equ_op)


                    self.state = 1868
                    self.match(XplorMRParser.Simple_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1871
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Save]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1872
                self.match(XplorMRParser.Save)
                self.state = 1873
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Fmed]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1874
                self.match(XplorMRParser.Fmed)
                self.state = 1875
                self.number_s()
                self.state = 1876
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.ErrOn]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1878
                self.match(XplorMRParser.ErrOn)
                pass
            elif token in [XplorMRParser.ErrOff]:
                self.enterOuterAlt(localctx, 13)
                self.state = 1879
                self.match(XplorMRParser.ErrOff)
                pass
            elif token in [XplorMRParser.Fon]:
                self.enterOuterAlt(localctx, 14)
                self.state = 1880
                self.match(XplorMRParser.Fon)
                pass
            elif token in [XplorMRParser.Foff]:
                self.enterOuterAlt(localctx, 15)
                self.state = 1881
                self.match(XplorMRParser.Foff)
                pass
            elif token in [XplorMRParser.Son]:
                self.enterOuterAlt(localctx, 16)
                self.state = 1882
                self.match(XplorMRParser.Son)
                pass
            elif token in [XplorMRParser.Soff]:
                self.enterOuterAlt(localctx, 17)
                self.state = 1883
                self.match(XplorMRParser.Soff)
                pass
            elif token in [XplorMRParser.Frun]:
                self.enterOuterAlt(localctx, 18)
                self.state = 1884
                self.match(XplorMRParser.Frun)
                self.state = 1885
                self.match(XplorMRParser.Integer)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pcs_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_pcs_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPcs_assign" ):
                listener.enterPcs_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPcs_assign" ):
                listener.exitPcs_assign(self)




    def pcs_assign(self):

        localctx = XplorMRParser.Pcs_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 160, self.RULE_pcs_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1888
            self.match(XplorMRParser.Assign)
            self.state = 1889
            self.selection()
            self.state = 1890
            self.selection()
            self.state = 1891
            self.selection()
            self.state = 1892
            self.selection()
            self.state = 1893
            self.selection()
            self.state = 1894
            self.number()
            self.state = 1896
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 1895
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Prdc_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def prdc_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Prdc_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Tolerance(self):
            return self.getToken(XplorMRParser.Tolerance, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def number_s(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_sContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_sContext,i)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def ErrOn(self):
            return self.getToken(XplorMRParser.ErrOn, 0)

        def ErrOff(self):
            return self.getToken(XplorMRParser.ErrOff, 0)

        def Fmed(self):
            return self.getToken(XplorMRParser.Fmed, 0)

        def Fon(self):
            return self.getToken(XplorMRParser.Fon, 0)

        def Foff(self):
            return self.getToken(XplorMRParser.Foff, 0)

        def Frun(self):
            return self.getToken(XplorMRParser.Frun, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Save(self):
            return self.getToken(XplorMRParser.Save, 0)

        def Son(self):
            return self.getToken(XplorMRParser.Son, 0)

        def Soff(self):
            return self.getToken(XplorMRParser.Soff, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_prdc_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPrdc_statement" ):
                listener.enterPrdc_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPrdc_statement" ):
                listener.exitPrdc_statement(self)




    def prdc_statement(self):

        localctx = XplorMRParser.Prdc_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 162, self.RULE_prdc_statement)
        self._la = 0 # Token type
        try:
            self.state = 1933
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1898
                self.prdc_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1899
                self.match(XplorMRParser.Classification)
                self.state = 1901
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1900
                    self.match(XplorMRParser.Equ_op)


                self.state = 1903
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Tolerance]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1904
                self.match(XplorMRParser.Tolerance)
                self.state = 1905
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1906
                self.match(XplorMRParser.Coefficients)
                self.state = 1907
                self.number_s()
                self.state = 1908
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1910
                self.match(XplorMRParser.ForceConstant)
                self.state = 1912
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1911
                    self.match(XplorMRParser.Equ_op)


                self.state = 1914
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1915
                self.match(XplorMRParser.Nrestraints)
                self.state = 1917
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1916
                    self.match(XplorMRParser.Equ_op)


                self.state = 1919
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.ErrOn]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1920
                self.match(XplorMRParser.ErrOn)
                pass
            elif token in [XplorMRParser.ErrOff]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1921
                self.match(XplorMRParser.ErrOff)
                pass
            elif token in [XplorMRParser.Fmed]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1922
                self.match(XplorMRParser.Fmed)
                pass
            elif token in [XplorMRParser.Fon]:
                self.enterOuterAlt(localctx, 10)
                self.state = 1923
                self.match(XplorMRParser.Fon)
                pass
            elif token in [XplorMRParser.Foff]:
                self.enterOuterAlt(localctx, 11)
                self.state = 1924
                self.match(XplorMRParser.Foff)
                pass
            elif token in [XplorMRParser.Frun]:
                self.enterOuterAlt(localctx, 12)
                self.state = 1925
                self.match(XplorMRParser.Frun)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 13)
                self.state = 1926
                self.match(XplorMRParser.Print)
                self.state = 1927
                self.match(XplorMRParser.Threshold)
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 14)
                self.state = 1928
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Save]:
                self.enterOuterAlt(localctx, 15)
                self.state = 1929
                self.match(XplorMRParser.Save)
                self.state = 1930
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Son]:
                self.enterOuterAlt(localctx, 16)
                self.state = 1931
                self.match(XplorMRParser.Son)
                pass
            elif token in [XplorMRParser.Soff]:
                self.enterOuterAlt(localctx, 17)
                self.state = 1932
                self.match(XplorMRParser.Soff)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Prdc_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_prdc_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPrdc_assign" ):
                listener.enterPrdc_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPrdc_assign" ):
                listener.exitPrdc_assign(self)




    def prdc_assign(self):

        localctx = XplorMRParser.Prdc_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 164, self.RULE_prdc_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1935
            self.match(XplorMRParser.Assign)
            self.state = 1936
            self.selection()
            self.state = 1937
            self.selection()
            self.state = 1938
            self.selection()
            self.state = 1939
            self.selection()
            self.state = 1940
            self.selection()
            self.state = 1941
            self.selection()
            self.state = 1942
            self.number()
            self.state = 1944
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 1943
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Porientation_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def porientation_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Porientation_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_porientation_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPorientation_statement" ):
                listener.enterPorientation_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPorientation_statement" ):
                listener.exitPorientation_statement(self)




    def porientation_statement(self):

        localctx = XplorMRParser.Porientation_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 166, self.RULE_porientation_statement)
        self._la = 0 # Token type
        try:
            self.state = 1966
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1946
                self.porientation_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1947
                self.match(XplorMRParser.Classification)
                self.state = 1949
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1948
                    self.match(XplorMRParser.Equ_op)


                self.state = 1951
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1952
                self.match(XplorMRParser.ForceConstant)
                self.state = 1954
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1953
                    self.match(XplorMRParser.Equ_op)


                self.state = 1956
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1957
                self.match(XplorMRParser.Nrestraints)
                self.state = 1959
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1958
                    self.match(XplorMRParser.Equ_op)


                self.state = 1961
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1962
                self.match(XplorMRParser.Print)
                self.state = 1963
                self.match(XplorMRParser.Threshold)
                self.state = 1964
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1965
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Porientation_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_porientation_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPorientation_assign" ):
                listener.enterPorientation_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPorientation_assign" ):
                listener.exitPorientation_assign(self)




    def porientation_assign(self):

        localctx = XplorMRParser.Porientation_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 168, self.RULE_porientation_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1968
            self.match(XplorMRParser.Assign)
            self.state = 1969
            self.selection()
            self.state = 1970
            self.selection()
            self.state = 1971
            self.number()
            self.state = 1972
            self.number()
            self.state = 1973
            self.number()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pccr_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def pccr_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Pccr_assignContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Weip(self):
            return self.getToken(XplorMRParser.Weip, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Coefficients(self):
            return self.getToken(XplorMRParser.Coefficients, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def Frun(self):
            return self.getToken(XplorMRParser.Frun, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_pccr_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPccr_statement" ):
                listener.enterPccr_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPccr_statement" ):
                listener.exitPccr_statement(self)




    def pccr_statement(self):

        localctx = XplorMRParser.Pccr_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 170, self.RULE_pccr_statement)
        self._la = 0 # Token type
        try:
            self.state = 2001
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1975
                self.pccr_assign()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1976
                self.match(XplorMRParser.Classification)
                self.state = 1978
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1977
                    self.match(XplorMRParser.Equ_op)


                self.state = 1980
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Weip]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1981
                self.match(XplorMRParser.Weip)
                self.state = 1982
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Coefficients]:
                self.enterOuterAlt(localctx, 4)
                self.state = 1983
                self.match(XplorMRParser.Coefficients)
                self.state = 1984
                self.number_s()
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 5)
                self.state = 1985
                self.match(XplorMRParser.ForceConstant)
                self.state = 1987
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1986
                    self.match(XplorMRParser.Equ_op)


                self.state = 1989
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 6)
                self.state = 1990
                self.match(XplorMRParser.Nrestraints)
                self.state = 1992
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 1991
                    self.match(XplorMRParser.Equ_op)


                self.state = 1994
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 7)
                self.state = 1995
                self.match(XplorMRParser.Print)
                self.state = 1996
                self.match(XplorMRParser.Threshold)
                self.state = 1997
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 8)
                self.state = 1998
                self.match(XplorMRParser.Reset)
                pass
            elif token in [XplorMRParser.Frun]:
                self.enterOuterAlt(localctx, 9)
                self.state = 1999
                self.match(XplorMRParser.Frun)
                self.state = 2000
                self.match(XplorMRParser.Integer)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pccr_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def number(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.NumberContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.NumberContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_pccr_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPccr_assign" ):
                listener.enterPccr_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPccr_assign" ):
                listener.exitPccr_assign(self)




    def pccr_assign(self):

        localctx = XplorMRParser.Pccr_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 172, self.RULE_pccr_assign)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2003
            self.match(XplorMRParser.Assign)
            self.state = 2004
            self.selection()
            self.state = 2005
            self.selection()
            self.state = 2006
            self.selection()
            self.state = 2007
            self.number()
            self.state = 2009
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0):
                self.state = 2008
                self.number()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Hbond_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def hbond_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Hbond_assignContext,0)


        def hbond_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Hbond_assign_loopContext,0)


        def Classification(self):
            return self.getToken(XplorMRParser.Classification, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def ForceConstant(self):
            return self.getToken(XplorMRParser.ForceConstant, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def Nrestraints(self):
            return self.getToken(XplorMRParser.Nrestraints, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Print(self):
            return self.getToken(XplorMRParser.Print, 0)

        def Threshold(self):
            return self.getToken(XplorMRParser.Threshold, 0)

        def Reset(self):
            return self.getToken(XplorMRParser.Reset, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_hbond_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHbond_statement" ):
                listener.enterHbond_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHbond_statement" ):
                listener.exitHbond_statement(self)




    def hbond_statement(self):

        localctx = XplorMRParser.Hbond_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 174, self.RULE_hbond_statement)
        self._la = 0 # Token type
        try:
            self.state = 2032
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2011
                self.hbond_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2012
                self.hbond_assign_loop()
                pass
            elif token in [XplorMRParser.Classification]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2013
                self.match(XplorMRParser.Classification)
                self.state = 2015
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2014
                    self.match(XplorMRParser.Equ_op)


                self.state = 2017
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.ForceConstant]:
                self.enterOuterAlt(localctx, 4)
                self.state = 2018
                self.match(XplorMRParser.ForceConstant)
                self.state = 2020
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2019
                    self.match(XplorMRParser.Equ_op)


                self.state = 2022
                self.number_s()
                pass
            elif token in [XplorMRParser.Nrestraints]:
                self.enterOuterAlt(localctx, 5)
                self.state = 2023
                self.match(XplorMRParser.Nrestraints)
                self.state = 2025
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2024
                    self.match(XplorMRParser.Equ_op)


                self.state = 2027
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Print]:
                self.enterOuterAlt(localctx, 6)
                self.state = 2028
                self.match(XplorMRParser.Print)
                self.state = 2029
                self.match(XplorMRParser.Threshold)
                self.state = 2030
                self.number_s()
                pass
            elif token in [XplorMRParser.Reset]:
                self.enterOuterAlt(localctx, 7)
                self.state = 2031
                self.match(XplorMRParser.Reset)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Hbond_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_hbond_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHbond_assign" ):
                listener.enterHbond_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHbond_assign" ):
                listener.exitHbond_assign(self)




    def hbond_assign(self):

        localctx = XplorMRParser.Hbond_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 176, self.RULE_hbond_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2034
            self.match(XplorMRParser.Assign)
            self.state = 2035
            self.selection()
            self.state = 2036
            self.selection()
            self.state = 2037
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Hbond_db_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def hbond_db_assign(self):
            return self.getTypedRuleContext(XplorMRParser.Hbond_db_assignContext,0)


        def hbond_db_assign_loop(self):
            return self.getTypedRuleContext(XplorMRParser.Hbond_db_assign_loopContext,0)


        def Kdir(self):
            return self.getToken(XplorMRParser.Kdir, 0)

        def number_s(self):
            return self.getTypedRuleContext(XplorMRParser.Number_sContext,0)


        def Equ_op(self):
            return self.getToken(XplorMRParser.Equ_op, 0)

        def Klin(self):
            return self.getToken(XplorMRParser.Klin, 0)

        def Nseg(self):
            return self.getToken(XplorMRParser.Nseg, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Nmin(self):
            return self.getToken(XplorMRParser.Nmin, 0)

        def Nmax(self):
            return self.getToken(XplorMRParser.Nmax, 0)

        def Segm(self):
            return self.getToken(XplorMRParser.Segm, 0)

        def Simple_name(self):
            return self.getToken(XplorMRParser.Simple_name, 0)

        def Ohcut(self):
            return self.getToken(XplorMRParser.Ohcut, 0)

        def Coh1cut(self):
            return self.getToken(XplorMRParser.Coh1cut, 0)

        def Coh2cut(self):
            return self.getToken(XplorMRParser.Coh2cut, 0)

        def Ohncut(self):
            return self.getToken(XplorMRParser.Ohncut, 0)

        def Updfrq(self):
            return self.getToken(XplorMRParser.Updfrq, 0)

        def Prnfrq(self):
            return self.getToken(XplorMRParser.Prnfrq, 0)

        def Freemode(self):
            return self.getToken(XplorMRParser.Freemode, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_hbond_db_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHbond_db_statement" ):
                listener.enterHbond_db_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHbond_db_statement" ):
                listener.exitHbond_db_statement(self)




    def hbond_db_statement(self):

        localctx = XplorMRParser.Hbond_db_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 178, self.RULE_hbond_db_statement)
        self._la = 0 # Token type
        try:
            self.state = 2106
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Assign]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2039
                self.hbond_db_assign()
                pass
            elif token in [XplorMRParser.For]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2040
                self.hbond_db_assign_loop()
                pass
            elif token in [XplorMRParser.Kdir]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2041
                self.match(XplorMRParser.Kdir)
                self.state = 2043
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2042
                    self.match(XplorMRParser.Equ_op)


                self.state = 2045
                self.number_s()
                pass
            elif token in [XplorMRParser.Klin]:
                self.enterOuterAlt(localctx, 4)
                self.state = 2046
                self.match(XplorMRParser.Klin)
                self.state = 2048
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2047
                    self.match(XplorMRParser.Equ_op)


                self.state = 2050
                self.number_s()
                pass
            elif token in [XplorMRParser.Nseg]:
                self.enterOuterAlt(localctx, 5)
                self.state = 2051
                self.match(XplorMRParser.Nseg)
                self.state = 2053
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2052
                    self.match(XplorMRParser.Equ_op)


                self.state = 2055
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Nmin]:
                self.enterOuterAlt(localctx, 6)
                self.state = 2056
                self.match(XplorMRParser.Nmin)
                self.state = 2058
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2057
                    self.match(XplorMRParser.Equ_op)


                self.state = 2060
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Nmax]:
                self.enterOuterAlt(localctx, 7)
                self.state = 2061
                self.match(XplorMRParser.Nmax)
                self.state = 2063
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2062
                    self.match(XplorMRParser.Equ_op)


                self.state = 2065
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Segm]:
                self.enterOuterAlt(localctx, 8)
                self.state = 2066
                self.match(XplorMRParser.Segm)
                self.state = 2068
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2067
                    self.match(XplorMRParser.Equ_op)


                self.state = 2070
                self.match(XplorMRParser.Simple_name)
                pass
            elif token in [XplorMRParser.Ohcut]:
                self.enterOuterAlt(localctx, 9)
                self.state = 2071
                self.match(XplorMRParser.Ohcut)
                self.state = 2073
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2072
                    self.match(XplorMRParser.Equ_op)


                self.state = 2075
                self.number_s()
                pass
            elif token in [XplorMRParser.Coh1cut]:
                self.enterOuterAlt(localctx, 10)
                self.state = 2076
                self.match(XplorMRParser.Coh1cut)
                self.state = 2078
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2077
                    self.match(XplorMRParser.Equ_op)


                self.state = 2080
                self.number_s()
                pass
            elif token in [XplorMRParser.Coh2cut]:
                self.enterOuterAlt(localctx, 11)
                self.state = 2081
                self.match(XplorMRParser.Coh2cut)
                self.state = 2083
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2082
                    self.match(XplorMRParser.Equ_op)


                self.state = 2085
                self.number_s()
                pass
            elif token in [XplorMRParser.Ohncut]:
                self.enterOuterAlt(localctx, 12)
                self.state = 2086
                self.match(XplorMRParser.Ohncut)
                self.state = 2088
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2087
                    self.match(XplorMRParser.Equ_op)


                self.state = 2090
                self.number_s()
                pass
            elif token in [XplorMRParser.Updfrq]:
                self.enterOuterAlt(localctx, 13)
                self.state = 2091
                self.match(XplorMRParser.Updfrq)
                self.state = 2093
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2092
                    self.match(XplorMRParser.Equ_op)


                self.state = 2095
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Prnfrq]:
                self.enterOuterAlt(localctx, 14)
                self.state = 2096
                self.match(XplorMRParser.Prnfrq)
                self.state = 2098
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2097
                    self.match(XplorMRParser.Equ_op)


                self.state = 2100
                self.match(XplorMRParser.Integer)
                pass
            elif token in [XplorMRParser.Freemode]:
                self.enterOuterAlt(localctx, 15)
                self.state = 2101
                self.match(XplorMRParser.Freemode)
                self.state = 2103
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2102
                    self.match(XplorMRParser.Equ_op)


                self.state = 2105
                self.match(XplorMRParser.Integer)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Hbond_db_assignContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Assign(self):
            return self.getToken(XplorMRParser.Assign, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def getRuleIndex(self):
            return XplorMRParser.RULE_hbond_db_assign

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHbond_db_assign" ):
                listener.enterHbond_db_assign(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHbond_db_assign" ):
                listener.exitHbond_db_assign(self)




    def hbond_db_assign(self):

        localctx = XplorMRParser.Hbond_db_assignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 180, self.RULE_hbond_db_assign)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2108
            self.match(XplorMRParser.Assign)
            self.state = 2109
            self.selection()
            self.state = 2110
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class SelectionContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def L_paren(self):
            return self.getToken(XplorMRParser.L_paren, 0)

        def selection_expression(self):
            return self.getTypedRuleContext(XplorMRParser.Selection_expressionContext,0)


        def R_paren(self):
            return self.getToken(XplorMRParser.R_paren, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_selection

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterSelection" ):
                listener.enterSelection(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitSelection" ):
                listener.exitSelection(self)




    def selection(self):

        localctx = XplorMRParser.SelectionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 182, self.RULE_selection)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2112
            self.match(XplorMRParser.L_paren)
            self.state = 2113
            self.selection_expression()
            self.state = 2114
            self.match(XplorMRParser.R_paren)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Selection_expressionContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def term(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.TermContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.TermContext,i)


        def Or_op(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Or_op)
            else:
                return self.getToken(XplorMRParser.Or_op, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_selection_expression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterSelection_expression" ):
                listener.enterSelection_expression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitSelection_expression" ):
                listener.exitSelection_expression(self)




    def selection_expression(self):

        localctx = XplorMRParser.Selection_expressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 184, self.RULE_selection_expression)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2116
            self.term()
            self.state = 2121
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Or_op:
                self.state = 2117
                self.match(XplorMRParser.Or_op)
                self.state = 2118
                self.term()
                self.state = 2123
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class TermContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def factor(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.FactorContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.FactorContext,i)


        def And_op(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.And_op)
            else:
                return self.getToken(XplorMRParser.And_op, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_term

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterTerm" ):
                listener.enterTerm(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitTerm" ):
                listener.exitTerm(self)




    def term(self):

        localctx = XplorMRParser.TermContext(self, self._ctx, self.state)
        self.enterRule(localctx, 186, self.RULE_term)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2124
            self.factor(0)
            self.state = 2129
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.And_op:
                self.state = 2125
                self.match(XplorMRParser.And_op)
                self.state = 2126
                self.factor(0)
                self.state = 2131
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class FactorContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def L_paren(self):
            return self.getToken(XplorMRParser.L_paren, 0)

        def selection_expression(self):
            return self.getTypedRuleContext(XplorMRParser.Selection_expressionContext,0)


        def R_paren(self):
            return self.getToken(XplorMRParser.R_paren, 0)

        def All(self):
            return self.getToken(XplorMRParser.All, 0)

        def Atom(self):
            return self.getToken(XplorMRParser.Atom, 0)

        def Simple_names(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_names)
            else:
                return self.getToken(XplorMRParser.Simple_names, i)

        def Simple_name(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name)
            else:
                return self.getToken(XplorMRParser.Simple_name, i)

        def Integers(self):
            return self.getToken(XplorMRParser.Integers, 0)

        def Integer(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer)
            else:
                return self.getToken(XplorMRParser.Integer, i)

        def Attribute(self):
            return self.getToken(XplorMRParser.Attribute, 0)

        def Attr_properties(self):
            return self.getToken(XplorMRParser.Attr_properties, 0)

        def Comparison_ops(self):
            return self.getToken(XplorMRParser.Comparison_ops, 0)

        def number_f(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Number_fContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Number_fContext,i)


        def Abs(self):
            return self.getToken(XplorMRParser.Abs, 0)

        def BondedTo(self):
            return self.getToken(XplorMRParser.BondedTo, 0)

        def factor(self):
            return self.getTypedRuleContext(XplorMRParser.FactorContext,0)


        def ByGroup(self):
            return self.getToken(XplorMRParser.ByGroup, 0)

        def ByRes(self):
            return self.getToken(XplorMRParser.ByRes, 0)

        def Chemical(self):
            return self.getToken(XplorMRParser.Chemical, 0)

        def Symbol_name(self):
            return self.getToken(XplorMRParser.Symbol_name, 0)

        def Colon(self):
            return self.getToken(XplorMRParser.Colon, 0)

        def Hydrogen(self):
            return self.getToken(XplorMRParser.Hydrogen, 0)

        def Id(self):
            return self.getToken(XplorMRParser.Id, 0)

        def Known(self):
            return self.getToken(XplorMRParser.Known, 0)

        def Name(self):
            return self.getToken(XplorMRParser.Name, 0)

        def Double_quote_string(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Double_quote_string)
            else:
                return self.getToken(XplorMRParser.Double_quote_string, i)

        def Not_op(self):
            return self.getToken(XplorMRParser.Not_op, 0)

        def Point(self):
            return self.getToken(XplorMRParser.Point, 0)

        def Cut(self):
            return self.getToken(XplorMRParser.Cut, 0)

        def Comma(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Comma)
            else:
                return self.getToken(XplorMRParser.Comma, i)

        def Tail(self):
            return self.getToken(XplorMRParser.Tail, 0)

        def selection(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.SelectionContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.SelectionContext,i)


        def Equ_op(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Equ_op)
            else:
                return self.getToken(XplorMRParser.Equ_op, i)

        def Head(self):
            return self.getToken(XplorMRParser.Head, 0)

        def Previous(self):
            return self.getToken(XplorMRParser.Previous, 0)

        def Pseudo(self):
            return self.getToken(XplorMRParser.Pseudo, 0)

        def Residue(self):
            return self.getToken(XplorMRParser.Residue, 0)

        def Resname(self):
            return self.getToken(XplorMRParser.Resname, 0)

        def SegIdentifier(self):
            return self.getToken(XplorMRParser.SegIdentifier, 0)

        def Store_1(self):
            return self.getToken(XplorMRParser.Store_1, 0)

        def Store_2(self):
            return self.getToken(XplorMRParser.Store_2, 0)

        def Store_3(self):
            return self.getToken(XplorMRParser.Store_3, 0)

        def Store_4(self):
            return self.getToken(XplorMRParser.Store_4, 0)

        def Store_5(self):
            return self.getToken(XplorMRParser.Store_5, 0)

        def Store_6(self):
            return self.getToken(XplorMRParser.Store_6, 0)

        def Store_7(self):
            return self.getToken(XplorMRParser.Store_7, 0)

        def Store_8(self):
            return self.getToken(XplorMRParser.Store_8, 0)

        def Store_9(self):
            return self.getToken(XplorMRParser.Store_9, 0)

        def Tag(self):
            return self.getToken(XplorMRParser.Tag, 0)

        def Donor(self):
            return self.getToken(XplorMRParser.Donor, 0)

        def Acceptor(self):
            return self.getToken(XplorMRParser.Acceptor, 0)

        def Around(self):
            return self.getToken(XplorMRParser.Around, 0)

        def Saround(self):
            return self.getToken(XplorMRParser.Saround, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_factor

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterFactor" ):
                listener.enterFactor(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitFactor" ):
                listener.exitFactor(self)



    def factor(self, _p:int=0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = XplorMRParser.FactorContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 188
        self.enterRecursionRule(localctx, 188, self.RULE_factor, _p)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2271
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,263,self._ctx)
            if la_ == 1:
                self.state = 2133
                self.match(XplorMRParser.L_paren)
                self.state = 2134
                self.selection_expression()
                self.state = 2135
                self.match(XplorMRParser.R_paren)
                pass

            elif la_ == 2:
                self.state = 2137
                self.match(XplorMRParser.All)
                pass

            elif la_ == 3:
                self.state = 2138
                self.match(XplorMRParser.Atom)
                self.state = 2139
                _la = self._input.LA(1)
                if not(_la==XplorMRParser.Simple_name or _la==XplorMRParser.Simple_names):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()
                self.state = 2140
                _la = self._input.LA(1)
                if not(_la==XplorMRParser.Integer or _la==XplorMRParser.Integers):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()
                self.state = 2141
                _la = self._input.LA(1)
                if not(_la==XplorMRParser.Simple_name or _la==XplorMRParser.Simple_names):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()
                pass

            elif la_ == 4:
                self.state = 2142
                self.match(XplorMRParser.Attribute)
                self.state = 2144
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Abs:
                    self.state = 2143
                    self.match(XplorMRParser.Abs)


                self.state = 2146
                self.match(XplorMRParser.Attr_properties)
                self.state = 2147
                self.match(XplorMRParser.Comparison_ops)
                self.state = 2148
                self.number_f()
                pass

            elif la_ == 5:
                self.state = 2149
                self.match(XplorMRParser.BondedTo)
                self.state = 2150
                self.factor(29)
                pass

            elif la_ == 6:
                self.state = 2151
                self.match(XplorMRParser.ByGroup)
                self.state = 2152
                self.factor(28)
                pass

            elif la_ == 7:
                self.state = 2153
                self.match(XplorMRParser.ByRes)
                self.state = 2154
                self.factor(27)
                pass

            elif la_ == 8:
                self.state = 2155
                self.match(XplorMRParser.Chemical)
                self.state = 2163
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Simple_names]:
                    self.state = 2156
                    self.match(XplorMRParser.Simple_names)
                    pass
                elif token in [XplorMRParser.Simple_name]:
                    self.state = 2157
                    self.match(XplorMRParser.Simple_name)
                    self.state = 2160
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input,245,self._ctx)
                    if la_ == 1:
                        self.state = 2158
                        self.match(XplorMRParser.Colon)
                        self.state = 2159
                        self.match(XplorMRParser.Simple_name)


                    pass
                elif token in [XplorMRParser.Symbol_name]:
                    self.state = 2162
                    self.match(XplorMRParser.Symbol_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 9:
                self.state = 2165
                self.match(XplorMRParser.Hydrogen)
                pass

            elif la_ == 10:
                self.state = 2166
                self.match(XplorMRParser.Id)
                self.state = 2167
                self.match(XplorMRParser.Integer)
                pass

            elif la_ == 11:
                self.state = 2168
                self.match(XplorMRParser.Known)
                pass

            elif la_ == 12:
                self.state = 2169
                self.match(XplorMRParser.Name)
                self.state = 2182
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Simple_names]:
                    self.state = 2170
                    self.match(XplorMRParser.Simple_names)
                    pass
                elif token in [XplorMRParser.Simple_name]:
                    self.state = 2171
                    self.match(XplorMRParser.Simple_name)
                    self.state = 2174
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input,247,self._ctx)
                    if la_ == 1:
                        self.state = 2172
                        self.match(XplorMRParser.Colon)
                        self.state = 2173
                        self.match(XplorMRParser.Simple_name)


                    pass
                elif token in [XplorMRParser.Double_quote_string]:
                    self.state = 2176
                    self.match(XplorMRParser.Double_quote_string)
                    self.state = 2179
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input,248,self._ctx)
                    if la_ == 1:
                        self.state = 2177
                        self.match(XplorMRParser.Colon)
                        self.state = 2178
                        self.match(XplorMRParser.Double_quote_string)


                    pass
                elif token in [XplorMRParser.Symbol_name]:
                    self.state = 2181
                    self.match(XplorMRParser.Symbol_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 13:
                self.state = 2184
                self.match(XplorMRParser.Not_op)
                self.state = 2185
                self.factor(21)
                pass

            elif la_ == 14:
                self.state = 2186
                self.match(XplorMRParser.Point)
                self.state = 2187
                self.match(XplorMRParser.L_paren)
                self.state = 2188
                self.number_f()
                self.state = 2190
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Comma:
                    self.state = 2189
                    self.match(XplorMRParser.Comma)


                self.state = 2192
                self.number_f()
                self.state = 2194
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Comma:
                    self.state = 2193
                    self.match(XplorMRParser.Comma)


                self.state = 2196
                self.number_f()
                self.state = 2197
                self.match(XplorMRParser.R_paren)
                self.state = 2198
                self.match(XplorMRParser.Cut)
                self.state = 2199
                self.number_f()
                pass

            elif la_ == 15:
                self.state = 2201
                self.match(XplorMRParser.Point)
                self.state = 2202
                self.match(XplorMRParser.L_paren)
                self.state = 2203
                self.match(XplorMRParser.Tail)
                self.state = 2205
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Equ_op:
                    self.state = 2204
                    self.match(XplorMRParser.Equ_op)


                self.state = 2207
                self.selection()
                self.state = 2209
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Comma:
                    self.state = 2208
                    self.match(XplorMRParser.Comma)


                self.state = 2216
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la==XplorMRParser.Head:
                    self.state = 2211
                    self.match(XplorMRParser.Head)
                    self.state = 2213
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if _la==XplorMRParser.Equ_op:
                        self.state = 2212
                        self.match(XplorMRParser.Equ_op)


                    self.state = 2215
                    self.selection()


                self.state = 2218
                self.match(XplorMRParser.R_paren)
                self.state = 2219
                self.match(XplorMRParser.Cut)
                self.state = 2220
                self.number_f()
                pass

            elif la_ == 16:
                self.state = 2222
                self.match(XplorMRParser.Previous)
                pass

            elif la_ == 17:
                self.state = 2223
                self.match(XplorMRParser.Pseudo)
                pass

            elif la_ == 18:
                self.state = 2224
                self.match(XplorMRParser.Residue)
                self.state = 2232
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Integers]:
                    self.state = 2225
                    self.match(XplorMRParser.Integers)
                    pass
                elif token in [XplorMRParser.Integer]:
                    self.state = 2226
                    self.match(XplorMRParser.Integer)
                    self.state = 2229
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input,256,self._ctx)
                    if la_ == 1:
                        self.state = 2227
                        self.match(XplorMRParser.Colon)
                        self.state = 2228
                        self.match(XplorMRParser.Integer)


                    pass
                elif token in [XplorMRParser.Symbol_name]:
                    self.state = 2231
                    self.match(XplorMRParser.Symbol_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 19:
                self.state = 2234
                self.match(XplorMRParser.Resname)
                self.state = 2242
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Simple_names]:
                    self.state = 2235
                    self.match(XplorMRParser.Simple_names)
                    pass
                elif token in [XplorMRParser.Simple_name]:
                    self.state = 2236
                    self.match(XplorMRParser.Simple_name)
                    self.state = 2239
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input,258,self._ctx)
                    if la_ == 1:
                        self.state = 2237
                        self.match(XplorMRParser.Colon)
                        self.state = 2238
                        self.match(XplorMRParser.Simple_name)


                    pass
                elif token in [XplorMRParser.Symbol_name]:
                    self.state = 2241
                    self.match(XplorMRParser.Symbol_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 20:
                self.state = 2244
                self.match(XplorMRParser.SegIdentifier)
                self.state = 2257
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Simple_names]:
                    self.state = 2245
                    self.match(XplorMRParser.Simple_names)
                    pass
                elif token in [XplorMRParser.Simple_name]:
                    self.state = 2246
                    self.match(XplorMRParser.Simple_name)
                    self.state = 2249
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input,260,self._ctx)
                    if la_ == 1:
                        self.state = 2247
                        self.match(XplorMRParser.Colon)
                        self.state = 2248
                        self.match(XplorMRParser.Simple_name)


                    pass
                elif token in [XplorMRParser.Double_quote_string]:
                    self.state = 2251
                    self.match(XplorMRParser.Double_quote_string)
                    self.state = 2254
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input,261,self._ctx)
                    if la_ == 1:
                        self.state = 2252
                        self.match(XplorMRParser.Colon)
                        self.state = 2253
                        self.match(XplorMRParser.Double_quote_string)


                    pass
                elif token in [XplorMRParser.Symbol_name]:
                    self.state = 2256
                    self.match(XplorMRParser.Symbol_name)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 21:
                self.state = 2259
                self.match(XplorMRParser.Store_1)
                pass

            elif la_ == 22:
                self.state = 2260
                self.match(XplorMRParser.Store_2)
                pass

            elif la_ == 23:
                self.state = 2261
                self.match(XplorMRParser.Store_3)
                pass

            elif la_ == 24:
                self.state = 2262
                self.match(XplorMRParser.Store_4)
                pass

            elif la_ == 25:
                self.state = 2263
                self.match(XplorMRParser.Store_5)
                pass

            elif la_ == 26:
                self.state = 2264
                self.match(XplorMRParser.Store_6)
                pass

            elif la_ == 27:
                self.state = 2265
                self.match(XplorMRParser.Store_7)
                pass

            elif la_ == 28:
                self.state = 2266
                self.match(XplorMRParser.Store_8)
                pass

            elif la_ == 29:
                self.state = 2267
                self.match(XplorMRParser.Store_9)
                pass

            elif la_ == 30:
                self.state = 2268
                self.match(XplorMRParser.Tag)
                pass

            elif la_ == 31:
                self.state = 2269
                self.match(XplorMRParser.Donor)
                pass

            elif la_ == 32:
                self.state = 2270
                self.match(XplorMRParser.Acceptor)
                pass


            self._ctx.stop = self._input.LT(-1)
            self.state = 2281
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input,265,self._ctx)
            while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
                if _alt==1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    self.state = 2279
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input,264,self._ctx)
                    if la_ == 1:
                        localctx = XplorMRParser.FactorContext(self, _parentctx, _parentState)
                        self.pushNewRecursionContext(localctx, _startState, self.RULE_factor)
                        self.state = 2273
                        if not self.precpred(self._ctx, 32):
                            from antlr4.error.Errors import FailedPredicateException
                            raise FailedPredicateException(self, "self.precpred(self._ctx, 32)")
                        self.state = 2274
                        self.match(XplorMRParser.Around)
                        self.state = 2275
                        self.number_f()
                        pass

                    elif la_ == 2:
                        localctx = XplorMRParser.FactorContext(self, _parentctx, _parentState)
                        self.pushNewRecursionContext(localctx, _startState, self.RULE_factor)
                        self.state = 2276
                        if not self.precpred(self._ctx, 14):
                            from antlr4.error.Errors import FailedPredicateException
                            raise FailedPredicateException(self, "self.precpred(self._ctx, 14)")
                        self.state = 2277
                        self.match(XplorMRParser.Saround)
                        self.state = 2278
                        self.number_f()
                        pass

             
                self.state = 2283
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input,265,self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx


    class NumberContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Real(self):
            return self.getToken(XplorMRParser.Real, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Symbol_name(self):
            return self.getToken(XplorMRParser.Symbol_name, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_number

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNumber" ):
                listener.enterNumber(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNumber" ):
                listener.exitNumber(self)




    def number(self):

        localctx = XplorMRParser.NumberContext(self, self._ctx, self.state)
        self.enterRule(localctx, 190, self.RULE_number)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2284
            _la = self._input.LA(1)
            if not(((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0)):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Number_fContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Real(self):
            return self.getToken(XplorMRParser.Real, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_number_f

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNumber_f" ):
                listener.enterNumber_f(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNumber_f" ):
                listener.exitNumber_f(self)




    def number_f(self):

        localctx = XplorMRParser.Number_fContext(self, self._ctx, self.state)
        self.enterRule(localctx, 192, self.RULE_number_f)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2286
            _la = self._input.LA(1)
            if not(_la==XplorMRParser.Integer or _la==XplorMRParser.Real):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Number_sContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Real(self):
            return self.getToken(XplorMRParser.Real, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def Symbol_name(self):
            return self.getToken(XplorMRParser.Symbol_name, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_number_s

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNumber_s" ):
                listener.enterNumber_s(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNumber_s" ):
                listener.exitNumber_s(self)




    def number_s(self):

        localctx = XplorMRParser.Number_sContext(self, self._ctx, self.state)
        self.enterRule(localctx, 194, self.RULE_number_s)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2288
            _la = self._input.LA(1)
            if not(((((_la - 177)) & ~0x3f) == 0 and ((1 << (_la - 177)) & ((1 << (XplorMRParser.Integer - 177)) | (1 << (XplorMRParser.Real - 177)) | (1 << (XplorMRParser.Symbol_name - 177)))) != 0)):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Number_aContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Real(self):
            return self.getToken(XplorMRParser.Real, 0)

        def Integer(self):
            return self.getToken(XplorMRParser.Integer, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_number_a

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNumber_a" ):
                listener.enterNumber_a(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNumber_a" ):
                listener.exitNumber_a(self)




    def number_a(self):

        localctx = XplorMRParser.Number_aContext(self, self._ctx, self.state)
        self.enterRule(localctx, 196, self.RULE_number_a)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2290
            _la = self._input.LA(1)
            if not(_la==XplorMRParser.Integer or _la==XplorMRParser.Real):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Flag_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Flags(self):
            return self.getToken(XplorMRParser.Flags, 0)

        def Include(self):
            return self.getToken(XplorMRParser.Include, 0)

        def End_F(self):
            return self.getToken(XplorMRParser.End_F, 0)

        def Exclude(self):
            return self.getToken(XplorMRParser.Exclude, 0)

        def Class_name(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Class_name)
            else:
                return self.getToken(XplorMRParser.Class_name, i)

        def Any_class(self):
            return self.getToken(XplorMRParser.Any_class, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_flag_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterFlag_statement" ):
                listener.enterFlag_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitFlag_statement" ):
                listener.exitFlag_statement(self)




    def flag_statement(self):

        localctx = XplorMRParser.Flag_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 198, self.RULE_flag_statement)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2292
            self.match(XplorMRParser.Flags)
            self.state = 2303
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.Exclude:
                self.state = 2293
                self.match(XplorMRParser.Exclude)
                self.state = 2301
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Include, XplorMRParser.Class_name]:
                    self.state = 2297
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    while _la==XplorMRParser.Class_name:
                        self.state = 2294
                        self.match(XplorMRParser.Class_name)
                        self.state = 2299
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)

                    pass
                elif token in [XplorMRParser.Any_class]:
                    self.state = 2300
                    self.match(XplorMRParser.Any_class)
                    pass
                else:
                    raise NoViableAltException(self)



            self.state = 2305
            self.match(XplorMRParser.Include)
            self.state = 2309
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Class_name:
                self.state = 2306
                self.match(XplorMRParser.Class_name)
                self.state = 2311
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2312
            self.match(XplorMRParser.End_F)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Vector_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Vector(self):
            return self.getToken(XplorMRParser.Vector, 0)

        def vector_mode(self):
            return self.getTypedRuleContext(XplorMRParser.Vector_modeContext,0)


        def selection(self):
            return self.getTypedRuleContext(XplorMRParser.SelectionContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_vector_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVector_statement" ):
                listener.enterVector_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVector_statement" ):
                listener.exitVector_statement(self)




    def vector_statement(self):

        localctx = XplorMRParser.Vector_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 200, self.RULE_vector_statement)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2314
            self.match(XplorMRParser.Vector)
            self.state = 2315
            self.vector_mode()
            self.state = 2316
            self.selection()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Vector_modeContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def vector_expression(self):
            return self.getTypedRuleContext(XplorMRParser.Vector_expressionContext,0)


        def R_paren_VE(self):
            return self.getToken(XplorMRParser.R_paren_VE, 0)

        def Do_Lp(self):
            return self.getToken(XplorMRParser.Do_Lp, 0)

        def Identify_Lp(self):
            return self.getToken(XplorMRParser.Identify_Lp, 0)

        def Show(self):
            return self.getToken(XplorMRParser.Show, 0)

        def vector_show_property(self):
            return self.getTypedRuleContext(XplorMRParser.Vector_show_propertyContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_vector_mode

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVector_mode" ):
                listener.enterVector_mode(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVector_mode" ):
                listener.exitVector_mode(self)




    def vector_mode(self):

        localctx = XplorMRParser.Vector_modeContext(self, self._ctx, self.state)
        self.enterRule(localctx, 202, self.RULE_vector_mode)
        self._la = 0 # Token type
        try:
            self.state = 2324
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Do_Lp, XplorMRParser.Identify_Lp]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2318
                _la = self._input.LA(1)
                if not(_la==XplorMRParser.Do_Lp or _la==XplorMRParser.Identify_Lp):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()
                self.state = 2319
                self.vector_expression()
                self.state = 2320
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Show]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2322
                self.match(XplorMRParser.Show)
                self.state = 2323
                self.vector_show_property()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Vector_expressionContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Atom_properties_VE(self):
            return self.getToken(XplorMRParser.Atom_properties_VE, 0)

        def Equ_op_VE(self):
            return self.getToken(XplorMRParser.Equ_op_VE, 0)

        def vector_operation(self):
            return self.getTypedRuleContext(XplorMRParser.Vector_operationContext,0)


        def getRuleIndex(self):
            return XplorMRParser.RULE_vector_expression

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVector_expression" ):
                listener.enterVector_expression(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVector_expression" ):
                listener.exitVector_expression(self)




    def vector_expression(self):

        localctx = XplorMRParser.Vector_expressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 204, self.RULE_vector_expression)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2326
            self.match(XplorMRParser.Atom_properties_VE)
            self.state = 2329
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la==XplorMRParser.Equ_op_VE:
                self.state = 2327
                self.match(XplorMRParser.Equ_op_VE)
                self.state = 2328
                self.vector_operation()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Vector_operationContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def vflc(self):
            return self.getTypedRuleContext(XplorMRParser.VflcContext,0)


        def vector_operation(self):
            return self.getTypedRuleContext(XplorMRParser.Vector_operationContext,0)


        def Add_op_VE(self):
            return self.getToken(XplorMRParser.Add_op_VE, 0)

        def Sub_op_VE(self):
            return self.getToken(XplorMRParser.Sub_op_VE, 0)

        def Mul_op_VE(self):
            return self.getToken(XplorMRParser.Mul_op_VE, 0)

        def Div_op_VE(self):
            return self.getToken(XplorMRParser.Div_op_VE, 0)

        def Exp_op_VE(self):
            return self.getToken(XplorMRParser.Exp_op_VE, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_vector_operation

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVector_operation" ):
                listener.enterVector_operation(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVector_operation" ):
                listener.exitVector_operation(self)




    def vector_operation(self):

        localctx = XplorMRParser.Vector_operationContext(self, self._ctx, self.state)
        self.enterRule(localctx, 206, self.RULE_vector_operation)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2331
            self.vflc()
            self.state = 2334
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 229)) & ~0x3f) == 0 and ((1 << (_la - 229)) & ((1 << (XplorMRParser.Add_op_VE - 229)) | (1 << (XplorMRParser.Sub_op_VE - 229)) | (1 << (XplorMRParser.Mul_op_VE - 229)) | (1 << (XplorMRParser.Div_op_VE - 229)) | (1 << (XplorMRParser.Exp_op_VE - 229)))) != 0):
                self.state = 2332
                _la = self._input.LA(1)
                if not(((((_la - 229)) & ~0x3f) == 0 and ((1 << (_la - 229)) & ((1 << (XplorMRParser.Add_op_VE - 229)) | (1 << (XplorMRParser.Sub_op_VE - 229)) | (1 << (XplorMRParser.Mul_op_VE - 229)) | (1 << (XplorMRParser.Div_op_VE - 229)) | (1 << (XplorMRParser.Exp_op_VE - 229)))) != 0)):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()
                self.state = 2333
                self.vector_operation()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class VflcContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Atom_properties_VE(self):
            return self.getToken(XplorMRParser.Atom_properties_VE, 0)

        def vector_func_call(self):
            return self.getTypedRuleContext(XplorMRParser.Vector_func_callContext,0)


        def Integer_VE(self):
            return self.getToken(XplorMRParser.Integer_VE, 0)

        def Real_VE(self):
            return self.getToken(XplorMRParser.Real_VE, 0)

        def Simple_name_VE(self):
            return self.getToken(XplorMRParser.Simple_name_VE, 0)

        def Symbol_name_VE(self):
            return self.getToken(XplorMRParser.Symbol_name_VE, 0)

        def Double_quote_string_VE(self):
            return self.getToken(XplorMRParser.Double_quote_string_VE, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_vflc

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVflc" ):
                listener.enterVflc(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVflc" ):
                listener.exitVflc(self)




    def vflc(self):

        localctx = XplorMRParser.VflcContext(self, self._ctx, self.state)
        self.enterRule(localctx, 208, self.RULE_vflc)
        try:
            self.state = 2343
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Atom_properties_VE]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2336
                self.match(XplorMRParser.Atom_properties_VE)
                pass
            elif token in [XplorMRParser.Abs_VE, XplorMRParser.Acos_VE, XplorMRParser.Cos_VE, XplorMRParser.Decode_VE, XplorMRParser.Encode_VE, XplorMRParser.Exp_VE, XplorMRParser.Gauss_VE, XplorMRParser.Heavy_VE, XplorMRParser.Int_VE, XplorMRParser.Log10_VE, XplorMRParser.Log_VE, XplorMRParser.Max_VE, XplorMRParser.Maxw_VE, XplorMRParser.Min_VE, XplorMRParser.Mod_VE, XplorMRParser.Norm_VE, XplorMRParser.Random_VE, XplorMRParser.Sign_VE, XplorMRParser.Sin_VE, XplorMRParser.Sqrt_VE, XplorMRParser.Tan_VE]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2337
                self.vector_func_call()
                pass
            elif token in [XplorMRParser.Integer_VE]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2338
                self.match(XplorMRParser.Integer_VE)
                pass
            elif token in [XplorMRParser.Real_VE]:
                self.enterOuterAlt(localctx, 4)
                self.state = 2339
                self.match(XplorMRParser.Real_VE)
                pass
            elif token in [XplorMRParser.Simple_name_VE]:
                self.enterOuterAlt(localctx, 5)
                self.state = 2340
                self.match(XplorMRParser.Simple_name_VE)
                pass
            elif token in [XplorMRParser.Symbol_name_VE]:
                self.enterOuterAlt(localctx, 6)
                self.state = 2341
                self.match(XplorMRParser.Symbol_name_VE)
                pass
            elif token in [XplorMRParser.Double_quote_string_VE]:
                self.enterOuterAlt(localctx, 7)
                self.state = 2342
                self.match(XplorMRParser.Double_quote_string_VE)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Vector_func_callContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Abs_VE(self):
            return self.getToken(XplorMRParser.Abs_VE, 0)

        def L_paren_VF(self):
            return self.getToken(XplorMRParser.L_paren_VF, 0)

        def vflc(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.VflcContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.VflcContext,i)


        def R_paren_VE(self):
            return self.getToken(XplorMRParser.R_paren_VE, 0)

        def Acos_VE(self):
            return self.getToken(XplorMRParser.Acos_VE, 0)

        def Cos_VE(self):
            return self.getToken(XplorMRParser.Cos_VE, 0)

        def Decode_VE(self):
            return self.getToken(XplorMRParser.Decode_VE, 0)

        def Encode_VE(self):
            return self.getToken(XplorMRParser.Encode_VE, 0)

        def Exp_VE(self):
            return self.getToken(XplorMRParser.Exp_VE, 0)

        def Gauss_VE(self):
            return self.getToken(XplorMRParser.Gauss_VE, 0)

        def Heavy_VE(self):
            return self.getToken(XplorMRParser.Heavy_VE, 0)

        def Int_VE(self):
            return self.getToken(XplorMRParser.Int_VE, 0)

        def Log10_VE(self):
            return self.getToken(XplorMRParser.Log10_VE, 0)

        def Log_VE(self):
            return self.getToken(XplorMRParser.Log_VE, 0)

        def Max_VE(self):
            return self.getToken(XplorMRParser.Max_VE, 0)

        def Comma_VE(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Comma_VE)
            else:
                return self.getToken(XplorMRParser.Comma_VE, i)

        def Maxw_VE(self):
            return self.getToken(XplorMRParser.Maxw_VE, 0)

        def Min_VE(self):
            return self.getToken(XplorMRParser.Min_VE, 0)

        def Mod_VE(self):
            return self.getToken(XplorMRParser.Mod_VE, 0)

        def Norm_VE(self):
            return self.getToken(XplorMRParser.Norm_VE, 0)

        def Random_VE(self):
            return self.getToken(XplorMRParser.Random_VE, 0)

        def Sign_VE(self):
            return self.getToken(XplorMRParser.Sign_VE, 0)

        def Sin_VE(self):
            return self.getToken(XplorMRParser.Sin_VE, 0)

        def Sqrt_VE(self):
            return self.getToken(XplorMRParser.Sqrt_VE, 0)

        def Tan_VE(self):
            return self.getToken(XplorMRParser.Tan_VE, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_vector_func_call

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVector_func_call" ):
                listener.enterVector_func_call(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVector_func_call" ):
                listener.exitVector_func_call(self)




    def vector_func_call(self):

        localctx = XplorMRParser.Vector_func_callContext(self, self._ctx, self.state)
        self.enterRule(localctx, 210, self.RULE_vector_func_call)
        self._la = 0 # Token type
        try:
            self.state = 2464
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [XplorMRParser.Abs_VE]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2345
                self.match(XplorMRParser.Abs_VE)
                self.state = 2346
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2347
                self.vflc()
                self.state = 2348
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Acos_VE]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2350
                self.match(XplorMRParser.Acos_VE)
                self.state = 2351
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2352
                self.vflc()
                self.state = 2353
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Cos_VE]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2355
                self.match(XplorMRParser.Cos_VE)
                self.state = 2356
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2357
                self.vflc()
                self.state = 2358
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Decode_VE]:
                self.enterOuterAlt(localctx, 4)
                self.state = 2360
                self.match(XplorMRParser.Decode_VE)
                self.state = 2361
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2362
                self.vflc()
                self.state = 2363
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Encode_VE]:
                self.enterOuterAlt(localctx, 5)
                self.state = 2365
                self.match(XplorMRParser.Encode_VE)
                self.state = 2366
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2367
                self.vflc()
                self.state = 2368
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Exp_VE]:
                self.enterOuterAlt(localctx, 6)
                self.state = 2370
                self.match(XplorMRParser.Exp_VE)
                self.state = 2371
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2372
                self.vflc()
                self.state = 2373
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Gauss_VE]:
                self.enterOuterAlt(localctx, 7)
                self.state = 2375
                self.match(XplorMRParser.Gauss_VE)
                self.state = 2376
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2377
                self.vflc()
                self.state = 2378
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Heavy_VE]:
                self.enterOuterAlt(localctx, 8)
                self.state = 2380
                self.match(XplorMRParser.Heavy_VE)
                self.state = 2381
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2382
                self.vflc()
                self.state = 2383
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Int_VE]:
                self.enterOuterAlt(localctx, 9)
                self.state = 2385
                self.match(XplorMRParser.Int_VE)
                self.state = 2386
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2387
                self.vflc()
                self.state = 2388
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Log10_VE]:
                self.enterOuterAlt(localctx, 10)
                self.state = 2390
                self.match(XplorMRParser.Log10_VE)
                self.state = 2391
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2392
                self.vflc()
                self.state = 2393
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Log_VE]:
                self.enterOuterAlt(localctx, 11)
                self.state = 2395
                self.match(XplorMRParser.Log_VE)
                self.state = 2396
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2397
                self.vflc()
                self.state = 2398
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Max_VE]:
                self.enterOuterAlt(localctx, 12)
                self.state = 2400
                self.match(XplorMRParser.Max_VE)
                self.state = 2401
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2402
                self.vflc()
                self.state = 2407
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Comma_VE:
                    self.state = 2403
                    self.match(XplorMRParser.Comma_VE)
                    self.state = 2404
                    self.vflc()
                    self.state = 2409
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2410
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Maxw_VE]:
                self.enterOuterAlt(localctx, 13)
                self.state = 2412
                self.match(XplorMRParser.Maxw_VE)
                self.state = 2413
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2414
                self.vflc()
                self.state = 2415
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Min_VE]:
                self.enterOuterAlt(localctx, 14)
                self.state = 2417
                self.match(XplorMRParser.Min_VE)
                self.state = 2418
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2419
                self.vflc()
                self.state = 2424
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Comma_VE:
                    self.state = 2420
                    self.match(XplorMRParser.Comma_VE)
                    self.state = 2421
                    self.vflc()
                    self.state = 2426
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2427
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Mod_VE]:
                self.enterOuterAlt(localctx, 15)
                self.state = 2429
                self.match(XplorMRParser.Mod_VE)
                self.state = 2430
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2431
                self.vflc()
                self.state = 2432
                self.match(XplorMRParser.Comma_VE)
                self.state = 2433
                self.vflc()
                self.state = 2434
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Norm_VE]:
                self.enterOuterAlt(localctx, 16)
                self.state = 2436
                self.match(XplorMRParser.Norm_VE)
                self.state = 2437
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2438
                self.vflc()
                self.state = 2439
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Random_VE]:
                self.enterOuterAlt(localctx, 17)
                self.state = 2441
                self.match(XplorMRParser.Random_VE)
                self.state = 2442
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2443
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Sign_VE]:
                self.enterOuterAlt(localctx, 18)
                self.state = 2444
                self.match(XplorMRParser.Sign_VE)
                self.state = 2445
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2446
                self.vflc()
                self.state = 2447
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Sin_VE]:
                self.enterOuterAlt(localctx, 19)
                self.state = 2449
                self.match(XplorMRParser.Sin_VE)
                self.state = 2450
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2451
                self.vflc()
                self.state = 2452
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Sqrt_VE]:
                self.enterOuterAlt(localctx, 20)
                self.state = 2454
                self.match(XplorMRParser.Sqrt_VE)
                self.state = 2455
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2456
                self.vflc()
                self.state = 2457
                self.match(XplorMRParser.R_paren_VE)
                pass
            elif token in [XplorMRParser.Tan_VE]:
                self.enterOuterAlt(localctx, 21)
                self.state = 2459
                self.match(XplorMRParser.Tan_VE)
                self.state = 2460
                self.match(XplorMRParser.L_paren_VF)
                self.state = 2461
                self.vflc()
                self.state = 2462
                self.match(XplorMRParser.R_paren_VE)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Vector_show_propertyContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def L_paren_VS(self):
            return self.getToken(XplorMRParser.L_paren_VS, 0)

        def Atom_properties_VS(self):
            return self.getToken(XplorMRParser.Atom_properties_VS, 0)

        def R_paren_VS(self):
            return self.getToken(XplorMRParser.R_paren_VS, 0)

        def Average_VS(self):
            return self.getToken(XplorMRParser.Average_VS, 0)

        def Element_VS(self):
            return self.getToken(XplorMRParser.Element_VS, 0)

        def Max_VS(self):
            return self.getToken(XplorMRParser.Max_VS, 0)

        def Min_VS(self):
            return self.getToken(XplorMRParser.Min_VS, 0)

        def Norm_VS(self):
            return self.getToken(XplorMRParser.Norm_VS, 0)

        def Rms_VS(self):
            return self.getToken(XplorMRParser.Rms_VS, 0)

        def Sum_VS(self):
            return self.getToken(XplorMRParser.Sum_VS, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_vector_show_property

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterVector_show_property" ):
                listener.enterVector_show_property(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitVector_show_property" ):
                listener.exitVector_show_property(self)




    def vector_show_property(self):

        localctx = XplorMRParser.Vector_show_propertyContext(self, self._ctx, self.state)
        self.enterRule(localctx, 212, self.RULE_vector_show_property)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2466
            _la = self._input.LA(1)
            if not(((((_la - 268)) & ~0x3f) == 0 and ((1 << (_la - 268)) & ((1 << (XplorMRParser.Average_VS - 268)) | (1 << (XplorMRParser.Element_VS - 268)) | (1 << (XplorMRParser.Max_VS - 268)) | (1 << (XplorMRParser.Min_VS - 268)) | (1 << (XplorMRParser.Norm_VS - 268)) | (1 << (XplorMRParser.Rms_VS - 268)) | (1 << (XplorMRParser.Sum_VS - 268)))) != 0)):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
            self.state = 2467
            self.match(XplorMRParser.L_paren_VS)
            self.state = 2468
            self.match(XplorMRParser.Atom_properties_VS)
            self.state = 2469
            self.match(XplorMRParser.R_paren_VS)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Evaluate_statementContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def Evaluate_Lp(self):
            return self.getToken(XplorMRParser.Evaluate_Lp, 0)

        def Symbol_name_VE(self):
            return self.getToken(XplorMRParser.Symbol_name_VE, 0)

        def Equ_op_VE(self):
            return self.getToken(XplorMRParser.Equ_op_VE, 0)

        def evaluate_operation(self):
            return self.getTypedRuleContext(XplorMRParser.Evaluate_operationContext,0)


        def R_paren_VE(self):
            return self.getToken(XplorMRParser.R_paren_VE, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_evaluate_statement

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterEvaluate_statement" ):
                listener.enterEvaluate_statement(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitEvaluate_statement" ):
                listener.exitEvaluate_statement(self)




    def evaluate_statement(self):

        localctx = XplorMRParser.Evaluate_statementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 214, self.RULE_evaluate_statement)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2471
            self.match(XplorMRParser.Evaluate_Lp)
            self.state = 2472
            self.match(XplorMRParser.Symbol_name_VE)
            self.state = 2473
            self.match(XplorMRParser.Equ_op_VE)
            self.state = 2474
            self.evaluate_operation()
            self.state = 2475
            self.match(XplorMRParser.R_paren_VE)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Evaluate_operationContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def vflc(self):
            return self.getTypedRuleContext(XplorMRParser.VflcContext,0)


        def evaluate_operation(self):
            return self.getTypedRuleContext(XplorMRParser.Evaluate_operationContext,0)


        def Add_op_VE(self):
            return self.getToken(XplorMRParser.Add_op_VE, 0)

        def Sub_op_VE(self):
            return self.getToken(XplorMRParser.Sub_op_VE, 0)

        def Mul_op_VE(self):
            return self.getToken(XplorMRParser.Mul_op_VE, 0)

        def Div_op_VE(self):
            return self.getToken(XplorMRParser.Div_op_VE, 0)

        def Exp_op_VE(self):
            return self.getToken(XplorMRParser.Exp_op_VE, 0)

        def getRuleIndex(self):
            return XplorMRParser.RULE_evaluate_operation

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterEvaluate_operation" ):
                listener.enterEvaluate_operation(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitEvaluate_operation" ):
                listener.exitEvaluate_operation(self)




    def evaluate_operation(self):

        localctx = XplorMRParser.Evaluate_operationContext(self, self._ctx, self.state)
        self.enterRule(localctx, 216, self.RULE_evaluate_operation)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2477
            self.vflc()
            self.state = 2480
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if ((((_la - 229)) & ~0x3f) == 0 and ((1 << (_la - 229)) & ((1 << (XplorMRParser.Add_op_VE - 229)) | (1 << (XplorMRParser.Sub_op_VE - 229)) | (1 << (XplorMRParser.Mul_op_VE - 229)) | (1 << (XplorMRParser.Div_op_VE - 229)) | (1 << (XplorMRParser.Exp_op_VE - 229)))) != 0):
                self.state = 2478
                _la = self._input.LA(1)
                if not(((((_la - 229)) & ~0x3f) == 0 and ((1 << (_la - 229)) & ((1 << (XplorMRParser.Add_op_VE - 229)) | (1 << (XplorMRParser.Sub_op_VE - 229)) | (1 << (XplorMRParser.Mul_op_VE - 229)) | (1 << (XplorMRParser.Div_op_VE - 229)) | (1 << (XplorMRParser.Exp_op_VE - 229)))) != 0)):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()
                self.state = 2479
                self.evaluate_operation()


        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Noe_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def noe_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Noe_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Noe_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_noe_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterNoe_assign_loop" ):
                listener.enterNoe_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitNoe_assign_loop" ):
                listener.exitNoe_assign_loop(self)




    def noe_assign_loop(self):

        localctx = XplorMRParser.Noe_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 218, self.RULE_noe_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2482
            self.match(XplorMRParser.For)
            self.state = 2483
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2484
            self.match(XplorMRParser.In_CF)
            self.state = 2485
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2504
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,281,self._ctx)
            if la_ == 1:
                self.state = 2489
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2486
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2491
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2495
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2492
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2497
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2501
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2498
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2503
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2506
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2507
            self.match(XplorMRParser.Loop)
            self.state = 2508
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2513
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2511
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2509
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2510
                    self.noe_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2515
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2516
            self.match(XplorMRParser.End)
            self.state = 2517
            self.match(XplorMRParser.Loop)
            self.state = 2518
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Dihedral_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def dihedral_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Dihedral_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Dihedral_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_dihedral_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterDihedral_assign_loop" ):
                listener.enterDihedral_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitDihedral_assign_loop" ):
                listener.exitDihedral_assign_loop(self)




    def dihedral_assign_loop(self):

        localctx = XplorMRParser.Dihedral_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 220, self.RULE_dihedral_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2520
            self.match(XplorMRParser.For)
            self.state = 2521
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2522
            self.match(XplorMRParser.In_CF)
            self.state = 2523
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2542
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,287,self._ctx)
            if la_ == 1:
                self.state = 2527
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2524
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2529
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2533
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2530
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2535
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2539
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2536
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2541
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2544
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2545
            self.match(XplorMRParser.Loop)
            self.state = 2546
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2551
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2549
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2547
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2548
                    self.dihedral_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2553
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2554
            self.match(XplorMRParser.End)
            self.state = 2555
            self.match(XplorMRParser.Loop)
            self.state = 2556
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Sani_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def sani_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Sani_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Sani_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_sani_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterSani_assign_loop" ):
                listener.enterSani_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitSani_assign_loop" ):
                listener.exitSani_assign_loop(self)




    def sani_assign_loop(self):

        localctx = XplorMRParser.Sani_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 222, self.RULE_sani_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2558
            self.match(XplorMRParser.For)
            self.state = 2559
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2560
            self.match(XplorMRParser.In_CF)
            self.state = 2561
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2580
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,293,self._ctx)
            if la_ == 1:
                self.state = 2565
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2562
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2567
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2571
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2568
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2573
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2577
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2574
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2579
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2582
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2583
            self.match(XplorMRParser.Loop)
            self.state = 2584
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2589
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2587
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2585
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2586
                    self.sani_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2591
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2592
            self.match(XplorMRParser.End)
            self.state = 2593
            self.match(XplorMRParser.Loop)
            self.state = 2594
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Xadc_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def xadc_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Xadc_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Xadc_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_xadc_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterXadc_assign_loop" ):
                listener.enterXadc_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitXadc_assign_loop" ):
                listener.exitXadc_assign_loop(self)




    def xadc_assign_loop(self):

        localctx = XplorMRParser.Xadc_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 224, self.RULE_xadc_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2596
            self.match(XplorMRParser.For)
            self.state = 2597
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2598
            self.match(XplorMRParser.In_CF)
            self.state = 2599
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2618
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,299,self._ctx)
            if la_ == 1:
                self.state = 2603
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2600
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2605
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2609
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2606
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2611
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2615
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2612
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2617
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2620
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2621
            self.match(XplorMRParser.Loop)
            self.state = 2622
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2627
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2625
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2623
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2624
                    self.xadc_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2629
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2630
            self.match(XplorMRParser.End)
            self.state = 2631
            self.match(XplorMRParser.Loop)
            self.state = 2632
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Coup_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def coup_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Coup_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Coup_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_coup_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCoup_assign_loop" ):
                listener.enterCoup_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCoup_assign_loop" ):
                listener.exitCoup_assign_loop(self)




    def coup_assign_loop(self):

        localctx = XplorMRParser.Coup_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 226, self.RULE_coup_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2634
            self.match(XplorMRParser.For)
            self.state = 2635
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2636
            self.match(XplorMRParser.In_CF)
            self.state = 2637
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2656
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,305,self._ctx)
            if la_ == 1:
                self.state = 2641
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2638
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2643
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2647
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2644
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2649
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2653
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2650
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2655
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2658
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2659
            self.match(XplorMRParser.Loop)
            self.state = 2660
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2665
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2663
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2661
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2662
                    self.coup_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2667
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2668
            self.match(XplorMRParser.End)
            self.state = 2669
            self.match(XplorMRParser.Loop)
            self.state = 2670
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Coll_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def coll_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Coll_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Coll_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_coll_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterColl_assign_loop" ):
                listener.enterColl_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitColl_assign_loop" ):
                listener.exitColl_assign_loop(self)




    def coll_assign_loop(self):

        localctx = XplorMRParser.Coll_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 228, self.RULE_coll_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2672
            self.match(XplorMRParser.For)
            self.state = 2673
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2674
            self.match(XplorMRParser.In_CF)
            self.state = 2675
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2694
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,311,self._ctx)
            if la_ == 1:
                self.state = 2679
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2676
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2681
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2685
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2682
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2687
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2691
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2688
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2693
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2696
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2697
            self.match(XplorMRParser.Loop)
            self.state = 2698
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2703
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2701
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2699
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2700
                    self.coll_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2705
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2706
            self.match(XplorMRParser.End)
            self.state = 2707
            self.match(XplorMRParser.Loop)
            self.state = 2708
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Csa_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def csa_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Csa_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Csa_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_csa_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterCsa_assign_loop" ):
                listener.enterCsa_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitCsa_assign_loop" ):
                listener.exitCsa_assign_loop(self)




    def csa_assign_loop(self):

        localctx = XplorMRParser.Csa_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 230, self.RULE_csa_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2710
            self.match(XplorMRParser.For)
            self.state = 2711
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2712
            self.match(XplorMRParser.In_CF)
            self.state = 2713
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2732
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,317,self._ctx)
            if la_ == 1:
                self.state = 2717
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2714
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2719
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2723
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2720
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2725
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2729
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2726
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2731
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2734
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2735
            self.match(XplorMRParser.Loop)
            self.state = 2736
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2741
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2739
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2737
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2738
                    self.csa_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2743
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2744
            self.match(XplorMRParser.End)
            self.state = 2745
            self.match(XplorMRParser.Loop)
            self.state = 2746
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pre_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def pre_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pre_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pre_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_pre_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPre_assign_loop" ):
                listener.enterPre_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPre_assign_loop" ):
                listener.exitPre_assign_loop(self)




    def pre_assign_loop(self):

        localctx = XplorMRParser.Pre_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 232, self.RULE_pre_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2748
            self.match(XplorMRParser.For)
            self.state = 2749
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2750
            self.match(XplorMRParser.In_CF)
            self.state = 2751
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2770
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,323,self._ctx)
            if la_ == 1:
                self.state = 2755
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2752
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2757
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2761
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2758
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2763
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2767
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2764
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2769
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2772
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2773
            self.match(XplorMRParser.Loop)
            self.state = 2774
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2779
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2777
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2775
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2776
                    self.pre_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2781
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2782
            self.match(XplorMRParser.End)
            self.state = 2783
            self.match(XplorMRParser.Loop)
            self.state = 2784
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Pcs_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def pcs_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Pcs_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Pcs_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_pcs_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterPcs_assign_loop" ):
                listener.enterPcs_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitPcs_assign_loop" ):
                listener.exitPcs_assign_loop(self)




    def pcs_assign_loop(self):

        localctx = XplorMRParser.Pcs_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 234, self.RULE_pcs_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2786
            self.match(XplorMRParser.For)
            self.state = 2787
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2788
            self.match(XplorMRParser.In_CF)
            self.state = 2789
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2808
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,329,self._ctx)
            if la_ == 1:
                self.state = 2793
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2790
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2795
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2799
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2796
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2801
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2805
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2802
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2807
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2810
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2811
            self.match(XplorMRParser.Loop)
            self.state = 2812
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2817
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2815
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2813
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2814
                    self.pcs_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2819
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2820
            self.match(XplorMRParser.End)
            self.state = 2821
            self.match(XplorMRParser.Loop)
            self.state = 2822
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Hbond_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def hbond_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_hbond_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHbond_assign_loop" ):
                listener.enterHbond_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHbond_assign_loop" ):
                listener.exitHbond_assign_loop(self)




    def hbond_assign_loop(self):

        localctx = XplorMRParser.Hbond_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 236, self.RULE_hbond_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2824
            self.match(XplorMRParser.For)
            self.state = 2825
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2826
            self.match(XplorMRParser.In_CF)
            self.state = 2827
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2846
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,335,self._ctx)
            if la_ == 1:
                self.state = 2831
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2828
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2833
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2837
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2834
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2839
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2843
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2840
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2845
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2848
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2849
            self.match(XplorMRParser.Loop)
            self.state = 2850
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2855
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2853
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2851
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2852
                    self.hbond_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2857
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2858
            self.match(XplorMRParser.End)
            self.state = 2859
            self.match(XplorMRParser.Loop)
            self.state = 2860
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx


    class Hbond_db_assign_loopContext(ParserRuleContext):
        __slots__ = 'parser'

        def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
            super().__init__(parent, invokingState)
            self.parser = parser

        def For(self):
            return self.getToken(XplorMRParser.For, 0)

        def Symbol_name_CF(self):
            return self.getToken(XplorMRParser.Symbol_name_CF, 0)

        def In_CF(self):
            return self.getToken(XplorMRParser.In_CF, 0)

        def L_paren_CF(self):
            return self.getToken(XplorMRParser.L_paren_CF, 0)

        def R_paren_CF(self):
            return self.getToken(XplorMRParser.R_paren_CF, 0)

        def Loop(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Loop)
            else:
                return self.getToken(XplorMRParser.Loop, i)

        def Simple_name_LL(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_LL)
            else:
                return self.getToken(XplorMRParser.Simple_name_LL, i)

        def End(self):
            return self.getToken(XplorMRParser.End, 0)

        def evaluate_statement(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Evaluate_statementContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Evaluate_statementContext,i)


        def hbond_db_assign(self, i:int=None):
            if i is None:
                return self.getTypedRuleContexts(XplorMRParser.Hbond_db_assignContext)
            else:
                return self.getTypedRuleContext(XplorMRParser.Hbond_db_assignContext,i)


        def Integer_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Integer_CF)
            else:
                return self.getToken(XplorMRParser.Integer_CF, i)

        def Real_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Real_CF)
            else:
                return self.getToken(XplorMRParser.Real_CF, i)

        def Simple_name_CF(self, i:int=None):
            if i is None:
                return self.getTokens(XplorMRParser.Simple_name_CF)
            else:
                return self.getToken(XplorMRParser.Simple_name_CF, i)

        def getRuleIndex(self):
            return XplorMRParser.RULE_hbond_db_assign_loop

        def enterRule(self, listener:ParseTreeListener):
            if hasattr( listener, "enterHbond_db_assign_loop" ):
                listener.enterHbond_db_assign_loop(self)

        def exitRule(self, listener:ParseTreeListener):
            if hasattr( listener, "exitHbond_db_assign_loop" ):
                listener.exitHbond_db_assign_loop(self)




    def hbond_db_assign_loop(self):

        localctx = XplorMRParser.Hbond_db_assign_loopContext(self, self._ctx, self.state)
        self.enterRule(localctx, 238, self.RULE_hbond_db_assign_loop)
        self._la = 0 # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2862
            self.match(XplorMRParser.For)
            self.state = 2863
            self.match(XplorMRParser.Symbol_name_CF)
            self.state = 2864
            self.match(XplorMRParser.In_CF)
            self.state = 2865
            self.match(XplorMRParser.L_paren_CF)
            self.state = 2884
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input,341,self._ctx)
            if la_ == 1:
                self.state = 2869
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Integer_CF:
                    self.state = 2866
                    self.match(XplorMRParser.Integer_CF)
                    self.state = 2871
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.state = 2875
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Real_CF:
                    self.state = 2872
                    self.match(XplorMRParser.Real_CF)
                    self.state = 2877
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.state = 2881
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la==XplorMRParser.Simple_name_CF:
                    self.state = 2878
                    self.match(XplorMRParser.Simple_name_CF)
                    self.state = 2883
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass


            self.state = 2886
            self.match(XplorMRParser.R_paren_CF)
            self.state = 2887
            self.match(XplorMRParser.Loop)
            self.state = 2888
            self.match(XplorMRParser.Simple_name_LL)
            self.state = 2893
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la==XplorMRParser.Assign or _la==XplorMRParser.Evaluate_Lp:
                self.state = 2891
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [XplorMRParser.Evaluate_Lp]:
                    self.state = 2889
                    self.evaluate_statement()
                    pass
                elif token in [XplorMRParser.Assign]:
                    self.state = 2890
                    self.hbond_db_assign()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 2895
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 2896
            self.match(XplorMRParser.End)
            self.state = 2897
            self.match(XplorMRParser.Loop)
            self.state = 2898
            self.match(XplorMRParser.Simple_name_LL)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx



    def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int):
        if self._predicates == None:
            self._predicates = dict()
        self._predicates[94] = self.factor_sempred
        pred = self._predicates.get(ruleIndex, None)
        if pred is None:
            raise Exception("No predicate with index:" + str(ruleIndex))
        else:
            return pred(localctx, predIndex)

    def factor_sempred(self, localctx:FactorContext, predIndex:int):
            if predIndex == 0:
                return self.precpred(self._ctx, 32)
         

            if predIndex == 1:
                return self.precpred(self._ctx, 14)
         




