Support for some CharsDefn

diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 04e713f..353c4fa 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -204,11 +204,11 @@
 
 
 
-#define	YYFINAL		423
+#define	YYFINAL		437
 #define	YYFLAG		-32768
 #define	YYNTBASE	116
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 219)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 220)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -265,133 +265,136 @@
    327,   334,   341,   343,   348,   353,   355,   359,   361,   365,
    369,   373,   375,   379,   381,   385,   387,   389,   391,   393,
    398,   402,   403,   407,   409,   411,   413,   415,   417,   419,
-   421,   423,   425,   429,   431,   434,   436,   438,   440,   442,
-   445,   448,   450,   452,   455,   458,   460,   462,   464,   466,
-   468,   471,   473,   476,   478,   480,   482,   484,   486,   488,
-   490,   492,   494,   496,   498,   500,   502,   504,   506,   508,
-   510,   512,   514,   515,   517,   519,   524,   528,   533,   535,
-   539,   545,   547,   551,   555,   559,   564,   568,   570,   572,
-   576,   580,   584,   588,   590,   592,   593,   599,   601,   604,
-   607,   611,   613,   615,   617,   619,   621,   623,   625,   627,
-   633,   635,   639,   641,   645,   646,   648,   650,   652,   654,
-   656,   658,   662,   667,   669,   673,   676,   680,   682,   686,
-   687,   689,   691,   694,   697,   701,   703,   707,   709,   714,
-   719,   721,   723,   725,   727,   728,   730,   733,   738,   739,
-   741,   743,   745,   746,   748,   750,   752,   754,   756,   757,
-   759
+   421,   423,   425,   429,   431,   437,   447,   449,   452,   454,
+   456,   458,   460,   463,   466,   468,   470,   473,   476,   478,
+   480,   482,   484,   486,   489,   491,   494,   496,   498,   500,
+   502,   504,   506,   508,   510,   512,   514,   516,   518,   520,
+   522,   524,   526,   528,   530,   532,   533,   535,   537,   542,
+   546,   551,   553,   557,   563,   565,   569,   573,   577,   581,
+   586,   590,   592,   594,   598,   602,   606,   610,   612,   614,
+   615,   621,   623,   626,   629,   633,   635,   637,   639,   641,
+   643,   645,   647,   649,   655,   657,   661,   663,   667,   668,
+   670,   672,   674,   676,   678,   680,   684,   689,   691,   695,
+   698,   702,   704,   708,   709,   711,   713,   716,   719,   723,
+   725,   729,   731,   736,   741,   743,   745,   747,   749,   750,
+   752,   755,   760,   761,   763,   765,   767,   768,   770,   772,
+   774,   776,   778,   779,   781
 };
 
 static const short yyrhs[] = {   117,
-     0,   118,     0,   117,   118,     0,   215,   119,    34,   123,
+     0,   118,     0,   117,   118,     0,   216,   119,    34,   123,
      3,    21,   126,    39,     0,     0,   120,     0,   103,   121,
    104,     0,   103,   104,     0,   122,     0,   121,   122,     0,
-   218,     0,   218,   105,     9,   106,     0,     9,     0,     0,
+   219,     0,   219,   105,     9,   106,     0,     9,     0,     0,
    124,     0,   125,     0,   124,   125,     0,    41,    84,     0,
     52,    84,     0,    20,    84,     0,    43,    53,     0,    12,
     57,     0,     0,   127,     0,   128,     0,   127,   128,     0,
    130,     0,   135,     0,   143,     0,   170,     0,   138,     0,
-     0,    38,    12,   129,     0,   178,     0,    54,   131,   107,
+     0,    38,    12,   129,     0,   179,     0,    54,   131,   107,
      0,    54,    46,     0,   132,     0,   131,   132,     0,   133,
-    46,   215,   119,     0,   134,     0,   133,   108,   134,     0,
-   215,     0,   215,   103,   104,     0,   218,     0,    42,   136,
+    46,   216,   119,     0,   134,     0,   133,   108,   134,     0,
+   216,     0,   216,   103,   104,     0,   219,     0,    42,   136,
    107,     0,    42,    17,   107,     0,    42,   107,     0,   137,
-     0,   136,   108,   137,     0,   215,     0,   215,   103,   104,
-     0,   218,     0,   215,   139,     3,   103,   140,   104,     0,
-   165,     0,   175,     0,     0,   141,     0,   142,     0,   141,
-   108,   142,     0,   102,     0,   186,     0,   215,     3,   210,
-    87,     0,   215,     3,   163,     0,   215,     3,   153,     0,
-   215,   103,   144,   104,     3,   163,     0,   145,     0,   144,
-   108,   145,     0,   215,     0,   215,   109,   218,     0,   215,
-   109,   215,     0,   175,   109,   218,     0,   147,     0,   146,
-   108,   147,     0,   163,     0,   218,     0,     0,   149,     0,
-   150,     0,   149,   108,   150,     0,   218,   163,   204,     0,
+     0,   136,   108,   137,     0,   216,     0,   216,   103,   104,
+     0,   219,     0,   216,   139,     3,   103,   140,   104,     0,
+   165,     0,   176,     0,     0,   141,     0,   142,     0,   141,
+   108,   142,     0,   102,     0,   187,     0,   216,     3,   211,
+    87,     0,   216,     3,   163,     0,   216,     3,   153,     0,
+   216,   103,   144,   104,     3,   163,     0,   145,     0,   144,
+   108,   145,     0,   216,     0,   216,   109,   219,     0,   216,
+   109,   216,     0,   176,   109,   219,     0,   147,     0,   146,
+   108,   147,     0,   163,     0,   219,     0,     0,   149,     0,
+   150,     0,   149,   108,   150,     0,   219,   163,   205,     0,
     30,    68,   163,     0,   162,     0,   152,     0,   151,   108,
-   152,     0,   218,   163,     0,   162,     0,    28,   103,   155,
+   152,     0,   219,   163,     0,   162,     0,    28,   103,   155,
    104,   157,     0,     0,    88,     0,   156,     0,   155,   108,
-   156,     0,   168,   204,     0,   168,   163,   154,   204,     0,
-   168,   168,   154,   204,     0,     0,   158,     0,     0,    95,
+   156,     0,   168,   205,     0,   168,   163,   154,   205,     0,
+   168,   168,   154,   205,     0,     0,   158,     0,     0,    95,
     82,   103,   159,   160,   104,     0,   161,     0,   160,   161,
      0,     4,     0,   168,     0,   102,     0,   102,   110,   173,
-     0,   102,   110,   209,     0,   210,   164,   182,     0,   177,
+     0,   102,   110,   210,     0,   211,   164,   183,     0,   178,
      0,    27,   103,   151,   104,     0,    78,   103,   148,   104,
-     0,    79,   103,   148,   104,     0,    78,   182,    68,   217,
-   210,   164,     0,    79,   182,    68,   217,   210,   164,     0,
-    18,     0,    18,    35,    25,   218,     0,   215,   103,   146,
+     0,    79,   103,   148,   104,     0,    78,   183,    68,   218,
+   211,   164,     0,    79,   183,    68,   218,   211,   164,     0,
+    18,     0,    18,    35,    25,   219,     0,   216,   103,   146,
    104,     0,   165,     0,    56,    68,   165,     0,    11,     0,
-    11,   111,   215,     0,   216,   111,   215,     0,    11,   111,
-   218,     0,   216,     0,   216,   111,   166,     0,   167,     0,
+    11,   111,   216,     0,   217,   111,   216,     0,    11,   111,
+   219,     0,   217,     0,   217,   111,   166,     0,   167,     0,
    166,   111,   167,     0,   169,     0,   169,     0,    13,     0,
-    14,     0,   218,   139,     3,   171,     0,   218,   109,   171,
-     0,     0,   103,   172,   174,     0,    63,     0,    45,     0,
-    86,     0,     5,     0,     7,     0,     6,     0,   209,     0,
-   173,     0,   218,     0,   215,   111,   218,     0,     4,     0,
-   174,     4,     0,    24,     0,    63,     0,    76,     0,   176,
-     0,    67,    81,     0,    65,    51,     0,    77,     0,    44,
-     0,    36,    71,     0,    26,    81,     0,    91,     0,    47,
-     0,   178,     0,    58,     0,    40,     0,    22,    81,     0,
-   175,     0,   176,   206,     0,    23,     0,    48,     0,    49,
-     0,    50,     0,    59,     0,    64,     0,    74,     0,    83,
-     0,    85,     0,    90,     0,    92,     0,    93,     0,    94,
-     0,    66,     0,    99,     0,   100,     0,    97,     0,    98,
-     0,    96,     0,     0,   183,     0,   184,     0,    80,   105,
-   185,   106,     0,   105,   185,   106,     0,   184,   105,   185,
-   106,     0,   186,     0,   186,   108,   102,     0,   186,   108,
-   102,   108,   186,     0,   187,     0,   186,   179,   187,     0,
-   186,   180,   187,     0,   187,   181,   187,     0,   190,   105,
-   185,   106,     0,   105,   185,   106,     0,   191,     0,   192,
-     0,   191,   189,   191,     0,    61,   189,   191,     0,   191,
-   189,    60,     0,    61,   189,    60,     0,   198,     0,   193,
-     0,     0,    31,    25,   103,   188,   174,     0,   101,     0,
-   101,   112,     0,   112,   101,     0,   112,   101,   112,     0,
-    80,     0,    46,     0,    45,     0,    86,     0,   209,     0,
-     6,     0,   218,     0,   215,     0,    95,    30,   103,   194,
-   104,     0,   195,     0,   194,   108,   195,     0,   102,     0,
-   218,   182,   196,     0,     0,   197,     0,    73,     0,    15,
-     0,    69,     0,   199,     0,   200,     0,   103,   215,   104,
-     0,   199,   103,   201,   104,     0,   202,     0,   201,   108,
-   202,     0,   113,   203,     0,   113,   111,   203,     0,   218,
-     0,   203,   111,   218,     0,     0,   205,     0,    69,     0,
-    33,   171,     0,   103,   104,     0,   103,   207,   104,     0,
-   208,     0,   207,   108,   208,     0,   218,     0,   218,   105,
-   209,   106,     0,   218,   105,   173,   106,     0,   209,     0,
-   102,     0,     9,     0,    10,     0,     0,   211,     0,   212,
-   214,     0,   114,   213,     9,   115,     0,     0,    89,     0,
-    19,     0,    75,     0,     0,    52,     0,    41,     0,    11,
-     0,    12,     0,    12,     0,     0,   218,     0,     8,     0
+    14,     0,   219,   139,     3,   171,     0,   219,   109,   171,
+     0,     0,   103,   172,   175,     0,    63,     0,    45,     0,
+    86,     0,     5,     0,     7,     0,   174,     0,   210,     0,
+   173,     0,   219,     0,   216,   111,   219,     0,     6,     0,
+   103,     9,   108,     9,   104,     0,   103,     9,   108,     9,
+   108,     9,   108,     9,   104,     0,     4,     0,   175,     4,
+     0,    24,     0,    63,     0,    76,     0,   177,     0,    67,
+    81,     0,    65,    51,     0,    77,     0,    44,     0,    36,
+    71,     0,    26,    81,     0,    91,     0,    47,     0,   179,
+     0,    58,     0,    40,     0,    22,    81,     0,   176,     0,
+   177,   207,     0,    23,     0,    48,     0,    49,     0,    50,
+     0,    59,     0,    64,     0,    74,     0,    83,     0,    85,
+     0,    90,     0,    92,     0,    93,     0,    94,     0,    66,
+     0,    99,     0,   100,     0,    97,     0,    98,     0,    96,
+     0,     0,   184,     0,   185,     0,    80,   105,   186,   106,
+     0,   105,   186,   106,     0,   185,   105,   186,   106,     0,
+   187,     0,   187,   108,   102,     0,   187,   108,   102,   108,
+   187,     0,   188,     0,    17,    96,   188,     0,   187,   180,
+   188,     0,   187,   181,   188,     0,   188,   182,   188,     0,
+   191,   105,   186,   106,     0,   105,   186,   106,     0,   192,
+     0,   193,     0,   192,   190,   192,     0,    61,   190,   192,
+     0,   192,   190,    60,     0,    61,   190,    60,     0,   199,
+     0,   194,     0,     0,    31,    25,   103,   189,   175,     0,
+   101,     0,   101,   112,     0,   112,   101,     0,   112,   101,
+   112,     0,    80,     0,    46,     0,    45,     0,    86,     0,
+   210,     0,   174,     0,   219,     0,   216,     0,    95,    30,
+   103,   195,   104,     0,   196,     0,   195,   108,   196,     0,
+   102,     0,   219,   183,   197,     0,     0,   198,     0,    73,
+     0,    15,     0,    69,     0,   200,     0,   201,     0,   103,
+   216,   104,     0,   200,   103,   202,   104,     0,   203,     0,
+   202,   108,   203,     0,   113,   204,     0,   113,   111,   204,
+     0,   219,     0,   204,   111,   219,     0,     0,   206,     0,
+    69,     0,    33,   171,     0,   103,   104,     0,   103,   208,
+   104,     0,   209,     0,   208,   108,   209,     0,   219,     0,
+   219,   105,   210,   106,     0,   219,   105,   173,   106,     0,
+   210,     0,   102,     0,     9,     0,    10,     0,     0,   212,
+     0,   213,   215,     0,   114,   214,     9,   115,     0,     0,
+    89,     0,    19,     0,    75,     0,     0,    52,     0,    41,
+     0,    11,     0,    12,     0,    12,     0,     0,   219,     0,
+     8,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   302,   308,   314,   330,   355,   357,   360,   364,   369,   376,
-   384,   389,   393,   402,   404,   412,   416,   424,   428,   431,
-   434,   438,   458,   460,   468,   472,   504,   508,   517,   524,
-   537,   544,   546,   558,   571,   578,   583,   589,   595,   604,
-   610,   616,   623,   629,   637,   641,   644,   651,   657,   663,
-   670,   676,   685,   695,   703,   711,   713,   723,   726,   730,
-   733,   745,   757,   763,   779,   788,   798,   808,   813,   820,
-   827,   837,   843,   849,   853,   876,   878,   880,   886,   892,
-   899,   906,   911,   917,   923,   929,   934,   944,   946,   949,
-   957,   963,   972,   978,   995,   997,  1002,  1006,  1011,  1016,
-  1022,  1026,  1037,  1046,  1055,  1066,  1088,  1092,  1098,  1104,
-  1110,  1120,  1130,  1136,  1150,  1174,  1181,  1195,  1204,  1214,
-  1224,  1234,  1242,  1263,  1272,  1281,  1282,  1284,  1291,  1303,
-  1313,  1321,  1321,  1326,  1331,  1336,  1341,  1345,  1349,  1353,
-  1356,  1361,  1373,  1389,  1399,  1413,  1415,  1416,  1417,  1418,
-  1419,  1420,  1421,  1422,  1423,  1424,  1425,  1426,  1432,  1434,
-  1435,  1438,  1445,  1457,  1459,  1463,  1467,  1468,  1469,  1470,
-  1471,  1475,  1476,  1477,  1478,  1482,  1483,  1490,  1490,  1491,
-  1491,  1492,  1494,  1496,  1501,  1505,  1514,  1518,  1523,  1527,
-  1533,  1543,  1547,  1550,  1553,  1558,  1567,  1575,  1581,  1587,
-  1594,  1602,  1610,  1619,  1622,  1625,  1626,  1636,  1638,  1639,
-  1640,  1643,  1647,  1652,  1658,  1663,  1666,  1670,  1683,  1697,
-  1703,  1707,  1712,  1718,  1730,  1732,  1735,  1739,  1742,  1747,
-  1751,  1759,  1774,  1780,  1787,  1800,  1812,  1827,  1831,  1848,
-  1853,  1856,  1861,  1883,  1888,  1893,  1899,  1905,  1913,  1921,
-  1929,  1936,  1946,  1951,  1981,  1983,  1986,  1993,  1999,  2001,
-  2002,  2003,  2006,  2008,  2009,  2012,  2017,  2024,  2031,  2033,
-  2037
+   303,   309,   315,   331,   356,   358,   361,   365,   370,   377,
+   385,   390,   394,   403,   405,   413,   417,   425,   429,   432,
+   435,   439,   459,   461,   469,   473,   505,   509,   518,   525,
+   538,   545,   547,   559,   572,   579,   584,   590,   596,   605,
+   611,   617,   624,   630,   638,   642,   645,   652,   658,   664,
+   671,   677,   686,   696,   704,   712,   714,   724,   727,   731,
+   734,   746,   758,   764,   780,   789,   799,   809,   814,   821,
+   828,   838,   844,   850,   854,   877,   879,   881,   887,   893,
+   900,   907,   912,   918,   924,   930,   935,   945,   947,   950,
+   958,   964,   973,   979,   996,   998,  1003,  1007,  1012,  1017,
+  1023,  1027,  1038,  1047,  1056,  1067,  1089,  1093,  1099,  1105,
+  1111,  1121,  1131,  1137,  1151,  1175,  1182,  1196,  1205,  1215,
+  1225,  1235,  1243,  1264,  1273,  1282,  1283,  1285,  1292,  1304,
+  1314,  1322,  1322,  1327,  1332,  1337,  1342,  1346,  1350,  1353,
+  1356,  1361,  1373,  1390,  1395,  1405,  1421,  1431,  1445,  1447,
+  1448,  1449,  1450,  1451,  1452,  1453,  1454,  1455,  1456,  1457,
+  1458,  1464,  1466,  1467,  1470,  1477,  1489,  1491,  1495,  1499,
+  1500,  1501,  1502,  1503,  1507,  1508,  1509,  1510,  1514,  1515,
+  1522,  1522,  1523,  1523,  1524,  1526,  1528,  1533,  1537,  1546,
+  1550,  1555,  1559,  1565,  1575,  1579,  1582,  1585,  1588,  1593,
+  1602,  1610,  1616,  1622,  1629,  1637,  1645,  1654,  1657,  1660,
+  1661,  1671,  1673,  1674,  1675,  1678,  1682,  1687,  1693,  1698,
+  1701,  1704,  1717,  1731,  1737,  1741,  1746,  1752,  1764,  1766,
+  1769,  1773,  1776,  1781,  1785,  1793,  1808,  1814,  1821,  1834,
+  1846,  1861,  1865,  1882,  1887,  1890,  1895,  1917,  1922,  1927,
+  1933,  1939,  1947,  1955,  1963,  1970,  1980,  1985,  2015,  2017,
+  2020,  2027,  2033,  2035,  2036,  2037,  2040,  2042,  2043,  2046,
+  2051,  2058,  2065,  2067,  2071
 };
 #endif
 
@@ -431,16 +434,16 @@
 "WithSyntax","@2","WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException",
 "Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
 "ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
-"Value","@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
-"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
-"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
-"@4","ConstraintRangeSpec","ConstraintSpec","SingleValue","ContainedSubtype",
-"WithComponents","WithComponentsList","WithComponentsElement","optPresenceConstraint",
-"PresenceConstraint","TableConstraint","SimpleTableConstraint","ComponentRelationConstraint",
-"AtNotationList","AtNotationElement","ComponentIdList","optMarker","Marker",
-"UniverationDefinition","UniverationList","UniverationElement","SignedNumber",
-"optTag","Tag","TagTypeValue","TagClass","TagPlicit","TypeRefName","ObjectClassReference",
-"optIdentifier","Identifier", NULL
+"Value","@3","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
+"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
+"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
+"ElementSetSpec","ConstraintSubtypeElement","@4","ConstraintRangeSpec","ConstraintSpec",
+"SingleValue","ContainedSubtype","WithComponents","WithComponentsList","WithComponentsElement",
+"optPresenceConstraint","PresenceConstraint","TableConstraint","SimpleTableConstraint",
+"ComponentRelationConstraint","AtNotationList","AtNotationElement","ComponentIdList",
+"optMarker","Marker","UniverationDefinition","UniverationList","UniverationElement",
+"SignedNumber","optTag","Tag","TagTypeValue","TagClass","TagPlicit","TypeRefName",
+"ObjectClassReference","optIdentifier","Identifier", NULL
 };
 #endif
 
@@ -459,20 +462,20 @@
    164,   164,   164,   164,   164,   164,   164,   165,   165,   165,
    165,   165,   165,   166,   166,   167,   168,   169,   169,   170,
    171,   172,   171,   171,   171,   171,   171,   171,   171,   171,
-   171,   173,   173,   174,   174,   175,   175,   175,   175,   175,
-   175,   175,   175,   175,   175,   175,   175,   175,   176,   176,
-   176,   177,   177,   178,   178,   178,   178,   178,   178,   178,
-   178,   178,   178,   178,   178,   178,   178,   179,   179,   180,
-   180,   181,   182,   182,   183,   183,   184,   184,   185,   185,
-   185,   186,   186,   186,   186,   187,   187,   187,   187,   187,
-   187,   187,   187,   187,   187,   188,   187,   189,   189,   189,
-   189,   190,   190,   191,   191,   191,   191,   191,   192,   193,
-   194,   194,   195,   195,   196,   196,   197,   197,   197,   198,
-   198,   199,   200,   201,   201,   202,   202,   203,   203,   204,
-   204,   205,   205,   206,   206,   207,   207,   208,   208,   208,
-   208,   208,   209,   209,   210,   210,   211,   212,   213,   213,
-   213,   213,   214,   214,   214,   215,   215,   216,   217,   217,
-   218
+   171,   173,   173,   174,   174,   174,   175,   175,   176,   176,
+   176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
+   176,   177,   177,   177,   178,   178,   179,   179,   179,   179,
+   179,   179,   179,   179,   179,   179,   179,   179,   179,   179,
+   180,   180,   181,   181,   182,   183,   183,   184,   184,   185,
+   185,   186,   186,   186,   187,   187,   187,   187,   187,   188,
+   188,   188,   188,   188,   188,   188,   188,   188,   188,   189,
+   188,   190,   190,   190,   190,   191,   191,   192,   192,   192,
+   192,   192,   193,   194,   195,   195,   196,   196,   197,   197,
+   198,   198,   198,   199,   199,   200,   201,   202,   202,   203,
+   203,   204,   204,   205,   205,   206,   206,   207,   207,   208,
+   208,   209,   209,   209,   209,   209,   210,   210,   211,   211,
+   212,   213,   214,   214,   214,   214,   215,   215,   215,   216,
+   216,   217,   218,   218,   219
 };
 
 static const short yyr2[] = {     0,
@@ -490,316 +493,330 @@
      6,     6,     1,     4,     4,     1,     3,     1,     3,     3,
      3,     1,     3,     1,     3,     1,     1,     1,     1,     4,
      3,     0,     3,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     3,     1,     2,     1,     1,     1,     1,     2,
-     2,     1,     1,     2,     2,     1,     1,     1,     1,     1,
-     2,     1,     2,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     3,     1,     5,     9,     1,     2,     1,     1,
+     1,     1,     2,     2,     1,     1,     2,     2,     1,     1,
+     1,     1,     1,     2,     1,     2,     1,     1,     1,     1,
      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     0,     1,     1,     4,     3,     4,     1,     3,
-     5,     1,     3,     3,     3,     4,     3,     1,     1,     3,
-     3,     3,     3,     1,     1,     0,     5,     1,     2,     2,
-     3,     1,     1,     1,     1,     1,     1,     1,     1,     5,
-     1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
-     1,     3,     4,     1,     3,     2,     3,     1,     3,     0,
-     1,     1,     2,     2,     3,     1,     3,     1,     4,     4,
-     1,     1,     1,     1,     0,     1,     2,     4,     0,     1,
-     1,     1,     0,     1,     1,     1,     1,     1,     0,     1,
-     1
+     1,     1,     1,     1,     1,     0,     1,     1,     4,     3,
+     4,     1,     3,     5,     1,     3,     3,     3,     3,     4,
+     3,     1,     1,     3,     3,     3,     3,     1,     1,     0,
+     5,     1,     2,     2,     3,     1,     1,     1,     1,     1,
+     1,     1,     1,     5,     1,     3,     1,     3,     0,     1,
+     1,     1,     1,     1,     1,     3,     4,     1,     3,     2,
+     3,     1,     3,     0,     1,     1,     2,     2,     3,     1,
+     3,     1,     4,     4,     1,     1,     1,     1,     0,     1,
+     2,     4,     0,     1,     1,     1,     0,     1,     1,     1,
+     1,     1,     0,     1,     1
 };
 
 static const short yydefact[] = {     0,
-   266,   267,     1,     2,     5,     3,     0,     0,     6,   271,
+   270,   271,     1,     2,     5,     3,     0,     0,     6,   275,
     13,     8,     0,     9,    11,    14,     7,    10,     0,     0,
      0,     0,     0,     0,     0,    15,    16,     0,    22,    20,
-    18,    21,    19,     0,    17,    12,    23,   164,     0,     0,
-   165,   166,   167,     0,   168,   169,   177,   170,   171,   172,
-   173,   174,   175,   176,     0,    24,    25,    27,    28,    31,
+    18,    21,    19,     0,    17,    12,    23,   167,     0,     0,
+   168,   169,   170,     0,   171,   172,   180,   173,   174,   175,
+   176,   177,   178,   179,     0,    24,    25,    27,    28,    31,
     29,    30,    34,     0,     0,    32,     0,    47,     0,    48,
     50,    52,    36,     0,    37,     0,    40,    42,    44,     4,
-    26,   255,   118,   268,     0,   146,     0,     0,   160,   153,
-   157,   159,   147,     0,     0,   148,   152,   156,     0,     0,
-    54,    55,   149,   158,   122,     0,    33,    46,    45,     0,
-     0,    35,    38,     0,     0,     0,     0,   259,    64,    63,
-     0,   256,   263,     0,   161,   155,   154,   151,   150,     0,
+    26,   259,   118,   272,     0,   149,     0,     0,   163,   156,
+   160,   162,   150,     0,     0,   151,   155,   159,     0,     0,
+    54,    55,   152,   161,   122,     0,    33,    46,    45,     0,
+     0,    35,    38,     0,     0,     0,     0,   263,    64,    63,
+     0,   260,   267,     0,   164,   158,   157,   154,   153,     0,
     66,     0,    68,     0,     0,     0,    49,    51,     5,    41,
-    43,     0,   261,   262,   260,     0,   118,   268,   113,     0,
-     0,   183,   183,    62,   183,   116,   162,   149,   107,     0,
-   265,   264,   257,   119,   121,     0,     0,     0,     0,    56,
-   128,   129,   123,   124,   126,   120,   137,   139,   138,   253,
-   254,   135,   134,   136,   132,   130,   141,   140,     0,   142,
-    39,     0,    90,   255,   127,     0,     0,     0,     0,     0,
-    76,     0,     0,   184,   185,    76,     0,   106,     0,   163,
-   255,   255,    67,    71,    70,    69,   217,     0,   214,   213,
-     0,   212,   215,     0,    60,     0,     0,     0,    57,    58,
-    61,   192,     0,   198,   199,   205,   204,   230,   231,   216,
-   219,   218,     0,     0,     0,     0,    95,     0,     0,   242,
-    88,    88,    92,   241,     0,   258,     0,   103,     0,    83,
-    86,   255,   117,     0,     0,     0,    77,    78,    82,   255,
-     0,   189,   269,     0,     0,   269,   252,   244,     0,   246,
-   251,   248,     0,    72,    74,    75,    65,     0,   208,     0,
-     0,     0,     0,     0,    53,     0,   180,   181,   178,   179,
-     0,     0,   182,     0,     0,     0,     0,   125,   144,   133,
-   143,   131,     0,    87,    96,    91,   243,    89,   240,   240,
-   114,     0,   108,     0,    85,     0,   255,   109,     0,   240,
-   187,     0,   255,   270,     0,   110,   255,   245,     0,     0,
-   115,   255,   206,   209,   210,   203,   201,     0,   232,   197,
-    59,   193,   194,   195,     0,   202,   200,     0,     0,   234,
-   145,     0,    93,    94,   104,   105,   142,    84,   186,    81,
-    79,    80,   190,     0,   188,     0,   247,     0,     0,    73,
-     0,   211,   223,     0,   221,   183,   196,     0,   236,   238,
-   233,     0,    97,     0,   111,   112,   250,   249,   207,   220,
-     0,   225,   237,     0,   235,     0,   191,   222,   228,   229,
-   227,   224,   226,   239,   101,     0,    99,   102,    98,   100,
-     0,     0,     0
+    43,     0,   265,   266,   264,     0,   118,   272,   113,     0,
+     0,   186,   186,    62,   186,   116,   165,   152,   107,     0,
+   269,   268,   261,   119,   121,     0,     0,     0,     0,    56,
+   128,   129,   123,   124,   126,   120,   137,   144,   138,   257,
+   258,   135,   134,   136,   132,   130,   141,   139,   140,     0,
+   142,    39,     0,    90,   259,   127,     0,     0,     0,     0,
+     0,    76,     0,     0,   187,   188,    76,     0,   106,     0,
+   166,   259,   259,    67,    71,    70,    69,     0,     0,   218,
+   217,     0,   216,   219,     0,    60,     0,     0,     0,    57,
+    58,   221,    61,   195,     0,   202,   203,   209,   208,   234,
+   235,   220,   223,   222,     0,     0,     0,     0,     0,    95,
+     0,     0,   246,    88,    88,    92,   245,     0,   262,     0,
+   103,     0,    83,    86,   259,   117,     0,     0,     0,    77,
+    78,    82,   259,     0,   192,   273,     0,     0,   273,   256,
+   248,     0,   250,   255,   252,     0,    72,    74,    75,    65,
+     0,     0,   212,     0,     0,     0,     0,     0,    53,     0,
+   183,   184,   181,   182,     0,     0,   185,     0,     0,     0,
+     0,   125,     0,   147,   133,   143,   131,     0,    87,    96,
+    91,   247,    89,   244,   244,   114,     0,   108,     0,    85,
+     0,   259,   109,     0,   244,   190,     0,   259,   274,     0,
+   110,   259,   249,     0,     0,   115,   259,   196,   210,   213,
+   214,   207,     0,   205,     0,   236,   201,    59,   197,   198,
+   199,     0,   206,   204,     0,     0,   238,     0,   148,     0,
+    93,    94,   104,   105,   142,    84,   189,    81,    79,    80,
+   193,     0,   191,     0,   251,     0,     0,    73,     0,   215,
+   227,     0,   225,   186,   200,     0,   240,   242,   237,     0,
+   145,     0,    97,     0,   111,   112,   254,   253,   211,   224,
+     0,   229,   241,     0,   239,     0,     0,   194,   226,   232,
+   233,   231,   228,   230,   243,     0,   101,     0,    99,   102,
+     0,    98,   100,   146,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   421,
+static const short yydefgoto[] = {   435,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
     56,    57,   107,    58,    74,    75,    76,    77,    59,    69,
-    70,    60,   100,   228,   229,   230,    61,   130,   131,   283,
-   284,   266,   267,   268,   259,   260,   119,   319,   192,   193,
-   314,   315,   406,   416,   417,   269,   285,   155,   156,   173,
-   174,   194,   195,    62,   186,   244,   187,   310,   157,   103,
-   159,   104,   301,   302,   304,   203,   204,   205,   271,   272,
-   232,   381,   291,   233,   234,   235,   236,   384,   385,   412,
-   413,   237,   238,   239,   359,   360,   389,   253,   254,   210,
-   279,   280,   240,   255,   122,   123,   146,   163,   241,   105,
-   333,   242
+    70,    60,   100,   229,   230,   231,    61,   130,   131,   286,
+   287,   269,   270,   271,   262,   263,   119,   324,   193,   194,
+   319,   320,   417,   428,   429,   272,   288,   155,   156,   173,
+   174,   195,   196,    62,   186,   247,   187,   232,   315,   157,
+   103,   159,   104,   305,   306,   308,   204,   205,   206,   274,
+   275,   234,   389,   295,   235,   236,   237,   238,   392,   393,
+   423,   424,   239,   240,   241,   366,   367,   397,   256,   257,
+   211,   282,   283,   242,   258,   122,   123,   146,   163,   243,
+   105,   338,   244
 };
 
-static const short yypact[] = {   247,
--32768,-32768,   247,-32768,   -74,-32768,    46,    59,-32768,-32768,
--32768,-32768,    49,-32768,   -66,   221,-32768,-32768,    57,    55,
-    75,    83,   119,   104,   195,   221,-32768,   116,-32768,-32768,
--32768,-32768,-32768,   208,-32768,-32768,   427,-32768,   222,    24,
--32768,-32768,-32768,    86,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   209,   427,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   351,   656,-32768,   146,-32768,   189,-32768,
-   162,-32768,-32768,    32,-32768,    -1,-32768,   167,-32768,-32768,
--32768,    -8,   171,-32768,   194,-32768,   203,   223,-32768,-32768,
--32768,-32768,-32768,   249,   225,-32768,-32768,-32768,   731,   299,
--32768,-32768,-32768,-32768,   196,   305,-32768,-32768,-32768,   232,
-   205,-32768,-32768,   247,   232,   210,   213,     6,-32768,-32768,
-   504,-32768,    18,   232,-32768,-32768,-32768,-32768,-32768,    -3,
--32768,   202,   204,   216,   267,   200,-32768,-32768,   -74,-32768,
--32768,   285,-32768,-32768,-32768,   303,   -42,   218,   288,   224,
-   257,   -18,    68,-32768,    71,-32768,-32768,   226,-32768,   227,
--32768,-32768,-32768,-32768,-32768,   323,   731,   320,   232,    80,
--32768,-32768,   220,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   229,   228,
--32768,    61,-32768,     5,-32768,   219,   311,    26,   293,   233,
-    52,   215,   274,-32768,   238,    52,   276,-32768,    43,-32768,
-     8,   231,-32768,-32768,-32768,-32768,-32768,   321,-32768,-32768,
-    -2,-32768,-32768,   317,-32768,   247,   215,   244,   241,-32768,
-   193,   256,   248,    -2,-32768,-32768,-32768,   252,-32768,-32768,
--32768,-32768,   285,   352,   320,   200,   262,   285,   200,-32768,
-   270,   270,-32768,-32768,   581,-32768,   320,   250,    66,-32768,
--32768,   231,-32768,   215,   291,   260,   253,-32768,-32768,   231,
-   261,    81,   320,   215,   265,   320,-32768,-32768,   124,-32768,
--32768,   266,   143,-32768,-32768,-32768,-32768,   263,   258,   271,
-    70,   273,   275,   272,-32768,    80,-32768,-32768,-32768,-32768,
-   215,   215,-32768,   215,   215,   279,   269,-32768,-32768,   376,
--32768,-32768,   301,-32768,-32768,-32768,-32768,-32768,    31,    31,
--32768,   207,-32768,    26,-32768,   278,   231,-32768,    52,    31,
--32768,   283,   231,-32768,   280,-32768,   231,-32768,    38,   207,
--32768,     8,-32768,-32768,   277,-32768,-32768,    42,-32768,-32768,
--32768,-32768,-32768,-32768,   282,-32768,-32768,     7,   163,-32768,
--32768,   287,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   284,   581,-32768,   581,-32768,   290,   297,-32768,
-   352,-32768,-32768,   164,-32768,    71,-32768,   320,   294,-32768,
--32768,   269,-32768,   215,-32768,-32768,-32768,-32768,   376,-32768,
-    42,     2,   294,   320,-32768,   173,   193,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,    10,-32768,-32768,-32768,-32768,
-   393,   406,-32768
+static const short yypact[] = {   203,
+-32768,-32768,   203,-32768,   -62,-32768,    39,    24,-32768,-32768,
+-32768,-32768,    43,-32768,   -31,   138,-32768,-32768,    75,    50,
+    30,    38,   112,    87,   170,   138,-32768,    76,-32768,-32768,
+-32768,-32768,-32768,   187,-32768,-32768,   490,-32768,   213,     9,
+-32768,-32768,-32768,   155,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   172,   490,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   361,   719,-32768,   121,-32768,   149,-32768,
+   143,-32768,-32768,    27,-32768,   -22,-32768,   148,-32768,-32768,
+-32768,   -10,   123,-32768,   173,-32768,   177,   202,-32768,-32768,
+-32768,-32768,-32768,   229,   200,-32768,-32768,-32768,   794,   284,
+-32768,-32768,-32768,-32768,   179,   285,-32768,-32768,-32768,   186,
+   198,-32768,-32768,   203,   186,   201,   205,    10,-32768,-32768,
+   567,-32768,    54,   186,-32768,-32768,-32768,-32768,-32768,   -21,
+-32768,   194,   195,   206,   272,   460,-32768,-32768,   -62,-32768,
+-32768,   247,-32768,-32768,-32768,   297,     8,   207,   276,   210,
+   244,   104,   107,-32768,   -40,-32768,-32768,   212,-32768,   214,
+-32768,-32768,-32768,-32768,-32768,   315,   794,   311,   186,   221,
+-32768,-32768,   219,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   312,-32768,-32768,-32768,-32768,   220,
+   216,-32768,   -15,-32768,    31,-32768,   217,   308,     7,   259,
+   230,    58,   283,   266,-32768,   231,    58,   271,-32768,    53,
+-32768,     6,   227,-32768,-32768,-32768,-32768,   246,   320,-32768,
+-32768,    68,-32768,-32768,   316,-32768,   238,   283,   243,   241,
+-32768,-32768,   199,   254,   248,    68,-32768,-32768,-32768,   249,
+-32768,-32768,-32768,-32768,   247,   251,   347,   311,   460,   260,
+   247,   460,-32768,   268,   268,-32768,-32768,   644,-32768,   311,
+   250,    -3,-32768,-32768,   227,-32768,   283,   286,   253,   257,
+-32768,-32768,   227,   256,    78,   311,   283,   262,   311,-32768,
+-32768,    85,-32768,-32768,   263,    98,-32768,-32768,-32768,-32768,
+   450,   264,   258,   270,    67,   273,   275,   269,-32768,   221,
+-32768,-32768,-32768,-32768,   450,   450,-32768,   450,   283,    88,
+   261,-32768,   368,-32768,   376,-32768,-32768,   299,-32768,-32768,
+-32768,-32768,-32768,     1,     1,-32768,   267,-32768,     7,-32768,
+   287,   227,-32768,    58,     1,-32768,   280,   227,-32768,   288,
+-32768,   227,-32768,    70,   267,-32768,     6,-32768,-32768,-32768,
+   278,-32768,   312,-32768,    47,-32768,-32768,-32768,-32768,-32768,
+-32768,   289,-32768,-32768,    17,   116,-32768,   131,-32768,   293,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   291,   644,-32768,   644,-32768,   296,   300,-32768,   347,-32768,
+-32768,   136,-32768,   -40,-32768,   311,   281,-32768,-32768,   261,
+-32768,   382,-32768,   283,-32768,-32768,-32768,-32768,   376,-32768,
+    47,    95,   281,   311,-32768,   295,   209,   199,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   403,-32768,    55,-32768,-32768,
+   309,-32768,-32768,-32768,   414,   415,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   404,   281,-32768,-32768,   395,-32768,-32768,   385,-32768,
--32768,   356,-32768,-32768,-32768,   339,-32768,   304,-32768,-32768,
-   312,-32768,   358,-32768,-32768,   125,-32768,-32768,   259,-32768,
-    82,   234,-32768,   100,-32768,   106,-32768,   179,-32768,   184,
--32768,-32768,-32768,-32768,    17,  -189,   -78,  -139,   -53,-32768,
-   206,  -186,  -122,-32768,   -56,-32768,  -185,    56,   -43,  -119,
--32768,    40,-32768,-32768,-32768,  -150,-32768,-32768,  -201,  -163,
-  -101,-32768,   212,-32768,  -264,-32768,-32768,-32768,    47,-32768,
--32768,-32768,-32768,-32768,-32768,    60,    63,  -162,-32768,-32768,
--32768,   108,  -126,   -81,-32768,-32768,-32768,-32768,    28,-32768,
-   177,    -7
+-32768,   413,   279,-32768,-32768,   404,-32768,-32768,   395,-32768,
+-32768,   366,-32768,-32768,-32768,   349,-32768,   314,-32768,-32768,
+   321,-32768,   365,-32768,-32768,   132,-32768,-32768,   274,-32768,
+    86,   232,-32768,   100,-32768,   111,-32768,   181,-32768,   191,
+-32768,-32768,-32768,-32768,    15,  -187,   -77,  -228,   -54,-32768,
+   204,  -191,  -122,-32768,  -206,-32768,  -291,  -108,    56,   -42,
+  -120,-32768,    -6,-32768,-32768,-32768,  -146,-32768,-32768,  -196,
+  -168,   -87,-32768,   211,-32768,  -268,-32768,-32768,-32768,    37,
+-32768,-32768,-32768,-32768,-32768,-32768,    57,    77,  -233,-32768,
+-32768,-32768,   106,  -128,   -79,-32768,-32768,-32768,-32768,    16,
+-32768,   184,    -7
 };
 
 
-#define	YYLAST		825
+#define	YYLAST		888
 
 
 static const short yytable[] = {    15,
-   121,   158,   207,   120,   208,    15,   231,   252,   261,   188,
-   101,   101,   175,   415,    10,    10,   409,   171,   172,   117,
-   102,   102,   171,   172,   143,   294,   347,     5,     7,    65,
-     5,    10,    72,    10,     1,     2,    79,   249,    19,    10,
-    67,   357,     1,     2,   114,    10,   180,   181,    65,    10,
-    10,   180,   181,    10,    11,   132,    10,    11,   161,    10,
-  -266,   200,   326,   249,    64,    28,    79,    71,   124,   162,
-   410,    78,   335,   250,   411,   217,    63,    10,   180,   181,
-   144,   265,   281,    64,   201,   217,   202,    10,   180,   181,
-     1,     2,    16,    10,   145,    63,     1,     2,   289,   250,
-   166,    78,    72,   355,   167,   118,   115,    79,  -240,   290,
-   218,    29,  -240,   419,   219,   251,   165,   388,   118,   188,
-   175,   118,   188,   132,   219,   220,   133,   258,   190,   346,
-    68,    73,   231,   287,   261,   158,   365,    71,   112,   277,
-   221,   139,    78,   383,   277,   263,   278,   200,   160,    12,
-   200,   164,    17,   258,   378,   223,   363,   364,    30,   222,
-   214,   216,   176,   189,   247,   223,    31,   372,   248,   323,
-   206,    32,   202,   324,   224,   202,   415,   297,   298,   299,
-   300,   225,   226,   325,   227,   171,   172,    33,   332,   312,
-   262,   330,   317,   270,   133,   366,   215,    34,   270,   352,
-   353,   282,   354,   286,   177,   178,   179,    10,   180,   181,
-     1,     2,   281,   379,    10,   180,   181,     1,     2,   418,
-   217,    36,    10,   180,   181,     1,     2,   338,    37,   418,
-   407,   339,    20,    66,   395,   402,   396,   311,   190,    10,
-    21,   190,     1,     2,   182,   218,   341,    80,   370,   321,
-   342,   374,   108,   293,   158,   376,   158,     1,     2,   219,
-   220,    22,   183,    23,   111,   334,   391,   400,   334,   116,
-   392,   401,    24,   189,   125,   221,   189,     1,     2,   171,
-   172,   124,   160,   126,   217,   184,    10,   180,   181,   297,
-   298,   299,   300,   127,   222,   109,   110,   171,   172,   128,
-   223,   134,   185,    83,    84,   129,   135,   136,   138,   224,
-   168,   196,   169,   141,   367,   142,   262,   226,   170,   227,
-  -267,   270,   197,   219,   199,   212,   198,    10,   209,   211,
-   243,   282,   367,   256,   286,   257,   246,   264,   356,   245,
-   386,   273,   274,   276,   118,   288,   292,   295,   296,   189,
-   390,   303,   305,    82,   307,   309,   313,   318,   327,   322,
-   329,    83,    84,   328,   223,   343,   331,   189,   336,   344,
-   340,   345,    85,    38,    86,   348,    87,   350,   349,   361,
-   390,   358,   362,   369,   373,   375,    88,   387,   382,   393,
-    89,   394,   422,   386,    90,   397,   414,    91,    41,    42,
-    43,   160,   398,   160,   404,   423,     6,    18,    92,    45,
-    35,    81,   113,    93,    46,    94,    47,    95,   140,   191,
-   351,   137,   106,   380,    48,   213,    96,    97,   371,   368,
-   320,   316,   420,    49,    10,    50,   399,     1,     2,   275,
-    51,    98,    52,    53,    54,   306,   377,   408,   308,    38,
-   403,   405,   337,    99,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    39,     0,     0,     0,    40,     0,
-     0,     0,     0,     0,    41,    42,    43,     0,     0,     0,
-    44,     0,     0,     0,     0,    45,     0,     0,     0,     0,
-    46,     0,    47,     0,     0,     0,     0,     0,     0,     0,
-    48,     0,     0,     0,     0,     0,     0,     0,     0,    49,
-     0,    50,     0,     0,   147,   148,    51,     0,    52,    53,
+   158,   233,   121,   255,   120,    15,   208,   189,   209,   101,
+   101,   264,   175,    10,    10,     5,    10,   117,     5,     1,
+     2,   102,   102,   114,    10,    67,   354,   188,   143,    65,
+    63,   298,    72,   252,    10,   373,    79,     1,     2,   201,
+     7,   364,   317,   171,   172,   322,    10,    11,    65,    63,
+    10,    11,    64,   386,    10,    71,   132,    16,   427,    78,
+    10,   180,   181,   252,   203,    10,    79,   171,   172,   253,
+   331,    64,   178,    19,    10,   180,   181,    10,   180,   181,
+   340,   284,   166,    28,   144,   115,   167,   268,   250,    78,
+   371,   372,   251,   178,   161,    10,   180,   181,   145,   253,
+   328,   380,    72,   118,   329,   162,    29,    79,   261,   420,
+  -270,   220,   362,    30,   133,    68,   165,   254,   124,   118,
+   189,    31,   175,   189,   132,    71,   352,   396,   191,   139,
+    78,   233,   220,   112,  -244,   290,   160,   158,  -244,   164,
+   188,   264,    12,   188,   118,   266,    17,   363,   391,    20,
+   176,   190,   224,   405,   280,   406,   281,    21,   432,   261,
+   215,   217,    10,   421,    32,     1,     2,   422,   293,   353,
+    33,   280,    34,   224,   301,   302,   303,   304,    22,   294,
+    23,    36,   133,   201,   216,   337,   201,   330,   343,    24,
+   353,   265,   344,    10,   273,   335,     1,     2,   374,   273,
+    73,   346,   285,   348,   289,   347,   202,    37,   203,   207,
+    80,   203,   427,     1,     2,   284,   387,   359,   360,   399,
+   361,   171,   172,   400,    66,   430,   178,   108,    10,   180,
+   181,     1,     2,   124,   401,   418,   430,   218,   402,   410,
+   316,   191,   297,   411,   191,   111,   246,   412,     1,     2,
+   116,   219,   326,   125,   378,   109,   110,   126,   382,   171,
+   172,   158,   384,   158,   190,   220,   221,   190,   339,    83,
+    84,   339,   127,   160,    10,   180,   181,     1,     2,   128,
+   129,   222,     1,     2,   171,   172,   134,   136,   178,   135,
+    10,   180,   181,     1,     2,   301,   302,   303,   304,   218,
+   223,   138,   168,   169,   141,   197,   224,   142,   170,  -271,
+   198,   200,   199,   219,   210,   225,   212,   213,    10,   375,
+   246,   265,   226,   227,   249,   228,   273,   220,   221,   245,
+   248,   259,   260,   276,   267,   277,   285,   375,   279,   289,
+   118,   291,   190,   222,   292,   296,   299,   394,   300,   307,
+   314,   311,   309,   332,   318,   323,   333,   398,   313,   327,
+   190,   336,   223,    82,   334,   341,   349,   345,   224,   350,
+   351,    83,    84,   365,   357,   355,   368,   225,   356,   369,
+   370,   381,    85,    38,    86,   227,    87,   228,   398,   390,
+   416,   414,   377,   383,   395,   403,    88,   160,   404,   160,
+    89,   407,   426,   394,    90,   408,   425,    91,    41,    42,
+    43,   431,   434,   436,   437,     6,    18,   192,    92,    45,
+    35,    81,   113,    93,    46,    94,    47,    95,   140,   106,
+   137,   358,   388,   379,    48,   325,    96,    97,   278,   376,
+   214,   321,   433,    49,   409,    50,   310,   419,   312,   385,
+    51,    98,    52,    53,    54,   178,   415,    10,   180,   181,
+     1,     2,   342,    99,   177,   178,   179,    10,   180,   181,
+     1,     2,   413,     0,     0,     0,     0,     0,     0,     0,
+   219,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   220,   221,     0,    10,     0,     0,
+     1,     2,     0,     0,   182,     0,     0,     0,     0,     0,
+   222,     0,    38,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   183,     0,     0,     0,     0,    39,     0,   223,
+     0,    40,     0,     0,     0,   224,     0,    41,    42,    43,
+     0,     0,     0,    44,   225,   184,     0,     0,    45,     0,
+     0,     0,   227,    46,   228,    47,     0,     0,     0,     0,
+     0,     0,   185,    48,     0,     0,     0,     0,     0,     0,
+     0,     0,    49,     0,    50,     0,     0,   147,   148,    51,
+     0,    52,    53,    54,   149,     0,     0,     0,    85,    38,
+    86,     0,    87,   150,     0,     0,     0,     0,     0,     0,
+     0,     0,    88,     0,     0,     0,    89,     0,     0,     0,
+    90,     0,     0,    91,    41,    42,    43,     0,     0,     0,
+     0,     0,   151,     0,    92,    45,     0,     0,     0,    93,
+    46,    94,    47,    95,     0,     0,     0,     0,     0,     0,
+    48,     0,    96,    97,   152,   153,     0,     0,     0,    49,
+     0,    50,     0,   154,   147,   148,    51,    98,    52,    53,
     54,   149,     0,     0,     0,    85,    38,    86,     0,    87,
    150,     0,     0,     0,     0,     0,     0,     0,     0,    88,
      0,     0,     0,    89,     0,     0,     0,    90,     0,     0,
     91,    41,    42,    43,     0,     0,     0,     0,     0,   151,
      0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
     95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
-    97,   152,   153,     0,     0,     0,    49,     0,    50,     0,
-   154,   147,   148,    51,    98,    52,    53,    54,   149,     0,
-     0,     0,    85,    38,    86,     0,    87,   150,     0,     0,
-     0,     0,     0,     0,     0,     0,    88,     0,     0,     0,
-    89,     0,     0,     0,    90,     0,     0,    91,    41,    42,
-    43,     0,     0,     0,     0,     0,   151,     0,    92,    45,
-     0,     0,     0,    93,    46,    94,    47,    95,     0,     0,
-     0,     0,     0,     0,    48,     0,    96,    97,   152,   153,
-     0,     0,     0,    49,     0,    50,    83,    84,     0,     0,
-    51,    98,    52,    53,    54,     0,     0,    85,    38,    86,
-     0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    88,     0,     0,     0,    89,     0,     0,     0,    90,
-     0,     0,    91,    41,    42,    43,     0,     0,     0,     0,
-     0,     0,     0,    92,    45,     0,     0,     0,    93,    46,
-    94,    47,    95,     0,     0,     0,     0,     0,     0,    48,
-     0,    96,    97,     0,     0,     0,     0,     0,    49,     0,
-    50,     1,     2,     0,     0,    51,    98,    52,    53,    54,
-     0,     0,    85,    38,    86,     0,    87,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    88,     0,     0,     0,
-    89,     0,     0,     0,    90,     0,     0,    91,    41,    42,
-    43,     0,     0,     0,     0,     0,     0,     0,    92,    45,
-     0,     0,     0,    93,    46,    94,    47,    95,     0,     0,
-     0,     0,     0,     0,    48,     0,    96,    97,     0,     0,
-     0,     0,     0,    49,     0,    50,     0,     0,     0,     0,
-    51,    98,    52,    53,    54
+    97,   152,   153,     0,     0,     0,    49,     0,    50,    83,
+    84,     0,     0,    51,    98,    52,    53,    54,     0,     0,
+    85,    38,    86,     0,    87,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    88,     0,     0,     0,    89,     0,
+     0,     0,    90,     0,     0,    91,    41,    42,    43,     0,
+     0,     0,     0,     0,     0,     0,    92,    45,     0,     0,
+     0,    93,    46,    94,    47,    95,     0,     0,     0,     0,
+     0,     0,    48,     0,    96,    97,     0,     0,     0,     0,
+     0,    49,     0,    50,     1,     2,     0,     0,    51,    98,
+    52,    53,    54,     0,     0,    85,    38,    86,     0,    87,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    88,
+     0,     0,     0,    89,     0,     0,     0,    90,     0,     0,
+    91,    41,    42,    43,     0,     0,     0,     0,     0,     0,
+     0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
+    95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
+    97,     0,     0,     0,     0,     0,    49,     0,    50,     0,
+     0,     0,     0,    51,    98,    52,    53,    54
 };
 
 static const short yycheck[] = {     7,
-    82,   121,   153,    82,   155,    13,   170,   194,   198,   136,
-    64,    65,   135,     4,     8,     8,    15,    13,    14,    28,
-    64,    65,    13,    14,    19,   227,   291,     0,   103,    37,
-     3,     8,    40,     8,    11,    12,    44,    33,   105,     8,
-    17,   306,    11,    12,    46,     8,     9,    10,    56,     8,
-     8,     9,    10,     8,     9,    99,     8,     9,    41,     8,
-   103,    80,   264,    33,    37,     9,    74,    40,   111,    52,
-    69,    44,   274,    69,    73,     6,    37,     8,     9,    10,
-    75,    30,   209,    56,   103,     6,   105,     8,     9,    10,
-    11,    12,    34,     8,    89,    56,    11,    12,   101,    69,
-   104,    74,   110,   305,   108,   114,   108,   115,   104,   112,
-    31,    57,   108,   104,    45,   194,   124,   111,   114,   246,
-   243,   114,   249,   167,    45,    46,    99,   102,   136,    60,
-   107,    46,   296,   212,   324,   255,   322,   110,   107,   102,
-    61,   114,   115,   102,   102,   199,   104,    80,   121,   104,
-    80,   124,   104,   102,   340,    86,   319,   320,    84,    80,
-   168,   169,   135,   136,   104,    86,    84,   330,   108,   104,
-   103,    53,   105,   108,    95,   105,     4,    97,    98,    99,
-   100,   102,   103,   262,   105,    13,    14,    84,   108,   246,
-   198,   270,   249,   201,   167,   322,   169,     3,   206,   301,
-   302,   209,   304,   211,     5,     6,     7,     8,     9,    10,
-    11,    12,   339,   340,     8,     9,    10,    11,    12,   406,
-     6,   106,     8,     9,    10,    11,    12,   104,    21,   416,
-   394,   108,    12,    12,   374,   386,   376,   245,   246,     8,
-    20,   249,    11,    12,    45,    31,   104,    39,   327,   257,
-   108,   333,   107,   226,   374,   337,   376,    11,    12,    45,
-    46,    41,    63,    43,   103,   273,   104,   104,   276,   103,
-   108,   108,    52,   246,    81,    61,   249,    11,    12,    13,
-    14,   111,   255,    81,     6,    86,     8,     9,    10,    97,
-    98,    99,   100,    71,    80,   107,   108,    13,    14,    51,
-    86,     3,   103,    11,    12,    81,   111,     3,   104,    95,
-   109,     9,   109,   104,   322,   103,   324,   103,   103,   105,
-   103,   329,    35,    45,    68,     3,   103,     8,   103,   103,
-   111,   339,   340,   115,   342,    25,   109,   105,    60,   111,
-   348,    68,   105,    68,   114,    25,    30,   104,   108,   322,
-   358,    96,   105,     3,   103,     4,    95,    88,    68,   110,
-   108,    11,    12,   104,    86,   103,   106,   340,   104,   112,
-   105,   101,    22,    23,    24,   103,    26,   106,   104,     4,
-   388,   113,    82,   106,   102,   106,    36,   106,   112,   103,
-    40,   108,     0,   401,    44,   106,   404,    47,    48,    49,
-    50,   374,   106,   376,   111,     0,     3,    13,    58,    59,
-    26,    56,    74,    63,    64,    65,    66,    67,   115,   139,
-   296,   110,    65,   342,    74,   167,    76,    77,   329,   324,
-   252,   248,   416,    83,     8,    85,   381,    11,    12,   206,
-    90,    91,    92,    93,    94,   234,   339,   401,   243,    23,
-   388,   392,   276,   103,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    42,    -1,
-    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,
-    54,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
-    64,    -1,    66,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,
-    -1,    85,    -1,    -1,    11,    12,    90,    -1,    92,    93,
+   121,   170,    82,   195,    82,    13,   153,   136,   155,    64,
+    65,   199,   135,     8,     8,     0,     8,    28,     3,    11,
+    12,    64,    65,    46,     8,    17,   295,   136,    19,    37,
+    37,   228,    40,    33,     8,   327,    44,    11,    12,    80,
+   103,   310,   249,    13,    14,   252,     8,     9,    56,    56,
+     8,     9,    37,   345,     8,    40,    99,    34,     4,    44,
+     8,     9,    10,    33,   105,     8,    74,    13,    14,    69,
+   267,    56,     6,   105,     8,     9,    10,     8,     9,    10,
+   277,   210,   104,     9,    75,   108,   108,    30,   104,    74,
+   324,   325,   108,     6,    41,     8,     9,    10,    89,    69,
+   104,   335,   110,   114,   108,    52,    57,   115,   102,    15,
+   103,    45,   309,    84,    99,   107,   124,   195,   111,   114,
+   249,    84,   245,   252,   167,   110,    60,   111,   136,   114,
+   115,   300,    45,   107,   104,   213,   121,   258,   108,   124,
+   249,   329,   104,   252,   114,   200,   104,    60,   102,    12,
+   135,   136,    86,   382,   102,   384,   104,    20,   104,   102,
+   168,   169,     8,    69,    53,    11,    12,    73,   101,   103,
+    84,   102,     3,    86,    97,    98,    99,   100,    41,   112,
+    43,   106,   167,    80,   169,   108,    80,   265,   104,    52,
+   103,   199,   108,     8,   202,   273,    11,    12,   327,   207,
+    46,   104,   210,   291,   212,   108,   103,    21,   105,   103,
+    39,   105,     4,    11,    12,   344,   345,   305,   306,   104,
+   308,    13,    14,   108,    12,   417,     6,   107,     8,     9,
+    10,    11,    12,   111,   104,   404,   428,    17,   108,   104,
+   248,   249,   227,   108,   252,   103,     9,   394,    11,    12,
+   103,    31,   260,    81,   332,   107,   108,    81,   338,    13,
+    14,   382,   342,   384,   249,    45,    46,   252,   276,    11,
+    12,   279,    71,   258,     8,     9,    10,    11,    12,    51,
+    81,    61,    11,    12,    13,    14,     3,     3,     6,   111,
+     8,     9,    10,    11,    12,    97,    98,    99,   100,    17,
+    80,   104,   109,   109,   104,     9,    86,   103,   103,   103,
+    35,    68,   103,    31,   103,    95,   103,     3,     8,   327,
+     9,   329,   102,   103,   109,   105,   334,    45,    46,   111,
+   111,   115,    25,    68,   105,   105,   344,   345,    68,   347,
+   114,    96,   327,    61,    25,    30,   104,   355,   108,    96,
+     4,   103,   105,    68,    95,    88,   104,   365,   108,   110,
+   345,   106,    80,     3,   108,   104,   103,   105,    86,   112,
+   101,    11,    12,   113,   106,   103,     9,    95,   104,     4,
+    82,   102,    22,    23,    24,   103,    26,   105,   396,   112,
+     9,   111,   106,   106,   106,   103,    36,   382,   108,   384,
+    40,   106,   108,   411,    44,   106,   414,    47,    48,    49,
+    50,     9,   104,     0,     0,     3,    13,   139,    58,    59,
+    26,    56,    74,    63,    64,    65,    66,    67,   115,    65,
+   110,   300,   347,   334,    74,   255,    76,    77,   207,   329,
+   167,   251,   428,    83,   389,    85,   236,   411,   245,   344,
+    90,    91,    92,    93,    94,     6,   400,     8,     9,    10,
+    11,    12,   279,   103,     5,     6,     7,     8,     9,    10,
+    11,    12,   396,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    45,    46,    -1,     8,    -1,    -1,
+    11,    12,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,
+    61,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    63,    -1,    -1,    -1,    -1,    38,    -1,    80,
+    -1,    42,    -1,    -1,    -1,    86,    -1,    48,    49,    50,
+    -1,    -1,    -1,    54,    95,    86,    -1,    -1,    59,    -1,
+    -1,    -1,   103,    64,   105,    66,    -1,    -1,    -1,    -1,
+    -1,    -1,   103,    74,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    83,    -1,    85,    -1,    -1,    11,    12,    90,
+    -1,    92,    93,    94,    18,    -1,    -1,    -1,    22,    23,
+    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,    -1,
+    44,    -1,    -1,    47,    48,    49,    50,    -1,    -1,    -1,
+    -1,    -1,    56,    -1,    58,    59,    -1,    -1,    -1,    63,
+    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,
+    74,    -1,    76,    77,    78,    79,    -1,    -1,    -1,    83,
+    -1,    85,    -1,    87,    11,    12,    90,    91,    92,    93,
     94,    18,    -1,    -1,    -1,    22,    23,    24,    -1,    26,
     27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
     -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,    -1,
     47,    48,    49,    50,    -1,    -1,    -1,    -1,    -1,    56,
     -1,    58,    59,    -1,    -1,    -1,    63,    64,    65,    66,
     67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    -1,    76,
-    77,    78,    79,    -1,    -1,    -1,    83,    -1,    85,    -1,
-    87,    11,    12,    90,    91,    92,    93,    94,    18,    -1,
-    -1,    -1,    22,    23,    24,    -1,    26,    27,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
-    40,    -1,    -1,    -1,    44,    -1,    -1,    47,    48,    49,
-    50,    -1,    -1,    -1,    -1,    -1,    56,    -1,    58,    59,
-    -1,    -1,    -1,    63,    64,    65,    66,    67,    -1,    -1,
-    -1,    -1,    -1,    -1,    74,    -1,    76,    77,    78,    79,
-    -1,    -1,    -1,    83,    -1,    85,    11,    12,    -1,    -1,
-    90,    91,    92,    93,    94,    -1,    -1,    22,    23,    24,
-    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,
-    -1,    -1,    47,    48,    49,    50,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    58,    59,    -1,    -1,    -1,    63,    64,
-    65,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
-    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    83,    -1,
-    85,    11,    12,    -1,    -1,    90,    91,    92,    93,    94,
-    -1,    -1,    22,    23,    24,    -1,    26,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
-    40,    -1,    -1,    -1,    44,    -1,    -1,    47,    48,    49,
-    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
-    -1,    -1,    -1,    63,    64,    65,    66,    67,    -1,    -1,
-    -1,    -1,    -1,    -1,    74,    -1,    76,    77,    -1,    -1,
-    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,    -1,    -1,
-    90,    91,    92,    93,    94
+    77,    78,    79,    -1,    -1,    -1,    83,    -1,    85,    11,
+    12,    -1,    -1,    90,    91,    92,    93,    94,    -1,    -1,
+    22,    23,    24,    -1,    26,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,
+    -1,    -1,    44,    -1,    -1,    47,    48,    49,    50,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    -1,    -1,
+    -1,    63,    64,    65,    66,    67,    -1,    -1,    -1,    -1,
+    -1,    -1,    74,    -1,    76,    77,    -1,    -1,    -1,    -1,
+    -1,    83,    -1,    85,    11,    12,    -1,    -1,    90,    91,
+    92,    93,    94,    -1,    -1,    22,    23,    24,    -1,    26,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
+    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,    -1,
+    47,    48,    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    58,    59,    -1,    -1,    -1,    63,    64,    65,    66,
+    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    -1,    76,
+    77,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,
+    -1,    -1,    -1,    90,    91,    92,    93,    94
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -1345,13 +1362,13 @@
   switch (yyn) {
 
 case 1:
-#line 303 "asn1p_y.y"
+#line 304 "asn1p_y.y"
 {
 		*(void **)param = yyvsp[0].a_grammar;
 	;
     break;}
 case 2:
-#line 309 "asn1p_y.y"
+#line 310 "asn1p_y.y"
 {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1359,14 +1376,14 @@
 	;
     break;}
 case 3:
-#line 314 "asn1p_y.y"
+#line 315 "asn1p_y.y"
 {
 		yyval.a_grammar = yyvsp[-1].a_grammar;
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
 	;
     break;}
 case 4:
-#line 335 "asn1p_y.y"
+#line 336 "asn1p_y.y"
 {
 
 		if(yyvsp[-1].a_module) {
@@ -1383,27 +1400,27 @@
 	;
     break;}
 case 5:
-#line 356 "asn1p_y.y"
+#line 357 "asn1p_y.y"
 { yyval.a_oid = 0; ;
     break;}
 case 6:
-#line 357 "asn1p_y.y"
+#line 358 "asn1p_y.y"
 { yyval.a_oid = yyvsp[0].a_oid; ;
     break;}
 case 7:
-#line 361 "asn1p_y.y"
+#line 362 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	;
     break;}
 case 8:
-#line 364 "asn1p_y.y"
+#line 365 "asn1p_y.y"
 {
 		yyval.a_oid = 0;
 	;
     break;}
 case 9:
-#line 370 "asn1p_y.y"
+#line 371 "asn1p_y.y"
 {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1412,7 +1429,7 @@
 	;
     break;}
 case 10:
-#line 376 "asn1p_y.y"
+#line 377 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1421,74 +1438,74 @@
 	;
     break;}
 case 11:
-#line 385 "asn1p_y.y"
+#line 386 "asn1p_y.y"
 {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
 	;
     break;}
 case 12:
-#line 389 "asn1p_y.y"
+#line 390 "asn1p_y.y"
 {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
 	;
     break;}
 case 13:
-#line 393 "asn1p_y.y"
+#line 394 "asn1p_y.y"
 {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
 	;
     break;}
 case 14:
-#line 403 "asn1p_y.y"
+#line 404 "asn1p_y.y"
 { yyval.a_module_flags = MSF_NOFLAGS; ;
     break;}
 case 15:
-#line 404 "asn1p_y.y"
+#line 405 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 16:
-#line 413 "asn1p_y.y"
+#line 414 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 17:
-#line 416 "asn1p_y.y"
+#line 417 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	;
     break;}
 case 18:
-#line 425 "asn1p_y.y"
+#line 426 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	;
     break;}
 case 19:
-#line 428 "asn1p_y.y"
+#line 429 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	;
     break;}
 case 20:
-#line 431 "asn1p_y.y"
+#line 432 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	;
     break;}
 case 21:
-#line 434 "asn1p_y.y"
+#line 435 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	;
     break;}
 case 22:
-#line 438 "asn1p_y.y"
+#line 439 "asn1p_y.y"
 {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1506,23 +1523,23 @@
 	;
     break;}
 case 23:
-#line 459 "asn1p_y.y"
+#line 460 "asn1p_y.y"
 { yyval.a_module = 0; ;
     break;}
 case 24:
-#line 460 "asn1p_y.y"
+#line 461 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 25:
-#line 469 "asn1p_y.y"
+#line 470 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 26:
-#line 472 "asn1p_y.y"
+#line 473 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 
@@ -1552,13 +1569,13 @@
 	;
     break;}
 case 27:
-#line 505 "asn1p_y.y"
+#line 506 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 28:
-#line 508 "asn1p_y.y"
+#line 509 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1570,7 +1587,7 @@
 	;
     break;}
 case 29:
-#line 517 "asn1p_y.y"
+#line 518 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1580,7 +1597,7 @@
 	;
     break;}
 case 30:
-#line 524 "asn1p_y.y"
+#line 525 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1590,7 +1607,7 @@
 	;
     break;}
 case 31:
-#line 537 "asn1p_y.y"
+#line 538 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1600,11 +1617,11 @@
 	;
     break;}
 case 32:
-#line 545 "asn1p_y.y"
+#line 546 "asn1p_y.y"
 { asn1p_lexer_hack_push_encoding_control(); ;
     break;}
 case 33:
-#line 546 "asn1p_y.y"
+#line 547 "asn1p_y.y"
 {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -1615,7 +1632,7 @@
 	;
     break;}
 case 34:
-#line 558 "asn1p_y.y"
+#line 559 "asn1p_y.y"
 {
 		return yyerror(
 			"Attempt to redefine a standard basic type, "
@@ -1624,19 +1641,19 @@
 	;
     break;}
 case 35:
-#line 572 "asn1p_y.y"
+#line 573 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 	;
     break;}
 case 36:
-#line 578 "asn1p_y.y"
+#line 579 "asn1p_y.y"
 {
 		return yyerror("Empty IMPORTS list");
 	;
     break;}
 case 37:
-#line 584 "asn1p_y.y"
+#line 585 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1644,14 +1661,14 @@
 	;
     break;}
 case 38:
-#line 589 "asn1p_y.y"
+#line 590 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
 	;
     break;}
 case 39:
-#line 596 "asn1p_y.y"
+#line 597 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->from = yyvsp[-1].tv_str;
@@ -1660,7 +1677,7 @@
 	;
     break;}
 case 40:
-#line 605 "asn1p_y.y"
+#line 606 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -1668,14 +1685,14 @@
 	;
     break;}
 case 41:
-#line 610 "asn1p_y.y"
+#line 611 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 42:
-#line 617 "asn1p_y.y"
+#line 618 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1684,7 +1701,7 @@
 	;
     break;}
 case 43:
-#line 623 "asn1p_y.y"
+#line 624 "asn1p_y.y"
 {		/* Completely equivalent to above */
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1693,7 +1710,7 @@
 	;
     break;}
 case 44:
-#line 629 "asn1p_y.y"
+#line 630 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1702,19 +1719,19 @@
 	;
     break;}
 case 45:
-#line 638 "asn1p_y.y"
+#line 639 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	;
     break;}
 case 46:
-#line 641 "asn1p_y.y"
+#line 642 "asn1p_y.y"
 {
 		yyval.a_xports = 0;
 	;
     break;}
 case 47:
-#line 644 "asn1p_y.y"
+#line 645 "asn1p_y.y"
 {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -1722,7 +1739,7 @@
 	;
     break;}
 case 48:
-#line 652 "asn1p_y.y"
+#line 653 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -1730,14 +1747,14 @@
 	;
     break;}
 case 49:
-#line 657 "asn1p_y.y"
+#line 658 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 50:
-#line 664 "asn1p_y.y"
+#line 665 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1746,7 +1763,7 @@
 	;
     break;}
 case 51:
-#line 670 "asn1p_y.y"
+#line 671 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1755,7 +1772,7 @@
 	;
     break;}
 case 52:
-#line 676 "asn1p_y.y"
+#line 677 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1764,7 +1781,7 @@
 	;
     break;}
 case 53:
-#line 686 "asn1p_y.y"
+#line 687 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-4].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1774,7 +1791,7 @@
 	;
     break;}
 case 54:
-#line 696 "asn1p_y.y"
+#line 697 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1784,7 +1801,7 @@
 	;
     break;}
 case 55:
-#line 703 "asn1p_y.y"
+#line 704 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1793,36 +1810,36 @@
 	;
     break;}
 case 56:
-#line 712 "asn1p_y.y"
+#line 713 "asn1p_y.y"
 { ;
     break;}
 case 57:
-#line 713 "asn1p_y.y"
+#line 714 "asn1p_y.y"
 {
 	;
     break;}
 case 58:
-#line 724 "asn1p_y.y"
+#line 725 "asn1p_y.y"
 {
 	;
     break;}
 case 59:
-#line 726 "asn1p_y.y"
+#line 727 "asn1p_y.y"
 {
 	;
     break;}
 case 60:
-#line 731 "asn1p_y.y"
+#line 732 "asn1p_y.y"
 {
 	;
     break;}
 case 61:
-#line 733 "asn1p_y.y"
+#line 734 "asn1p_y.y"
 {
 	;
     break;}
 case 62:
-#line 749 "asn1p_y.y"
+#line 750 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1833,7 +1850,7 @@
 	;
     break;}
 case 63:
-#line 757 "asn1p_y.y"
+#line 758 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1842,7 +1859,7 @@
 	;
     break;}
 case 64:
-#line 763 "asn1p_y.y"
+#line 764 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1851,7 +1868,7 @@
 	;
     break;}
 case 65:
-#line 779 "asn1p_y.y"
+#line 780 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1861,7 +1878,7 @@
 	;
     break;}
 case 66:
-#line 789 "asn1p_y.y"
+#line 790 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1873,7 +1890,7 @@
 	;
     break;}
 case 67:
-#line 798 "asn1p_y.y"
+#line 799 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -1884,14 +1901,14 @@
 	;
     break;}
 case 68:
-#line 809 "asn1p_y.y"
+#line 810 "asn1p_y.y"
 {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
 case 69:
-#line 813 "asn1p_y.y"
+#line 814 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1901,7 +1918,7 @@
 	;
     break;}
 case 70:
-#line 820 "asn1p_y.y"
+#line 821 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1911,7 +1928,7 @@
 	;
     break;}
 case 71:
-#line 827 "asn1p_y.y"
+#line 828 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1922,7 +1939,7 @@
 	;
     break;}
 case 72:
-#line 838 "asn1p_y.y"
+#line 839 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1930,20 +1947,20 @@
 	;
     break;}
 case 73:
-#line 843 "asn1p_y.y"
+#line 844 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 74:
-#line 850 "asn1p_y.y"
+#line 851 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 75:
-#line 853 "asn1p_y.y"
+#line 854 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1953,15 +1970,15 @@
 	;
     break;}
 case 76:
-#line 877 "asn1p_y.y"
+#line 878 "asn1p_y.y"
 { yyval.a_expr = asn1p_expr_new(yylineno); ;
     break;}
 case 77:
-#line 878 "asn1p_y.y"
+#line 879 "asn1p_y.y"
 { yyval.a_expr = yyvsp[0].a_expr; ;
     break;}
 case 78:
-#line 881 "asn1p_y.y"
+#line 882 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1969,14 +1986,14 @@
 	;
     break;}
 case 79:
-#line 886 "asn1p_y.y"
+#line 887 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 80:
-#line 893 "asn1p_y.y"
+#line 894 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1985,7 +2002,7 @@
 	;
     break;}
 case 81:
-#line 899 "asn1p_y.y"
+#line 900 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1995,13 +2012,13 @@
 	;
     break;}
 case 82:
-#line 906 "asn1p_y.y"
+#line 907 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 83:
-#line 912 "asn1p_y.y"
+#line 913 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2009,14 +2026,14 @@
 	;
     break;}
 case 84:
-#line 917 "asn1p_y.y"
+#line 918 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 85:
-#line 924 "asn1p_y.y"
+#line 925 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2024,13 +2041,13 @@
 	;
     break;}
 case 86:
-#line 929 "asn1p_y.y"
+#line 930 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 87:
-#line 935 "asn1p_y.y"
+#line 936 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -2040,15 +2057,15 @@
 	;
     break;}
 case 88:
-#line 945 "asn1p_y.y"
+#line 946 "asn1p_y.y"
 { yyval.a_int = 0; ;
     break;}
 case 89:
-#line 946 "asn1p_y.y"
+#line 947 "asn1p_y.y"
 { yyval.a_int = 1; ;
     break;}
 case 90:
-#line 950 "asn1p_y.y"
+#line 951 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2058,14 +2075,14 @@
 	;
     break;}
 case 91:
-#line 957 "asn1p_y.y"
+#line 958 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 92:
-#line 964 "asn1p_y.y"
+#line 965 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2076,7 +2093,7 @@
 	;
     break;}
 case 93:
-#line 972 "asn1p_y.y"
+#line 973 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
@@ -2085,7 +2102,7 @@
 	;
     break;}
 case 94:
-#line 978 "asn1p_y.y"
+#line 979 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2103,47 +2120,47 @@
 	;
     break;}
 case 95:
-#line 996 "asn1p_y.y"
+#line 997 "asn1p_y.y"
 { yyval.a_wsynt = 0; ;
     break;}
 case 96:
-#line 997 "asn1p_y.y"
+#line 998 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	;
     break;}
 case 97:
-#line 1004 "asn1p_y.y"
+#line 1005 "asn1p_y.y"
 { asn1p_lexer_hack_enable_with_syntax(); ;
     break;}
 case 98:
-#line 1006 "asn1p_y.y"
+#line 1007 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	;
     break;}
 case 99:
-#line 1012 "asn1p_y.y"
+#line 1013 "asn1p_y.y"
 {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 100:
-#line 1016 "asn1p_y.y"
+#line 1017 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 101:
-#line 1023 "asn1p_y.y"
+#line 1024 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 	;
     break;}
 case 102:
-#line 1026 "asn1p_y.y"
+#line 1027 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2155,7 +2172,7 @@
 	;
     break;}
 case 103:
-#line 1038 "asn1p_y.y"
+#line 1039 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2166,7 +2183,7 @@
 	;
     break;}
 case 104:
-#line 1046 "asn1p_y.y"
+#line 1047 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2178,7 +2195,7 @@
 	;
     break;}
 case 105:
-#line 1055 "asn1p_y.y"
+#line 1056 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2190,7 +2207,7 @@
 	;
     break;}
 case 106:
-#line 1067 "asn1p_y.y"
+#line 1068 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2212,13 +2229,13 @@
 	;
     break;}
 case 107:
-#line 1089 "asn1p_y.y"
+#line 1090 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 108:
-#line 1092 "asn1p_y.y"
+#line 1093 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2227,7 +2244,7 @@
 	;
     break;}
 case 109:
-#line 1098 "asn1p_y.y"
+#line 1099 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2236,7 +2253,7 @@
 	;
     break;}
 case 110:
-#line 1104 "asn1p_y.y"
+#line 1105 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2245,7 +2262,7 @@
 	;
     break;}
 case 111:
-#line 1110 "asn1p_y.y"
+#line 1111 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2258,7 +2275,7 @@
 	;
     break;}
 case 112:
-#line 1120 "asn1p_y.y"
+#line 1121 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2271,7 +2288,7 @@
 	;
     break;}
 case 113:
-#line 1130 "asn1p_y.y"
+#line 1131 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2280,7 +2297,7 @@
 	;
     break;}
 case 114:
-#line 1136 "asn1p_y.y"
+#line 1137 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2294,7 +2311,7 @@
 	;
     break;}
 case 115:
-#line 1150 "asn1p_y.y"
+#line 1151 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = yyvsp[-1].a_expr;
@@ -2311,7 +2328,7 @@
 	;
     break;}
 case 116:
-#line 1174 "asn1p_y.y"
+#line 1175 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2321,7 +2338,7 @@
 	;
     break;}
 case 117:
-#line 1181 "asn1p_y.y"
+#line 1182 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2331,7 +2348,7 @@
 	;
     break;}
 case 118:
-#line 1196 "asn1p_y.y"
+#line 1197 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2342,7 +2359,7 @@
 	;
     break;}
 case 119:
-#line 1204 "asn1p_y.y"
+#line 1205 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2355,7 +2372,7 @@
 	;
     break;}
 case 120:
-#line 1214 "asn1p_y.y"
+#line 1215 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2368,7 +2385,7 @@
 	;
     break;}
 case 121:
-#line 1224 "asn1p_y.y"
+#line 1225 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2381,7 +2398,7 @@
 	;
     break;}
 case 122:
-#line 1234 "asn1p_y.y"
+#line 1235 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2392,7 +2409,7 @@
 	;
     break;}
 case 123:
-#line 1242 "asn1p_y.y"
+#line 1243 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2414,7 +2431,7 @@
 	;
     break;}
 case 124:
-#line 1264 "asn1p_y.y"
+#line 1265 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2425,7 +2442,7 @@
 	;
     break;}
 case 125:
-#line 1272 "asn1p_y.y"
+#line 1273 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2435,21 +2452,21 @@
 	;
     break;}
 case 128:
-#line 1286 "asn1p_y.y"
+#line 1287 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 129:
-#line 1291 "asn1p_y.y"
+#line 1292 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 130:
-#line 1304 "asn1p_y.y"
+#line 1305 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2459,7 +2476,7 @@
 	;
     break;}
 case 131:
-#line 1314 "asn1p_y.y"
+#line 1315 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2469,11 +2486,11 @@
 	;
     break;}
 case 132:
-#line 1321 "asn1p_y.y"
+#line 1322 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 133:
-#line 1321 "asn1p_y.y"
+#line 1322 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -2481,7 +2498,7 @@
 	;
     break;}
 case 134:
-#line 1326 "asn1p_y.y"
+#line 1327 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2489,7 +2506,7 @@
 	;
     break;}
 case 135:
-#line 1331 "asn1p_y.y"
+#line 1332 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2497,7 +2514,7 @@
 	;
     break;}
 case 136:
-#line 1336 "asn1p_y.y"
+#line 1337 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2505,24 +2522,23 @@
 	;
     break;}
 case 137:
-#line 1341 "asn1p_y.y"
+#line 1342 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 138:
-#line 1345 "asn1p_y.y"
+#line 1346 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 139:
-#line 1349 "asn1p_y.y"
+#line 1350 "asn1p_y.y"
 {
-		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
-		checkmem(yyval.a_value);
+		yyval.a_value = yyval.a_value;
 	;
     break;}
 case 140:
@@ -2569,7 +2585,44 @@
 	;
     break;}
 case 144:
-#line 1390 "asn1p_y.y"
+#line 1391 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
+		checkmem(yyval.a_value);
+	;
+    break;}
+case 145:
+#line 1395 "asn1p_y.y"
+{
+		asn1c_integer_t v = (yyvsp[-3].a_int << 4) + yyvsp[-1].a_int;
+		if(yyvsp[-3].a_int > 7) return yyerror("X.680:2003, #37.14 "
+				"mandates 0..7 range for Tuple's TableColumn");
+		if(yyvsp[-1].a_int > 15) return yyerror("X.680:2003, #37.14 "
+				"mandates 0..15 range for Tuple's TableRow");
+		yyval.a_value = asn1p_value_fromint(v);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_TUPLE;
+	;
+    break;}
+case 146:
+#line 1405 "asn1p_y.y"
+{
+		asn1c_integer_t v = (yyvsp[-7].a_int << 24) | (yyvsp[-5].a_int << 16) | (yyvsp[-3].a_int << 8) | yyvsp[-1].a_int;
+		if(yyvsp[-7].a_int > 127) return yyerror("X.680:2003, #37.12 "
+				"mandates 0..127 range for Quadruple's Group");
+		if(yyvsp[-5].a_int > 255) return yyerror("X.680:2003, #37.12 "
+				"mandates 0..255 range for Quadruple's Plane");
+		if(yyvsp[-3].a_int > 255) return yyerror("X.680:2003, #37.12 "
+				"mandates 0..255 range for Quadruple's Row");
+		if(yyvsp[-1].a_int > 255) return yyerror("X.680:2003, #37.12 "
+				"mandates 0..255 range for Quadruple's Cell");
+		yyval.a_value = asn1p_value_fromint(v);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_QUADRUPLE;
+	;
+    break;}
+case 147:
+#line 1422 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2580,8 +2633,8 @@
 		free(yyvsp[0].tv_opaque.buf);
 	;
     break;}
-case 145:
-#line 1399 "asn1p_y.y"
+case 148:
+#line 1431 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2595,72 +2648,72 @@
 		yyval.tv_opaque.len = newsize;
 	;
     break;}
-case 146:
-#line 1414 "asn1p_y.y"
+case 149:
+#line 1446 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
-case 147:
-#line 1415 "asn1p_y.y"
+case 150:
+#line 1447 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
-case 148:
-#line 1416 "asn1p_y.y"
+case 151:
+#line 1448 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
-case 149:
-#line 1417 "asn1p_y.y"
-{ yyval.a_type = yyvsp[0].a_type; ;
-    break;}
-case 150:
-#line 1418 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
-    break;}
-case 151:
-#line 1419 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
-    break;}
 case 152:
-#line 1420 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
+#line 1449 "asn1p_y.y"
+{ yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 153:
-#line 1421 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
+#line 1450 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
 case 154:
-#line 1422 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
+#line 1451 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
 case 155:
-#line 1423 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
+#line 1452 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
 case 156:
-#line 1424 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_UTCTime; ;
+#line 1453 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
 case 157:
-#line 1425 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
+#line 1454 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
     break;}
 case 158:
-#line 1426 "asn1p_y.y"
-{ yyval.a_type = yyvsp[0].a_type; ;
+#line 1455 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
     break;}
 case 159:
-#line 1433 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_INTEGER; ;
+#line 1456 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_UTCTime; ;
     break;}
 case 160:
-#line 1434 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
+#line 1457 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
     break;}
 case 161:
-#line 1435 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
+#line 1458 "asn1p_y.y"
+{ yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 162:
-#line 1439 "asn1p_y.y"
+#line 1465 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_INTEGER; ;
+    break;}
+case 163:
+#line 1466 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
+    break;}
+case 164:
+#line 1467 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
+    break;}
+case 165:
+#line 1471 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2668,8 +2721,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 163:
-#line 1445 "asn1p_y.y"
+case 166:
+#line 1477 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2681,92 +2734,92 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 164:
-#line 1458 "asn1p_y.y"
+case 167:
+#line 1490 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
-case 165:
-#line 1459 "asn1p_y.y"
+case 168:
+#line 1491 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
-case 166:
-#line 1463 "asn1p_y.y"
+case 169:
+#line 1495 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
-case 167:
-#line 1467 "asn1p_y.y"
+case 170:
+#line 1499 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_IA5String; ;
     break;}
-case 168:
-#line 1468 "asn1p_y.y"
+case 171:
+#line 1500 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
-case 169:
-#line 1469 "asn1p_y.y"
+case 172:
+#line 1501 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_NumericString; ;
     break;}
-case 170:
-#line 1470 "asn1p_y.y"
+case 173:
+#line 1502 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
-case 171:
-#line 1471 "asn1p_y.y"
+case 174:
+#line 1503 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	;
     break;}
-case 172:
-#line 1475 "asn1p_y.y"
+case 175:
+#line 1507 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_TeletexString; ;
     break;}
-case 173:
-#line 1476 "asn1p_y.y"
+case 176:
+#line 1508 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UniversalString; ;
     break;}
-case 174:
-#line 1477 "asn1p_y.y"
+case 177:
+#line 1509 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UTF8String; ;
     break;}
-case 175:
-#line 1478 "asn1p_y.y"
+case 178:
+#line 1510 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	;
     break;}
-case 176:
-#line 1482 "asn1p_y.y"
+case 179:
+#line 1514 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_VisibleString; ;
     break;}
-case 177:
-#line 1483 "asn1p_y.y"
+case 180:
+#line 1515 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
-case 183:
-#line 1495 "asn1p_y.y"
+case 186:
+#line 1527 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
-case 184:
-#line 1496 "asn1p_y.y"
+case 187:
+#line 1528 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 185:
-#line 1502 "asn1p_y.y"
+case 188:
+#line 1534 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 186:
-#line 1505 "asn1p_y.y"
+case 189:
+#line 1537 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2775,26 +2828,26 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 187:
-#line 1515 "asn1p_y.y"
+case 190:
+#line 1547 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
-case 188:
-#line 1518 "asn1p_y.y"
+case 191:
+#line 1550 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 189:
-#line 1524 "asn1p_y.y"
+case 192:
+#line 1556 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 190:
-#line 1527 "asn1p_y.y"
+case 193:
+#line 1559 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2802,8 +2855,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 191:
-#line 1533 "asn1p_y.y"
+case 194:
+#line 1565 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2813,32 +2866,38 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
 	;
     break;}
-case 192:
-#line 1544 "asn1p_y.y"
+case 195:
+#line 1576 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 193:
-#line 1547 "asn1p_y.y"
+case 196:
+#line 1579 "asn1p_y.y"
+{
+		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
+	;
+    break;}
+case 197:
+#line 1582 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 194:
-#line 1550 "asn1p_y.y"
+case 198:
+#line 1585 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 195:
-#line 1553 "asn1p_y.y"
+case 199:
+#line 1588 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 196:
-#line 1559 "asn1p_y.y"
+case 200:
+#line 1594 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2848,8 +2907,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 197:
-#line 1567 "asn1p_y.y"
+case 201:
+#line 1602 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2859,8 +2918,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 198:
-#line 1575 "asn1p_y.y"
+case 202:
+#line 1610 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2868,8 +2927,8 @@
 		yyval.a_constr->value = yyvsp[0].a_value;
 	;
     break;}
-case 199:
-#line 1581 "asn1p_y.y"
+case 203:
+#line 1616 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2877,68 +2936,68 @@
 		yyval.a_constr->containedSubtype = yyvsp[0].a_value;
 	;
     break;}
-case 200:
-#line 1587 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-	;
-    break;}
-case 201:
-#line 1594 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-		yyval.a_constr->range_start->type = ATV_MIN;
-	;
-    break;}
-case 202:
-#line 1602 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_stop->type = ATV_MAX;
-	;
-    break;}
-case 203:
-#line 1610 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_start->type = ATV_MIN;
-		yyval.a_constr->range_stop->type = ATV_MAX;
-	;
-    break;}
 case 204:
-#line 1619 "asn1p_y.y"
+#line 1622 "asn1p_y.y"
 {
-		yyval.a_constr = yyvsp[0].a_constr;
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = yyvsp[-2].a_value;
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
 	;
     break;}
 case 205:
-#line 1622 "asn1p_y.y"
+#line 1629 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = asn1p_value_fromint(-123);
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
+		yyval.a_constr->range_start->type = ATV_MIN;
+	;
+    break;}
+case 206:
+#line 1637 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = yyvsp[-2].a_value;
+		yyval.a_constr->range_stop = asn1p_value_fromint(321);
+		yyval.a_constr->range_stop->type = ATV_MAX;
+	;
+    break;}
+case 207:
+#line 1645 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = asn1p_value_fromint(-123);
+		yyval.a_constr->range_stop = asn1p_value_fromint(321);
+		yyval.a_constr->range_start->type = ATV_MIN;
+		yyval.a_constr->range_stop->type = ATV_MAX;
+	;
+    break;}
+case 208:
+#line 1654 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 206:
-#line 1626 "asn1p_y.y"
+case 209:
+#line 1657 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
+case 210:
+#line 1661 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
-case 207:
-#line 1626 "asn1p_y.y"
+case 211:
+#line 1661 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2948,65 +3007,64 @@
 		yyval.a_constr->value->type = ATV_UNPARSED;
 	;
     break;}
-case 208:
-#line 1637 "asn1p_y.y"
+case 212:
+#line 1672 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RANGE; ;
     break;}
-case 209:
-#line 1638 "asn1p_y.y"
+case 213:
+#line 1673 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RLRANGE; ;
     break;}
-case 210:
-#line 1639 "asn1p_y.y"
+case 214:
+#line 1674 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_LLRANGE; ;
     break;}
-case 211:
-#line 1640 "asn1p_y.y"
+case 215:
+#line 1675 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_ULRANGE; ;
     break;}
-case 212:
-#line 1644 "asn1p_y.y"
+case 216:
+#line 1679 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
-case 213:
-#line 1647 "asn1p_y.y"
+case 217:
+#line 1682 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
-case 214:
-#line 1653 "asn1p_y.y"
+case 218:
+#line 1688 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 215:
-#line 1658 "asn1p_y.y"
+case 219:
+#line 1693 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 216:
-#line 1663 "asn1p_y.y"
+case 220:
+#line 1698 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 217:
-#line 1666 "asn1p_y.y"
+case 221:
+#line 1701 "asn1p_y.y"
 {
-		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
-		checkmem(yyval.a_value);
+		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 218:
-#line 1670 "asn1p_y.y"
+case 222:
+#line 1704 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3019,8 +3077,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 219:
-#line 1684 "asn1p_y.y"
+case 223:
+#line 1718 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3033,34 +3091,34 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 220:
-#line 1698 "asn1p_y.y"
+case 224:
+#line 1732 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 221:
-#line 1704 "asn1p_y.y"
+case 225:
+#line 1738 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 222:
-#line 1707 "asn1p_y.y"
+case 226:
+#line 1741 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 223:
-#line 1713 "asn1p_y.y"
+case 227:
+#line 1747 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_EXT;
 	;
     break;}
-case 224:
-#line 1718 "asn1p_y.y"
+case 228:
+#line 1752 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3069,46 +3127,46 @@
 		yyval.a_constr->presence = yyvsp[0].a_pres;
 	;
     break;}
-case 225:
-#line 1731 "asn1p_y.y"
+case 229:
+#line 1765 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
-case 226:
-#line 1732 "asn1p_y.y"
+case 230:
+#line 1766 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
-case 227:
-#line 1736 "asn1p_y.y"
+case 231:
+#line 1770 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
-case 228:
-#line 1739 "asn1p_y.y"
+case 232:
+#line 1773 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
-case 229:
-#line 1742 "asn1p_y.y"
+case 233:
+#line 1776 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
-case 230:
-#line 1748 "asn1p_y.y"
+case 234:
+#line 1782 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 231:
-#line 1751 "asn1p_y.y"
+case 235:
+#line 1785 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 232:
-#line 1760 "asn1p_y.y"
+case 236:
+#line 1794 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -3122,14 +3180,14 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
 	;
     break;}
-case 233:
-#line 1775 "asn1p_y.y"
+case 237:
+#line 1809 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 234:
-#line 1781 "asn1p_y.y"
+case 238:
+#line 1815 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3137,8 +3195,8 @@
 		yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
 	;
     break;}
-case 235:
-#line 1787 "asn1p_y.y"
+case 239:
+#line 1821 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3148,8 +3206,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 236:
-#line 1801 "asn1p_y.y"
+case 240:
+#line 1835 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -3162,8 +3220,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 237:
-#line 1812 "asn1p_y.y"
+case 241:
+#line 1846 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3177,14 +3235,14 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 238:
-#line 1828 "asn1p_y.y"
+case 242:
+#line 1862 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 239:
-#line 1831 "asn1p_y.y"
+case 243:
+#line 1865 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3195,61 +3253,61 @@
 		yyval.tv_str[l1 + 1 + l3] = '\0';
 	;
     break;}
-case 240:
-#line 1849 "asn1p_y.y"
+case 244:
+#line 1883 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 241:
-#line 1853 "asn1p_y.y"
+case 245:
+#line 1887 "asn1p_y.y"
 { yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
-case 242:
-#line 1857 "asn1p_y.y"
+case 246:
+#line 1891 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_OPTIONAL;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 243:
-#line 1861 "asn1p_y.y"
+case 247:
+#line 1895 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	;
     break;}
-case 244:
-#line 1884 "asn1p_y.y"
+case 248:
+#line 1918 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
-case 245:
-#line 1888 "asn1p_y.y"
+case 249:
+#line 1922 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
-case 246:
-#line 1894 "asn1p_y.y"
+case 250:
+#line 1928 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 247:
-#line 1899 "asn1p_y.y"
+case 251:
+#line 1933 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 248:
-#line 1906 "asn1p_y.y"
+case 252:
+#line 1940 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3258,8 +3316,8 @@
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 	;
     break;}
-case 249:
-#line 1913 "asn1p_y.y"
+case 253:
+#line 1947 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3269,8 +3327,8 @@
 		yyval.a_expr->value = yyvsp[-1].a_value;
 	;
     break;}
-case 250:
-#line 1921 "asn1p_y.y"
+case 254:
+#line 1955 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3280,8 +3338,8 @@
 		yyval.a_expr->value = yyvsp[-1].a_value;
 	;
     break;}
-case 251:
-#line 1929 "asn1p_y.y"
+case 255:
+#line 1963 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3290,8 +3348,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 252:
-#line 1936 "asn1p_y.y"
+case 256:
+#line 1970 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3301,103 +3359,103 @@
 		yyval.a_expr->meta_type = AMT_VALUE;
 	;
     break;}
-case 253:
-#line 1947 "asn1p_y.y"
+case 257:
+#line 1981 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 254:
-#line 1951 "asn1p_y.y"
+case 258:
+#line 1985 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 255:
-#line 1982 "asn1p_y.y"
+case 259:
+#line 2016 "asn1p_y.y"
 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
-case 256:
-#line 1983 "asn1p_y.y"
+case 260:
+#line 2017 "asn1p_y.y"
 { yyval.a_tag = yyvsp[0].a_tag; ;
     break;}
-case 257:
-#line 1987 "asn1p_y.y"
+case 261:
+#line 2021 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	;
     break;}
-case 258:
-#line 1994 "asn1p_y.y"
+case 262:
+#line 2028 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	;
     break;}
-case 259:
-#line 2000 "asn1p_y.y"
+case 263:
+#line 2034 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
     break;}
-case 260:
-#line 2001 "asn1p_y.y"
+case 264:
+#line 2035 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_UNIVERSAL; ;
     break;}
-case 261:
-#line 2002 "asn1p_y.y"
+case 265:
+#line 2036 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_APPLICATION; ;
     break;}
-case 262:
-#line 2003 "asn1p_y.y"
+case 266:
+#line 2037 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_PRIVATE; ;
     break;}
-case 263:
-#line 2007 "asn1p_y.y"
+case 267:
+#line 2041 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_DEFAULT; ;
     break;}
-case 264:
-#line 2008 "asn1p_y.y"
+case 268:
+#line 2042 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_IMPLICIT; ;
     break;}
-case 265:
-#line 2009 "asn1p_y.y"
+case 269:
+#line 2043 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_EXPLICIT; ;
     break;}
-case 266:
-#line 2013 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 267:
-#line 2017 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 268:
-#line 2025 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 269:
-#line 2032 "asn1p_y.y"
-{ yyval.tv_str = 0; ;
-    break;}
 case 270:
-#line 2033 "asn1p_y.y"
+#line 2047 "asn1p_y.y"
 {
+		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 271:
-#line 2038 "asn1p_y.y"
+#line 2051 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 272:
+#line 2059 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 273:
+#line 2066 "asn1p_y.y"
+{ yyval.tv_str = 0; ;
+    break;}
+case 274:
+#line 2067 "asn1p_y.y"
+{
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 275:
+#line 2072 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3625,7 +3683,7 @@
     }
   return 1;
 }
-#line 2044 "asn1p_y.y"
+#line 2078 "asn1p_y.y"