diff --git a/Geo/GFace.h b/Geo/GFace.h index f7044dde96f358f65636b307da5cf0bb06fb63f3..9f71f5981bc8b25c8af1df17f67a699954bb70ff 100644 --- a/Geo/GFace.h +++ b/Geo/GFace.h @@ -9,6 +9,7 @@ #include <list> #include <string> #include <vector> +#include <map> #include "GEntity.h" #include "GPoint.h" #include "GEdgeLoop.h" @@ -313,6 +314,9 @@ class GFace : public GEntity void replaceEdges(std::list<GEdge*> &); static void registerBindings(binding *b); + + // periodic counterparts of edges + std::map<int,int> edgeCounterparts; }; #endif diff --git a/Geo/Geo.h b/Geo/Geo.h index bffb02862dc9c128d9eb403c7cffca0fe624e1aa..efb639bab7bdd7e56b7534ea903881f4347eb318 100644 --- a/Geo/Geo.h +++ b/Geo/Geo.h @@ -165,7 +165,9 @@ class Surface{ // should be the only one in gmsh, so parameter "Type" should // disappear from the class Surface. gmshSurface *geometry; + // the mesh master surface int meshMaster; + std::map<int,int> edgeCounterparts; std::vector<int> compound, compoundBoundary[4]; }; diff --git a/Geo/GeoStringInterface.cpp b/Geo/GeoStringInterface.cpp index f0d3645d558822fcce54f512d4a360ca42560883..2d316ffeaa12cef5e1e2c82394ef85d4e2416676 100644 --- a/Geo/GeoStringInterface.cpp +++ b/Geo/GeoStringInterface.cpp @@ -315,8 +315,18 @@ void add_compound(std::string type, List_T *list, std::string fileName) { std::ostringstream sstream; if(SplitFileName(fileName)[2] != ".geo") sstream << "CreateTopology;\n"; - sstream << "Compound " << type << "(" << NEWREG() << ") = {" - << list2string(list) << "};"; + if (type == "Surface"){ + sstream << "Compound " << type << "(" << NEWSURFACE()+1000 << ") = {" + << list2string(list) << "};"; + } + else if (type == "Line"){ + sstream << "Compound " << type << "(" << NEWLINE()+1000 << ") = {" + << list2string(list) << "};"; + } + else{ + sstream << "Compound " << type << "(" << NEWREG() << ") = {" + << list2string(list) << "};"; + } add_infile(sstream.str(), fileName); } diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp index 78566bfe080b92f940bf554ff083c3d60b9b580d..0450472a95eda5b045fb1132c86af279cfdc39f5 100644 --- a/Geo/gmshFace.cpp +++ b/Geo/gmshFace.cpp @@ -22,6 +22,7 @@ gmshFace::gmshFace(GModel *m, Surface *face) resetMeshAttributes(); setMeshMaster(s->meshMaster); + edgeCounterparts = s->edgeCounterparts; // printf("surface %d master %d\n",tag(),meshMaster()); std::list<GEdge*> l_wire; diff --git a/Mesh/highOrderSmoother.cpp b/Mesh/highOrderSmoother.cpp index dcadba10c29d991fd7fb5d7d6322c4747ffd147d..b978be5f548f4be9951fdc205e6af7dff02389d4 100644 --- a/Mesh/highOrderSmoother.cpp +++ b/Mesh/highOrderSmoother.cpp @@ -376,11 +376,11 @@ void highOrderSmoother::optimize(GFace * gf, smooth(gf, true); - for (int i=0;i<100;i++){ - int nbSwap = - swapHighOrderTriangles(gf,edgeVertices,faceVertices,this); - printf("%d swaps\n",nbSwap); - } + // for (int i=0;i<100;i++){ + // int nbSwap = + // swapHighOrderTriangles(gf,edgeVertices,faceVertices,this); + // printf("%d swaps\n",nbSwap); + // } // smooth(gf,true); // smooth(gf,true); diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp index 40c2ca585a3e5f005f2b0fc760bf8d0efc37ec90..6501751ca361c1c62fbe359e41620d051696e0ec 100644 --- a/Mesh/meshGFace.cpp +++ b/Mesh/meshGFace.cpp @@ -41,32 +41,42 @@ static void copyMesh (GFace *source, GFace *target) { std::map<MVertex*,MVertex*> vs2vt; - - std::list<GEdge*> edges = target->edges(); - for (std::list<GEdge*>::iterator it = edges.begin(); it!=edges.end(); ++it){ - GEdge *te = *it; - int master = te->meshMaster(); - if (master == te->tag()){ - Msg::Error("Periodic face %d does not have periodic edges (master %d -- edge %d)", - target->tag(), master, te->tag()); - } - GEdge *se = source->model()->getEdgeByTag(abs(master)); - if (master > 0){ - vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0]; - vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0]; - for (unsigned i=0;i<se->mesh_vertices.size();i++){ - MVertex *vs = se->mesh_vertices[i]; - MVertex *vt = te->mesh_vertices[i]; - vs2vt[vs] = vt; + std::list<GEdge*> edges = target->edges(); + { + std::list<GEdge*>::iterator it = edges.begin(); + for (; it!=edges.end(); ++it){ + int sign = 1; + std::map<int,int>::iterator adnksd = target->edgeCounterparts.find((*it)->tag()); + int source_e; + if ( adnksd != target->edgeCounterparts.end()) + source_e= adnksd->second; + else{ + sign = -1; + source_e = target->edgeCounterparts[-(*it)->tag()]; } - } - else { - vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0]; - vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0]; - for (unsigned i=0;i<se->mesh_vertices.size();i++){ - MVertex *vs = se->mesh_vertices[i]; - MVertex *vt = te->mesh_vertices[se->mesh_vertices.size()-i-1]; - vs2vt[vs] = vt; + + // printf("face %d = %d vs %d (%d counterparts)\n",source->tag(),(*it)->tag(),source_e,target->edgeCounterparts.size()); + + + GEdge *se = source->model()->getEdgeByTag(abs(source_e)); + GEdge *te = *it; + if (source_e * sign > 0){ + vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0]; + vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0]; + for (unsigned i=0;i<se->mesh_vertices.size();i++){ + MVertex *vs = se->mesh_vertices[i]; + MVertex *vt = te->mesh_vertices[i]; + vs2vt[vs] = vt; + } + } + else { + vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0]; + vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0]; + for (unsigned i=0;i<se->mesh_vertices.size();i++){ + MVertex *vs = se->mesh_vertices[i]; + MVertex *vt = te->mesh_vertices[se->mesh_vertices.size() - i - 1]; + vs2vt[vs] = vt; + } } } } @@ -120,11 +130,39 @@ static void copyMesh (GFace *source, GFace *target) } for (unsigned i=0;i<source->triangles.size();i++){ - MVertex *v1 = vs2vt[source->triangles[i]->getVertex(0)]; - MVertex *v2 = vs2vt[source->triangles[i]->getVertex(1)]; - MVertex *v3 = vs2vt[source->triangles[i]->getVertex(2)]; - target->triangles.push_back(new MTriangle(v1,v2,v3)); + MVertex *vt[3]; + for (int j=0;j<3;j++){ + MVertex *vs = source->triangles[i]->getVertex(j); + + vt[j] = vs2vt[vs]; + if (!vt[j]){ + SPoint2 p; + bool success = reparamMeshVertexOnFace(vs, source, p); + const double U = c * (p.x()-s1u) + s * (p.y()-s1v) + t1u; + const double V = -s * (p.x()-s1u) + c * (p.y()-s1v) + t1v; + for (std::list<GEdge*>::iterator it = edges.begin(); it!=edges.end(); ++it){ + GEdge *te = *it; + for (unsigned k=0;k<te->lines.size();k++){ + MVertex *gotcha = te->lines[k]->getVertex(0); + bool success2 = reparamMeshVertexOnFace(gotcha, target, p); + const double D = sqrt((U-p.x())*(U-p.x())+(V-p.y())*(V-p.y())); + if (D < 1.e-9){ + vt[j] = gotcha; + break; + } + } + } + } + } + if (!vt[0] || !vt[1] ||!vt[2]){ + Msg::Fatal("yet another error in the copymesh procedure %p %p %p %d %d %d", + vt[0],vt[1],vt[2],source->triangles[i]->getVertex(0)->onWhat()->dim(), + source->triangles[i]->getVertex(1)->onWhat()->dim(), + source->triangles[i]->getVertex(2)->onWhat()->dim()); + } + target->triangles.push_back(new MTriangle(vt[0],vt[1],vt[2])); } + for (unsigned i=0;i<source->quadrangles.size();i++){ MVertex *v1 = vs2vt[source->quadrangles[i]->getVertex(0)]; MVertex *v2 = vs2vt[source->quadrangles[i]->getVertex(1)]; diff --git a/Mesh/meshGFaceDelaunayInsertion.cpp b/Mesh/meshGFaceDelaunayInsertion.cpp index a6ee7a905095451d823d2e8f276fb85fbad21e13..c2678cdc70eaac4f1c2413eb559d7dea5e252c17 100644 --- a/Mesh/meshGFaceDelaunayInsertion.cpp +++ b/Mesh/meshGFaceDelaunayInsertion.cpp @@ -667,6 +667,20 @@ static void insertManyPoints(GFace *gf, std::set<MTri3*,compareTri3Ptr> &AllTris, std::set<MTri3*,compareTri3Ptr> *ActiveTris = 0){ + // a first implementation : greeeeedy algorithm + for (std::list<SPoint2>::iterator itp = points.begin(); itp != points.end() ; ++itp){ + std::set<MTri3*,compareTri3Ptr> :: iterator it = AllTris.begin(); + double metric[3]; + double pa[2] = {itp->x(),itp->y()}; + buildMetric(gf, pa, metric); + for (; it != AllTris.end() ; ++it){ + int found = inCircumCircleAniso(gf, (*it)->tri(), pa, metric, Us, Vs); + if (found){ + insertAPoint(gf, it, pa, metric, Us, Vs, vSizes, vSizesBGM, vMetricsBGM, AllTris, ActiveTris); + break; + } + } + } } @@ -773,22 +787,6 @@ static double lengthMetric(const double p[2], const double q[2], */ -void testTensor() -{ - SMetric3 t(1.0); - t(0,0) = 1; - t(1,0) = .2; - t(1,1) = 2; - t(2,2) = 3; - fullMatrix<double> m(3,3); - fullVector<double> v(3); - t.eig(m,v); - printf("%12.5E %12.5E %12.5E \n",v(0),v(1),v(2)); - printf("%12.5E %12.5E %12.5E \n",m(0,0),m(1,0),m(2,0)); - printf("%12.5E %12.5E %12.5E \n",m(0,1),m(1,1),m(2,1)); - printf("%12.5E %12.5E %12.5E \n",m(0,2),m(1,2),m(2,2)); -} - void bowyerWatsonFrontal(GFace *gf) { std::set<MTri3*,compareTri3Ptr> AllTris; @@ -796,8 +794,6 @@ void bowyerWatsonFrontal(GFace *gf) std::vector<double> vSizes, vSizesBGM, Us, Vs; std::vector<SMetric3> vMetricsBGM; - //testTensor(); - buildMeshGenerationDataStructures (gf, AllTris, vSizes, vSizesBGM, vMetricsBGM,Us, Vs); @@ -891,11 +887,13 @@ void bowyerWatsonFrontal(GFace *gf) insertAPoint(gf, AllTris.end(), newPoint, metric, Us, Vs, vSizes, vSizesBGM, vMetricsBGM, AllTris, &ActiveTris, worst); } -// if(ITER % 1000== 0){ -// char name[245]; -// sprintf(name,"frontal%d-ITER%d.pos",gf->tag(),ITER); -// _printTris (name, AllTris, Us,Vs,false); -// } + /* + if(ITER % 100== 0){ + char name[245]; + sprintf(name,"frontal%d-ITER%d.pos",gf->tag(),ITER); + _printTris (name, AllTris, Us,Vs,false); + } + */ } // char name[245]; diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 8b7e01b1935ecb08c9244eb10faf9f4d53348281..b365c9564a3bf1d97ec6cb65d51d8420a5e7bc2e 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -689,7 +689,7 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 6711 +#define YYLAST 6953 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 153 @@ -698,7 +698,7 @@ union yyalloc /* YYNRULES -- Number of rules. */ #define YYNRULES 388 /* YYNRULES -- Number of states. */ -#define YYNSTATES 1386 +#define YYNSTATES 1392 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -780,21 +780,21 @@ static const yytype_uint16 yyprhs[] = 1311, 1328, 1329, 1346, 1347, 1364, 1365, 1384, 1385, 1404, 1405, 1424, 1426, 1429, 1435, 1443, 1453, 1456, 1466, 1467, 1469, 1470, 1474, 1475, 1477, 1478, 1481, 1482, 1485, 1493, - 1500, 1509, 1515, 1521, 1528, 1535, 1542, 1553, 1564, 1575, - 1586, 1589, 1593, 1605, 1617, 1629, 1641, 1643, 1647, 1650, - 1653, 1656, 1660, 1664, 1668, 1672, 1676, 1680, 1684, 1688, - 1692, 1696, 1700, 1704, 1708, 1712, 1718, 1723, 1728, 1733, - 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1775, 1780, 1785, - 1790, 1795, 1800, 1805, 1812, 1819, 1826, 1831, 1836, 1841, - 1846, 1851, 1856, 1861, 1866, 1871, 1876, 1881, 1888, 1893, - 1898, 1903, 1908, 1913, 1918, 1925, 1932, 1939, 1944, 1946, - 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1966, 1971, 1976, - 1979, 1985, 1989, 1996, 2001, 2009, 2016, 2018, 2021, 2024, - 2028, 2032, 2044, 2054, 2062, 2070, 2072, 2076, 2078, 2080, - 2083, 2087, 2092, 2098, 2100, 2102, 2105, 2109, 2113, 2119, - 2124, 2126, 2128, 2132, 2139, 2141, 2143, 2147, 2151, 2161, - 2169, 2171, 2177, 2181, 2188, 2190, 2194, 2196, 2198, 2202, - 2209, 2211, 2213, 2218, 2225, 2232, 2237, 2242, 2247 + 1500, 1509, 1515, 1521, 1528, 1535, 1544, 1555, 1566, 1577, + 1588, 1591, 1595, 1607, 1619, 1631, 1643, 1645, 1649, 1652, + 1655, 1658, 1662, 1666, 1670, 1674, 1678, 1682, 1686, 1690, + 1694, 1698, 1702, 1706, 1710, 1714, 1720, 1725, 1730, 1735, + 1740, 1745, 1750, 1755, 1760, 1765, 1770, 1777, 1782, 1787, + 1792, 1797, 1802, 1807, 1814, 1821, 1828, 1833, 1838, 1843, + 1848, 1853, 1858, 1863, 1868, 1873, 1878, 1883, 1890, 1895, + 1900, 1905, 1910, 1915, 1920, 1927, 1934, 1941, 1946, 1948, + 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1968, 1973, 1978, + 1981, 1987, 1991, 1998, 2003, 2011, 2018, 2020, 2023, 2026, + 2030, 2034, 2046, 2056, 2064, 2072, 2074, 2078, 2080, 2082, + 2085, 2089, 2094, 2100, 2102, 2104, 2107, 2111, 2115, 2121, + 2126, 2128, 2130, 2134, 2141, 2143, 2145, 2149, 2153, 2163, + 2171, 2173, 2179, 2183, 2190, 2192, 2196, 2198, 2200, 2204, + 2211, 2213, 2215, 2220, 2227, 2234, 2239, 2244, 2249 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -953,79 +953,79 @@ static const yytype_int16 yyrhs[] = 58, 52, 150, 221, 151, 7, 226, 6, -1, 61, 54, 227, 214, 6, -1, 76, 52, 227, 215, 6, -1, 77, 52, 226, 7, 221, 6, -1, 65, 49, - 226, 7, 226, 6, -1, 65, 52, 226, 7, 226, - 6, -1, 46, 150, 229, 151, 99, 52, 150, 221, - 151, 6, -1, 49, 150, 229, 151, 99, 52, 150, - 221, 151, 6, -1, 49, 150, 229, 151, 99, 54, - 150, 221, 151, 6, -1, 52, 150, 229, 151, 99, - 54, 150, 221, 151, 6, -1, 80, 6, -1, 80, - 4, 6, -1, 116, 143, 233, 144, 7, 150, 226, - 149, 226, 151, 6, -1, 117, 143, 233, 144, 7, - 150, 226, 149, 226, 151, 6, -1, 118, 143, 233, - 144, 7, 150, 226, 149, 226, 151, 6, -1, 119, + 226, 7, 226, 6, -1, 65, 52, 221, 226, 7, + 221, 226, 6, -1, 46, 150, 229, 151, 99, 52, + 150, 221, 151, 6, -1, 49, 150, 229, 151, 99, + 52, 150, 221, 151, 6, -1, 49, 150, 229, 151, + 99, 54, 150, 221, 151, 6, -1, 52, 150, 229, + 151, 99, 54, 150, 221, 151, 6, -1, 80, 6, + -1, 80, 4, 6, -1, 116, 143, 233, 144, 7, + 150, 226, 149, 226, 151, 6, -1, 117, 143, 233, + 144, 7, 150, 226, 149, 226, 151, 6, -1, 118, 143, 233, 144, 7, 150, 226, 149, 226, 151, 6, - -1, 222, -1, 143, 221, 144, -1, 134, 221, -1, - 133, 221, -1, 138, 221, -1, 221, 134, 221, -1, - 221, 133, 221, -1, 221, 135, 221, -1, 221, 136, - 221, -1, 221, 137, 221, -1, 221, 142, 221, -1, - 221, 129, 221, -1, 221, 130, 221, -1, 221, 132, - 221, -1, 221, 131, 221, -1, 221, 128, 221, -1, - 221, 127, 221, -1, 221, 126, 221, -1, 221, 125, - 221, -1, 221, 124, 221, 8, 221, -1, 14, 143, - 221, 144, -1, 15, 143, 221, 144, -1, 16, 143, - 221, 144, -1, 17, 143, 221, 144, -1, 18, 143, - 221, 144, -1, 19, 143, 221, 144, -1, 20, 143, - 221, 144, -1, 21, 143, 221, 144, -1, 22, 143, - 221, 144, -1, 24, 143, 221, 144, -1, 25, 143, - 221, 149, 221, 144, -1, 26, 143, 221, 144, -1, - 27, 143, 221, 144, -1, 28, 143, 221, 144, -1, - 29, 143, 221, 144, -1, 30, 143, 221, 144, -1, - 31, 143, 221, 144, -1, 32, 143, 221, 149, 221, - 144, -1, 33, 143, 221, 149, 221, 144, -1, 34, - 143, 221, 149, 221, 144, -1, 23, 143, 221, 144, - -1, 14, 145, 221, 146, -1, 15, 145, 221, 146, - -1, 16, 145, 221, 146, -1, 17, 145, 221, 146, - -1, 18, 145, 221, 146, -1, 19, 145, 221, 146, - -1, 20, 145, 221, 146, -1, 21, 145, 221, 146, - -1, 22, 145, 221, 146, -1, 24, 145, 221, 146, - -1, 25, 145, 221, 149, 221, 146, -1, 26, 145, - 221, 146, -1, 27, 145, 221, 146, -1, 28, 145, - 221, 146, -1, 29, 145, 221, 146, -1, 30, 145, - 221, 146, -1, 31, 145, 221, 146, -1, 32, 145, - 221, 149, 221, 146, -1, 33, 145, 221, 149, 221, - 146, -1, 34, 145, 221, 149, 221, 146, -1, 23, - 145, 221, 146, -1, 3, -1, 9, -1, 10, -1, - 11, -1, 113, -1, 114, -1, 115, -1, 4, -1, - 4, 152, 150, 221, 151, -1, 4, 145, 221, 146, - -1, 148, 4, 145, 146, -1, 4, 176, -1, 4, - 145, 221, 146, 176, -1, 4, 147, 4, -1, 4, - 145, 221, 146, 147, 4, -1, 4, 147, 4, 176, - -1, 4, 145, 221, 146, 147, 4, 176, -1, 110, - 143, 233, 149, 221, 144, -1, 224, -1, 134, 223, - -1, 133, 223, -1, 223, 134, 223, -1, 223, 133, - 223, -1, 150, 221, 149, 221, 149, 221, 149, 221, - 149, 221, 151, -1, 150, 221, 149, 221, 149, 221, - 149, 221, 151, -1, 150, 221, 149, 221, 149, 221, - 151, -1, 143, 221, 149, 221, 149, 221, 144, -1, - 226, -1, 225, 149, 226, -1, 221, -1, 228, -1, - 150, 151, -1, 150, 229, 151, -1, 134, 150, 229, - 151, -1, 221, 135, 150, 229, 151, -1, 226, -1, - 5, -1, 134, 228, -1, 221, 135, 228, -1, 221, - 8, 221, -1, 221, 8, 221, 8, 221, -1, 46, - 150, 221, 151, -1, 186, -1, 195, -1, 4, 145, - 146, -1, 4, 145, 150, 229, 151, 146, -1, 221, - -1, 228, -1, 229, 149, 221, -1, 229, 149, 228, - -1, 150, 221, 149, 221, 149, 221, 149, 221, 151, - -1, 150, 221, 149, 221, 149, 221, 151, -1, 4, - -1, 4, 147, 96, 147, 4, -1, 150, 232, 151, - -1, 4, 145, 221, 146, 147, 97, -1, 230, -1, - 232, 149, 230, -1, 234, -1, 4, -1, 4, 147, - 4, -1, 4, 145, 221, 146, 147, 4, -1, 5, - -1, 42, -1, 111, 143, 233, 144, -1, 112, 143, - 233, 149, 233, 144, -1, 37, 143, 233, 149, 233, - 144, -1, 38, 143, 233, 144, -1, 39, 143, 233, - 144, -1, 36, 143, 233, 144, -1, 36, 143, 233, - 149, 229, 144, -1 + -1, 119, 143, 233, 144, 7, 150, 226, 149, 226, + 151, 6, -1, 222, -1, 143, 221, 144, -1, 134, + 221, -1, 133, 221, -1, 138, 221, -1, 221, 134, + 221, -1, 221, 133, 221, -1, 221, 135, 221, -1, + 221, 136, 221, -1, 221, 137, 221, -1, 221, 142, + 221, -1, 221, 129, 221, -1, 221, 130, 221, -1, + 221, 132, 221, -1, 221, 131, 221, -1, 221, 128, + 221, -1, 221, 127, 221, -1, 221, 126, 221, -1, + 221, 125, 221, -1, 221, 124, 221, 8, 221, -1, + 14, 143, 221, 144, -1, 15, 143, 221, 144, -1, + 16, 143, 221, 144, -1, 17, 143, 221, 144, -1, + 18, 143, 221, 144, -1, 19, 143, 221, 144, -1, + 20, 143, 221, 144, -1, 21, 143, 221, 144, -1, + 22, 143, 221, 144, -1, 24, 143, 221, 144, -1, + 25, 143, 221, 149, 221, 144, -1, 26, 143, 221, + 144, -1, 27, 143, 221, 144, -1, 28, 143, 221, + 144, -1, 29, 143, 221, 144, -1, 30, 143, 221, + 144, -1, 31, 143, 221, 144, -1, 32, 143, 221, + 149, 221, 144, -1, 33, 143, 221, 149, 221, 144, + -1, 34, 143, 221, 149, 221, 144, -1, 23, 143, + 221, 144, -1, 14, 145, 221, 146, -1, 15, 145, + 221, 146, -1, 16, 145, 221, 146, -1, 17, 145, + 221, 146, -1, 18, 145, 221, 146, -1, 19, 145, + 221, 146, -1, 20, 145, 221, 146, -1, 21, 145, + 221, 146, -1, 22, 145, 221, 146, -1, 24, 145, + 221, 146, -1, 25, 145, 221, 149, 221, 146, -1, + 26, 145, 221, 146, -1, 27, 145, 221, 146, -1, + 28, 145, 221, 146, -1, 29, 145, 221, 146, -1, + 30, 145, 221, 146, -1, 31, 145, 221, 146, -1, + 32, 145, 221, 149, 221, 146, -1, 33, 145, 221, + 149, 221, 146, -1, 34, 145, 221, 149, 221, 146, + -1, 23, 145, 221, 146, -1, 3, -1, 9, -1, + 10, -1, 11, -1, 113, -1, 114, -1, 115, -1, + 4, -1, 4, 152, 150, 221, 151, -1, 4, 145, + 221, 146, -1, 148, 4, 145, 146, -1, 4, 176, + -1, 4, 145, 221, 146, 176, -1, 4, 147, 4, + -1, 4, 145, 221, 146, 147, 4, -1, 4, 147, + 4, 176, -1, 4, 145, 221, 146, 147, 4, 176, + -1, 110, 143, 233, 149, 221, 144, -1, 224, -1, + 134, 223, -1, 133, 223, -1, 223, 134, 223, -1, + 223, 133, 223, -1, 150, 221, 149, 221, 149, 221, + 149, 221, 149, 221, 151, -1, 150, 221, 149, 221, + 149, 221, 149, 221, 151, -1, 150, 221, 149, 221, + 149, 221, 151, -1, 143, 221, 149, 221, 149, 221, + 144, -1, 226, -1, 225, 149, 226, -1, 221, -1, + 228, -1, 150, 151, -1, 150, 229, 151, -1, 134, + 150, 229, 151, -1, 221, 135, 150, 229, 151, -1, + 226, -1, 5, -1, 134, 228, -1, 221, 135, 228, + -1, 221, 8, 221, -1, 221, 8, 221, 8, 221, + -1, 46, 150, 221, 151, -1, 186, -1, 195, -1, + 4, 145, 146, -1, 4, 145, 150, 229, 151, 146, + -1, 221, -1, 228, -1, 229, 149, 221, -1, 229, + 149, 228, -1, 150, 221, 149, 221, 149, 221, 149, + 221, 151, -1, 150, 221, 149, 221, 149, 221, 151, + -1, 4, -1, 4, 147, 96, 147, 4, -1, 150, + 232, 151, -1, 4, 145, 221, 146, 147, 97, -1, + 230, -1, 232, 149, 230, -1, 234, -1, 4, -1, + 4, 147, 4, -1, 4, 145, 221, 146, 147, 4, + -1, 5, -1, 42, -1, 111, 143, 233, 144, -1, + 112, 143, 233, 149, 233, 144, -1, 37, 143, 233, + 149, 233, 144, -1, 38, 143, 233, 144, -1, 39, + 143, 233, 144, -1, 36, 143, 233, 144, -1, 36, + 143, 233, 149, 229, 144, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -1055,21 +1055,21 @@ static const yytype_uint16 yyrline[] = 2728, 2740, 2739, 2751, 2750, 2762, 2761, 2773, 2772, 2784, 2783, 2798, 2801, 2807, 2816, 2836, 2859, 2863, 2887, 2890, 2906, 2909, 2925, 2928, 2941, 2944, 2950, 2953, 2960, 3016, - 3086, 3091, 3158, 3201, 3225, 3251, 3283, 3306, 3329, 3332, - 3341, 3345, 3362, 3399, 3435, 3470, 3510, 3511, 3512, 3513, - 3514, 3515, 3516, 3517, 3518, 3525, 3526, 3527, 3528, 3529, - 3530, 3531, 3532, 3533, 3534, 3535, 3536, 3537, 3538, 3539, - 3540, 3541, 3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549, - 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3558, 3559, 3560, - 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568, 3569, 3570, - 3571, 3572, 3573, 3574, 3575, 3576, 3577, 3578, 3587, 3588, - 3589, 3590, 3591, 3592, 3593, 3597, 3616, 3634, 3649, 3659, - 3675, 3693, 3698, 3703, 3713, 3723, 3731, 3735, 3739, 3743, - 3747, 3754, 3758, 3762, 3766, 3773, 3778, 3785, 3790, 3794, - 3799, 3803, 3811, 3822, 3826, 3838, 3846, 3854, 3861, 3872, - 3892, 3902, 3912, 3922, 3942, 3947, 3951, 3955, 3967, 3971, - 3983, 3990, 4000, 4004, 4019, 4024, 4031, 4035, 4048, 4056, - 4067, 4071, 4079, 4087, 4095, 4103, 4117, 4131, 4135 + 3086, 3091, 3158, 3201, 3225, 3251, 3294, 3317, 3340, 3343, + 3352, 3356, 3373, 3410, 3446, 3481, 3521, 3522, 3523, 3524, + 3525, 3526, 3527, 3528, 3529, 3536, 3537, 3538, 3539, 3540, + 3541, 3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549, 3550, + 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, + 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3569, 3570, 3571, + 3572, 3573, 3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581, + 3582, 3583, 3584, 3585, 3586, 3587, 3588, 3589, 3598, 3599, + 3600, 3601, 3602, 3603, 3604, 3608, 3627, 3645, 3660, 3670, + 3686, 3704, 3709, 3714, 3724, 3734, 3742, 3746, 3750, 3754, + 3758, 3765, 3769, 3773, 3777, 3784, 3789, 3796, 3801, 3805, + 3810, 3814, 3822, 3833, 3837, 3849, 3857, 3865, 3872, 3883, + 3903, 3913, 3923, 3933, 3953, 3958, 3962, 3966, 3978, 3982, + 3994, 4001, 4011, 4015, 4030, 4035, 4042, 4046, 4059, 4067, + 4078, 4082, 4090, 4098, 4106, 4114, 4128, 4142, 4146 }; #endif @@ -1217,7 +1217,7 @@ static const yytype_uint8 yyr2[] = 16, 0, 16, 0, 16, 0, 18, 0, 18, 0, 18, 1, 2, 5, 7, 9, 2, 9, 0, 1, 0, 3, 0, 1, 0, 2, 0, 2, 7, 6, - 8, 5, 5, 6, 6, 6, 10, 10, 10, 10, + 8, 5, 5, 6, 6, 8, 10, 10, 10, 10, 2, 3, 11, 11, 11, 11, 1, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 4, 4, @@ -1296,706 +1296,727 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 100, 0, 0, 0, 340, - 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 186, 0, 0, 0, 0, 0, 0, 0, 0, 155, - 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 181, 0, 159, 160, 0, 0, - 0, 0, 0, 0, 0, 327, 333, 0, 42, 0, - 0, 0, 55, 0, 33, 34, 35, 36, 37, 276, - 297, 277, 298, 278, 299, 279, 300, 280, 301, 281, - 302, 282, 303, 283, 304, 284, 305, 296, 317, 285, - 306, 0, 0, 287, 308, 288, 309, 289, 310, 290, - 311, 291, 312, 292, 313, 0, 0, 0, 0, 0, - 0, 387, 0, 0, 385, 386, 82, 0, 382, 0, - 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, - 76, 0, 0, 0, 0, 328, 0, 0, 0, 0, - 0, 25, 23, 0, 0, 0, 0, 362, 0, 0, - 357, 263, 356, 366, 367, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, - 0, 0, 0, 0, 0, 230, 235, 233, 0, 241, - 0, 0, 89, 90, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 128, 130, 0, 0, - 0, 0, 0, 0, 0, 0, 221, 0, 183, 0, - 0, 0, 0, 0, 237, 242, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, - 0, 0, 0, 0, 378, 0, 0, 0, 0, 0, - 0, 330, 0, 326, 0, 0, 0, 0, 0, 29, + 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, + 0, 340, 339, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, + 0, 155, 0, 0, 151, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 181, 0, 159, 160, + 0, 0, 0, 0, 0, 0, 0, 327, 333, 0, + 42, 0, 0, 0, 55, 0, 33, 34, 35, 36, + 37, 276, 297, 277, 298, 278, 299, 279, 300, 280, + 301, 281, 302, 282, 303, 283, 304, 284, 305, 296, + 317, 285, 306, 0, 0, 287, 308, 288, 309, 289, + 310, 290, 311, 291, 312, 292, 313, 0, 0, 0, + 0, 0, 0, 387, 0, 0, 385, 386, 82, 0, + 382, 0, 0, 0, 0, 0, 57, 0, 0, 0, + 0, 0, 76, 0, 0, 0, 0, 328, 0, 0, + 0, 0, 0, 25, 23, 0, 0, 0, 0, 362, + 0, 0, 357, 263, 356, 366, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 67, 68, 0, 0, 0, 0, 0, - 70, 72, 74, 0, 0, 374, 0, 80, 0, 0, - 0, 0, 275, 24, 0, 0, 0, 0, 0, 359, - 0, 0, 93, 93, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 351, 0, 98, 0, 0, 0, - 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, - 0, 0, 244, 245, 0, 0, 0, 0, 0, 0, - 0, 0, 226, 0, 0, 193, 222, 0, 0, 0, - 149, 0, 0, 243, 0, 153, 152, 0, 30, 31, - 0, 0, 0, 371, 0, 0, 0, 173, 0, 0, - 0, 0, 0, 0, 0, 163, 332, 162, 0, 0, - 0, 0, 345, 0, 286, 307, 293, 314, 294, 315, - 295, 316, 388, 384, 335, 383, 0, 57, 0, 0, - 0, 0, 65, 0, 0, 0, 372, 0, 0, 0, - 0, 26, 27, 0, 0, 95, 0, 358, 0, 0, - 0, 0, 0, 99, 0, 0, 116, 117, 0, 0, - 101, 124, 352, 0, 0, 0, 91, 0, 238, 0, - 0, 0, 0, 0, 0, 228, 0, 165, 0, 0, - 0, 0, 137, 0, 203, 0, 205, 0, 207, 347, - 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, - 0, 0, 0, 104, 105, 0, 0, 0, 0, 83, - 0, 0, 0, 0, 0, 0, 334, 0, 38, 0, - 0, 0, 0, 0, 40, 0, 0, 0, 77, 0, - 0, 78, 0, 375, 139, 140, 141, 142, 0, 0, - 363, 0, 94, 102, 103, 107, 0, 0, 118, 0, - 0, 240, 111, 0, 0, 231, 123, 0, 0, 0, - 0, 108, 229, 0, 125, 0, 0, 0, 344, 0, - 343, 0, 0, 194, 0, 0, 195, 0, 0, 196, - 0, 0, 0, 0, 0, 0, 148, 0, 0, 147, - 0, 0, 143, 0, 0, 0, 0, 369, 0, 175, - 174, 0, 0, 0, 379, 0, 0, 0, 0, 43, - 0, 0, 0, 346, 0, 0, 0, 66, 73, 75, - 0, 81, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 112, 97, 110, 122, 127, 0, 119, 87, 88, - 137, 0, 131, 0, 0, 0, 0, 0, 0, 223, - 0, 0, 137, 0, 0, 0, 0, 134, 133, 0, - 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, - 39, 0, 0, 0, 41, 56, 0, 373, 0, 246, - 247, 248, 249, 115, 0, 0, 0, 0, 342, 0, + 350, 0, 0, 0, 0, 0, 0, 230, 235, 233, + 0, 241, 0, 0, 89, 90, 0, 0, 0, 0, + 0, 0, 0, 262, 261, 0, 0, 0, 0, 0, + 128, 130, 0, 0, 0, 0, 0, 0, 0, 0, + 221, 0, 183, 0, 0, 0, 0, 0, 237, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 188, 0, 0, 0, 0, 0, 368, 176, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, - 0, 228, 129, 0, 209, 0, 0, 211, 0, 0, - 213, 0, 0, 0, 224, 0, 184, 0, 137, 0, - 0, 0, 106, 86, 252, 253, 254, 255, 0, 47, - 0, 53, 0, 0, 92, 229, 0, 341, 197, 0, - 0, 204, 198, 0, 0, 206, 199, 0, 0, 208, - 0, 0, 0, 190, 0, 146, 0, 0, 0, 0, - 0, 0, 0, 120, 0, 215, 0, 217, 0, 219, - 225, 227, 189, 185, 0, 0, 0, 0, 44, 0, - 51, 0, 0, 0, 200, 0, 0, 201, 0, 0, - 202, 0, 0, 150, 0, 144, 0, 45, 0, 0, - 170, 0, 0, 0, 0, 0, 0, 191, 0, 0, - 0, 0, 0, 210, 0, 212, 0, 214, 0, 145, - 46, 48, 0, 49, 0, 0, 0, 0, 0, 0, - 54, 216, 218, 220, 50, 52 + 0, 0, 156, 0, 0, 0, 0, 0, 378, 0, + 0, 0, 0, 0, 0, 330, 0, 326, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 327, 67, 68, 0, + 0, 0, 0, 0, 70, 72, 74, 0, 0, 374, + 0, 80, 0, 0, 0, 0, 275, 24, 0, 0, + 0, 0, 0, 359, 0, 0, 93, 93, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, + 98, 0, 0, 0, 0, 0, 0, 239, 0, 0, + 0, 0, 0, 0, 0, 0, 244, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 226, 0, 0, 193, + 222, 0, 0, 0, 149, 0, 0, 243, 0, 153, + 152, 0, 30, 31, 0, 0, 0, 371, 0, 0, + 0, 173, 0, 0, 0, 0, 0, 0, 0, 163, + 332, 162, 0, 0, 0, 0, 345, 0, 286, 307, + 293, 314, 294, 315, 295, 316, 388, 384, 335, 383, + 0, 57, 0, 0, 0, 0, 65, 0, 0, 0, + 372, 0, 0, 0, 0, 26, 27, 0, 0, 95, + 0, 358, 0, 0, 0, 0, 0, 99, 0, 0, + 116, 117, 0, 0, 101, 124, 352, 0, 0, 0, + 91, 0, 238, 0, 0, 0, 0, 0, 0, 228, + 0, 0, 165, 0, 0, 0, 0, 137, 0, 203, + 0, 205, 0, 207, 347, 0, 0, 0, 0, 187, + 0, 0, 0, 0, 0, 0, 0, 0, 104, 105, + 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 334, 0, 38, 0, 0, 0, 0, 0, 40, + 0, 0, 0, 77, 0, 0, 78, 0, 375, 139, + 140, 141, 142, 0, 0, 363, 0, 94, 102, 103, + 107, 0, 0, 118, 0, 0, 240, 111, 0, 0, + 231, 123, 0, 0, 0, 0, 108, 229, 0, 125, + 245, 0, 0, 0, 344, 0, 343, 0, 0, 194, + 0, 0, 195, 0, 0, 196, 0, 0, 0, 0, + 0, 0, 148, 0, 0, 147, 0, 0, 143, 0, + 0, 0, 0, 369, 0, 175, 174, 0, 0, 0, + 379, 0, 0, 0, 0, 43, 0, 0, 0, 346, + 0, 0, 0, 66, 73, 75, 0, 81, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 112, 97, 110, + 122, 127, 0, 119, 87, 88, 137, 0, 131, 0, + 0, 0, 0, 0, 0, 223, 0, 0, 137, 0, + 0, 0, 0, 134, 133, 0, 0, 0, 0, 84, + 85, 0, 0, 0, 0, 0, 39, 0, 0, 0, + 41, 56, 0, 373, 0, 246, 247, 248, 249, 115, + 0, 0, 0, 0, 342, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, + 0, 0, 0, 368, 176, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 0, 0, 228, 129, 0, + 209, 0, 0, 211, 0, 0, 213, 0, 0, 0, + 224, 0, 184, 0, 137, 0, 0, 0, 106, 86, + 252, 253, 254, 255, 0, 47, 0, 53, 0, 0, + 92, 229, 0, 341, 197, 0, 0, 204, 198, 0, + 0, 206, 199, 0, 0, 208, 0, 0, 0, 190, + 0, 146, 0, 0, 0, 0, 0, 0, 0, 120, + 0, 215, 0, 217, 0, 219, 225, 227, 189, 185, + 0, 0, 0, 0, 44, 0, 51, 0, 0, 0, + 200, 0, 0, 201, 0, 0, 202, 0, 0, 150, + 0, 144, 0, 45, 0, 0, 170, 0, 0, 0, + 0, 0, 0, 191, 0, 0, 0, 0, 0, 210, + 0, 212, 0, 214, 0, 145, 46, 48, 0, 49, + 0, 0, 0, 0, 0, 0, 54, 216, 218, 220, + 50, 52 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 69, 713, 70, 71, 441, 1047, 1053, - 634, 814, 1199, 1346, 635, 1309, 1372, 636, 1348, 637, - 638, 818, 141, 241, 72, 751, 1084, 980, 510, 369, + -1, 2, 3, 69, 715, 70, 71, 441, 1052, 1058, + 636, 818, 1205, 1352, 637, 1315, 1378, 638, 1354, 639, + 640, 822, 141, 241, 72, 753, 1089, 984, 510, 369, 370, 371, 372, 338, 309, 310, 75, 76, 77, 78, - 79, 80, 339, 779, 1267, 1324, 588, 1104, 1107, 1110, - 1289, 1293, 1297, 1335, 1338, 1341, 775, 776, 1093, 882, - 748, 562, 596, 82, 83, 84, 85, 86, 356, 144, - 382, 193, 941, 942, 365, 358, 553, 221, 704, 846, + 79, 80, 339, 783, 1273, 1330, 590, 1110, 1113, 1116, + 1295, 1299, 1303, 1341, 1344, 1347, 779, 780, 1098, 886, + 750, 562, 598, 82, 83, 84, 85, 86, 356, 144, + 382, 193, 945, 946, 365, 358, 553, 221, 706, 850, 432, 433 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -1126 +#define YYPACT_NINF -1143 static const yytype_int16 yypact[] = { - 3354, 52, 47, 3462, -1126, -1126, 1642, 51, 43, -70, - 36, 70, 106, 122, -81, -1, 80, -66, 149, 150, - -12, 160, 181, 136, 281, 286, 295, 305, 410, 297, - 861, 536, 152, 223, 314, 226, 514, 514, 247, 148, - 24, 318, 377, 362, 29, 280, 388, 436, 440, 447, - 312, 350, 358, 21, 19, -1126, 365, -1126, 461, 339, - -1126, 509, 517, 15, 31, 382, 398, 403, 404, -1126, - -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, - -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, 28, 370, - 887, -1126, -1126, -1126, 159, 180, 228, 293, 347, 369, - 451, 475, 523, 543, 554, 568, 571, 589, 642, 647, - 684, 700, 716, 722, 723, 420, 427, 437, 444, -1126, - 546, 455, 462, 470, -1126, -1126, -1126, -1126, -1126, -1126, - -1126, 3238, 3238, 3238, -1126, -1126, 3238, 2831, 23, 548, - 405, 3238, 550, 671, -1126, 586, 611, 3238, 590, -1126, - 3238, -1126, -1126, -1126, 3238, 3065, 3238, 3238, 487, 3238, - 3065, 3238, 3238, 495, 3065, 3238, 3238, 2074, 496, 459, - 499, 500, 1790, 1790, 1790, 503, -1126, -1126, -1126, -1126, - 519, 532, 537, 2074, 2074, 683, 2074, 514, 514, 514, - 3238, 3238, 225, -1126, 248, 514, 556, 560, 581, 3018, - 299, -57, 598, 599, 1790, 2074, 610, 18, 601, -1126, - 809, -1126, 625, 666, 687, 838, 3238, 3238, 3238, 690, - 3238, 698, 750, 3238, 3238, -1126, 3238, 846, -1126, 849, - -1126, 854, -1126, 467, 467, 467, 467, 739, 3238, 884, - 759, -1126, -1126, -1126, 893, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 467, 467, 467, - 467, 3238, 467, 467, 467, 544, 758, 758, 758, 5456, - 41, 3065, 4720, 220, 770, 909, 776, 777, -1126, 784, - 2859, 745, -1126, -1126, 3238, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, -1126, - -1126, 953, -115, 4018, 5477, 706, 788, 3065, -1126, -1126, - 2282, -1126, 665, 5498, 5519, 3238, 5540, 734, 5561, 5582, - 3238, 744, 5603, 5624, 2216, 1493, 2316, 935, -1126, 3238, - 3238, 3238, 3238, -1126, -1126, 936, 943, 943, 3238, 842, - 845, 857, 870, 3238, 3238, 3238, 974, 982, 853, 998, - 49, -1126, -1126, 4044, 4070, 514, 514, 405, 405, 324, - 3238, 3238, 3238, 3018, 3018, 3238, 2859, 366, -1126, 3238, - 3238, 3238, 3238, 1011, 1017, 3238, 1026, -1126, 3238, 3238, - 54, -1126, 3065, 3238, 3238, -1126, 5645, 5666, 5687, 937, - 4096, -1126, 885, 2352, 5708, 4743, -1126, -1126, 771, -1126, - 1675, 749, 892, -1126, 894, 895, 896, 3238, 4766, 260, - 3238, 1, -1126, 5729, 4789, 5750, 4812, 5771, 4835, 5792, - 4858, 5813, 4881, 5834, 4904, 5855, 4927, 5876, 4950, 5897, - 4973, 5918, 4996, 5939, 5019, 4122, 4148, 5960, 5042, 5981, - 5065, 6002, 5088, 6023, 5111, 6044, 5134, 6065, 5157, 4174, - 4200, 4226, 4252, 4278, 4304, -34, 888, 897, 898, 1088, - 912, 901, 913, 3238, -1126, 2074, 2074, 763, 68, 887, - 3238, 1040, 1043, 22, 919, -1126, -14, 147, 155, 88, - -1126, -1126, 2424, 1346, 922, 1446, 1446, 769, 769, 769, - 769, 164, 164, 758, 758, 758, 758, -1126, 2, 3065, - 3238, 1059, 2870, 3238, 758, -1126, 3238, 3065, 3065, 968, - 1061, 1062, 6086, 1063, 972, 1065, 1066, 6107, 975, 1068, - 1084, 3065, -1126, 779, 2358, 3238, 6128, 2988, 6149, 6170, - 3238, 2074, 1093, 1086, 6191, 3201, 3201, 3201, 3201, 6212, - 6233, 6254, 2074, 2074, 951, -1126, 514, 3238, 3238, -1126, - -1126, 949, 950, 3238, 4330, 4356, 4382, 2929, 9, 514, - 1826, 6275, 3149, 6296, 6317, 3238, 1097, 3238, 6338, -1126, - 5180, 5203, -1126, 782, 5226, 5249, 1098, 1099, 1100, 957, - 3238, 1968, 3238, 3238, -1126, 30, -1126, -1126, 3238, 1104, - 1103, 1105, 1106, 1107, 5272, 341, -1126, 3194, -1126, 973, - 976, 965, -1126, 1111, -1126, -1126, -1126, -1126, -1126, -1126, - -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, - -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, - -1126, 3238, 3238, -1126, -1126, -1126, -1126, -1126, -1126, -1126, - -1126, -1126, -1126, -1126, -1126, 3238, 3238, 3238, 3238, 3238, - 3238, -1126, 3065, 467, -1126, -1126, -1126, 3238, -1126, 467, - 5295, 1112, 1115, 977, -1126, 27, 3238, 1118, 1121, 1242, - -1126, 1122, 985, 21, 1125, -1126, 3065, 3065, 3065, 3065, - 3238, -1126, 1002, 467, -10, 4408, 514, -1126, 3065, 3353, - 2458, 758, -1126, 2282, -1126, 1081, 2074, 2074, 1128, 2074, - 882, 2074, 2074, 1129, 1083, 2074, 2074, 790, -1126, 3065, - 1305, 1131, 1133, 1134, 1135, 2682, -1126, -1126, 1137, -1126, - 1140, 1004, 6569, -1126, 1005, 1006, 1007, 1146, 1148, 1150, - 1152, 1153, 1156, 409, 4434, 4460, -1126, -1126, 3458, 514, - 514, 514, 1155, 1012, 1021, -30, -1126, 466, -1126, 9, - 1159, 1162, 1163, 1165, 6569, -1126, 1329, 1024, 1171, 1176, - 1136, 1180, 1181, 2074, 2074, 2074, 1185, 4486, -1126, 2494, - 632, 1187, 1188, 5318, -1126, 1044, 1047, 1048, 1049, 1194, - 1189, -1126, 1197, -1126, 1064, 3238, 3238, 2074, 1055, -1126, - 6359, 5341, 6380, 5364, 6401, 5387, 6422, 5410, 58, 1082, - 6443, 1085, -96, -1126, -1126, 206, 325, 1080, 1199, 1416, - -1126, -1126, -1126, 21, 3238, -1126, 797, -1126, 798, 802, - 805, 806, 6569, -1126, 1203, 7, 3238, 62, 811, -1126, - 3238, 1060, 1169, 1169, 2074, 1225, 1087, 1089, 1226, 1227, - 2074, 1090, 1228, 1229, -1126, 812, -1126, 1231, 2074, 2074, - 2074, 1237, 1239, -1126, 2074, 1240, 1244, 1246, 1247, 2074, - 2074, 2074, -1126, -1126, 282, 3238, 3238, 3238, 1096, -55, - -52, 201, -1126, 2074, 3238, -1126, -1126, 3018, -11, 1932, - -1126, 1110, 2500, -1126, 3065, -1126, -1126, 1114, -1126, -1126, - 1250, 1251, 1166, -1126, 3238, 3238, 3238, -1126, 1256, 1259, - 1120, 2074, 2074, 2074, 2074, -1126, 260, -1126, 3238, 4512, - 4538, 815, -1126, 3238, -1126, -1126, -1126, -1126, -1126, -1126, - -1126, -1126, -1126, -1126, -1126, -1126, 2074, 887, 3238, 1262, - 1265, 22, -1126, 1264, 5433, 21, -1126, 1266, 1267, 1269, - 1270, -1126, -1126, 467, 4564, -1126, 1132, 6569, 3238, 514, - 1275, 1277, 1278, -1126, 3238, 3238, -1126, -1126, 1282, 3238, - -1126, -1126, -1126, 1284, 1306, 1308, 1172, 3238, -1126, 1309, - 2074, 2074, 2074, 2074, 1310, 1313, 1312, -1126, 3201, 3486, - 6464, 1716, 405, 514, 1315, 514, 1317, 514, 1318, 288, - 1177, 6485, 3514, 492, -1126, 1319, 1276, 1324, 514, 1276, - 1325, 818, 3238, -1126, -1126, 2074, 2863, 593, 6506, -1126, - 2642, 1328, 1192, 1201, 1202, 1204, -1126, 72, 6569, 3238, - 3238, 2074, 1184, 819, 6569, 1330, 1331, 1486, -1126, 1336, - 1349, -1126, 1209, -1126, -1126, -1126, -1126, -1126, 1353, 3238, - -1126, 3542, 345, -1126, -1126, -1126, 3570, 3598, -1126, 3626, - 1355, -1126, -1126, 1232, 1356, 6569, -1126, 1357, 1358, 1359, - 1379, -1126, 1238, 1381, -1126, 1566, 1386, 1243, -1126, 3238, - -1126, 1245, 511, -1126, 1248, 516, -1126, 1252, 518, -1126, - 1253, 1388, 2074, 1390, 1254, 3238, -1126, 2689, 545, -1126, - 549, 559, -1126, 1389, 3654, 1307, 3238, -1126, 3238, -1126, - -1126, 3065, 1858, 1394, -1126, 2074, 2074, 2074, 2074, -1126, - 3238, 4590, 4616, -1126, 2074, 3238, 1400, -1126, -1126, -1126, - 21, -1126, 1311, -1126, 4642, 1401, 1405, 1406, 1407, 1409, - 1268, -1126, -1126, -1126, -1126, -1126, 2074, -1126, -1126, -1126, - 405, 3058, -1126, 3018, 9, 3018, 9, 3018, 9, -1126, - 822, 2074, -1126, 3682, 514, 3065, 514, -1126, -1126, 3238, - 3710, 3738, 825, -1126, -1126, 1272, 1274, 1292, 1293, 1271, - 6569, 3238, 3238, 826, 6569, -1126, 1410, -1126, 3238, -1126, - -1126, -1126, -1126, -1126, 3238, 831, 1294, 3238, -1126, 3766, - 603, 143, 3794, 605, 254, 3822, 637, 359, 2074, 1411, - 1354, 2110, 1296, 639, 835, 644, 2000, -1126, -1126, 1422, - 1442, 1461, 1462, 1463, 3238, 6527, 4668, 37, -1126, 4694, - 3850, 1466, -1126, 3878, 1479, 3238, 1480, 1481, 3238, 1483, - 1484, 3238, 1485, 1342, -1126, 3238, -1126, 9, -1126, 3065, - 1488, 2689, -1126, -1126, -1126, -1126, -1126, -1126, 844, -1126, - 3238, -1126, 2074, 3238, -1126, -1126, 1489, -1126, -1126, 1348, - 3906, -1126, -1126, 1351, 3934, -1126, -1126, 1378, 3962, -1126, - 1499, 2142, 378, 2252, 852, -1126, 708, 860, 1500, 1380, - 6548, 863, 3990, -1126, 9, 1523, 9, 1525, 9, 1526, - -1126, -1126, -1126, -1126, 9, 1527, 3065, 1528, -1126, 467, - -1126, 1385, 1530, 387, -1126, 1387, 413, -1126, 1404, 415, - -1126, 1417, 435, -1126, 868, -1126, 876, -1126, 1418, 2074, - -1126, 1532, 9, 1549, 9, 1550, 9, -1126, 1551, 467, - 1553, 467, 879, -1126, 452, -1126, 457, -1126, 468, -1126, - -1126, -1126, 880, -1126, 1554, 1563, 1564, 1567, 467, 1583, - -1126, -1126, -1126, -1126, -1126, -1126 + 3463, 50, 9, 3571, -1143, -1143, 1835, 59, 8, -32, + 31, 174, 193, 215, -103, 91, 150, 144, 181, 209, + -36, 218, 228, 276, 312, 324, 327, 340, 184, 351, + 523, 457, 70, 270, 377, 285, 358, 358, 305, 326, + 38, 443, 453, 424, -3, 128, 436, 512, 518, 521, + 391, 394, 397, 11, 40, -1143, 400, -1143, 540, 405, + -1143, 559, 566, 2, 13, 447, 464, 469, 481, -1143, + -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, + -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, 24, 470, + 189, -1143, -1143, -1143, 92, 279, 322, 410, 421, 433, + 452, 460, 473, 478, 516, 544, 545, 554, 576, 593, + 613, 620, 638, 639, 644, 484, 492, 506, 513, -1143, + 653, 524, 527, 536, -1143, -1143, -1143, -1143, -1143, -1143, + -1143, 3284, 3284, 3284, -1143, -1143, 3284, 3024, 10, 678, + 347, 3284, 704, 1203, -1143, 720, 754, 3284, 686, -1143, + 3284, -1143, -1143, -1143, 3284, 3211, 3284, 3284, 582, 3284, + 3211, 3284, 3284, 594, 3211, 3284, 3284, 2267, 598, 592, + 623, 652, 1983, 1983, 1983, 665, -1143, -1143, -1143, -1143, + 673, 689, 701, 2267, 3284, 808, 2267, 358, 358, 358, + 3284, 3284, -5, -1143, 200, 358, 683, 742, 750, 1209, + 247, -100, 709, 713, 1983, 2267, 726, 25, 744, -1143, + 817, -1143, 753, 766, 768, 867, 3284, 3284, 3284, 767, + 3284, 765, 819, 3284, 3284, -1143, 3284, 910, -1143, 911, + -1143, 913, -1143, 79, 79, 79, 79, 775, 3284, 917, + 776, -1143, -1143, -1143, 919, 3284, 3284, 3284, 3284, 3284, + 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, + 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, + 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, + 3284, 3284, 3284, 3284, 3284, 3284, 3284, 79, 79, 79, + 79, 3284, 79, 79, 79, 575, 785, 785, 785, 5698, + 39, 3211, 4962, 66, 781, 922, 787, 780, -1143, 782, + 3645, 1443, -1143, -1143, 3284, 3284, 3284, 3284, 3284, 3284, + 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, -1143, + -1143, 1490, -78, 4260, 5719, -42, 788, 3211, -1143, -1143, + 2875, -1143, -9, 5740, 5761, 3284, 5782, 637, 5803, 5824, + 3284, 642, 5845, 5866, 2409, 1520, 2974, 924, -1143, 3284, + 3284, 3284, 3284, -1143, -1143, 928, 930, 930, 3284, 796, + 797, 814, 815, 3284, 3284, 3284, 952, 1693, 820, 955, + -71, -1143, -1143, 4286, 4312, 358, 358, 347, 347, 158, + 3284, 3284, 3284, 1209, 1209, 3284, 3645, 287, -1143, 3284, + 3284, 3284, 3284, 958, 959, 3284, 956, -1143, 3284, 3284, + 1043, -1143, 3211, 3284, 3284, -1143, 5887, 5908, 5929, 871, + 4338, -1143, 821, 3018, 5950, 4985, -1143, -1143, 1868, -1143, + 2019, 662, 824, -1143, 825, 826, 828, 3284, 5008, 68, + 3284, 6, -1143, 5971, 5031, 5992, 5054, 6013, 5077, 6034, + 5100, 6055, 5123, 6076, 5146, 6097, 5169, 6118, 5192, 6139, + 5215, 6160, 5238, 6181, 5261, 4364, 4390, 6202, 5284, 6223, + 5307, 6244, 5330, 6265, 5353, 6286, 5376, 6307, 5399, 4416, + 4442, 4468, 4494, 4520, 4546, -59, 829, 830, 833, 1552, + 832, 835, 836, 3284, -1143, 2267, 2267, 666, 75, 189, + 3284, 967, 980, 22, 840, -1143, 187, 227, -26, 336, + -1143, -1143, 3056, 511, 669, 615, 615, 685, 685, 685, + 685, 597, 597, 785, 785, 785, 785, -1143, 7, 3211, + 3284, 981, 3063, 3284, 785, -1143, 3284, 3211, 3211, 890, + 983, 985, 6328, 986, 895, 989, 990, 6349, 900, 994, + 996, 3211, -1143, 679, 2551, 3284, 6370, 3135, 6391, 6412, + 3284, 2267, 1000, 999, 6433, 3347, 3347, 3347, 3347, 6454, + 6475, 6496, 2267, 3284, 2409, 1001, 859, -1143, 358, 3284, + 3284, -1143, -1143, 861, 864, 3284, 4572, 4598, 4624, 4234, + 221, 358, 2161, 6517, 3314, 6538, 6559, 3284, 1004, 3284, + 6580, -1143, 5422, 5445, -1143, 680, 5468, 5491, 1009, 1010, + 1011, 872, 3284, 2303, 3284, 3284, -1143, 27, -1143, -1143, + 3284, 1017, 1015, 1016, 1019, 1020, 5514, 321, -1143, 3462, + -1143, 881, 886, 880, -1143, 1027, -1143, -1143, -1143, -1143, + -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, + -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, + -1143, -1143, -1143, 3284, 3284, -1143, -1143, -1143, -1143, -1143, + -1143, -1143, -1143, -1143, -1143, -1143, -1143, 3284, 3284, 3284, + 3284, 3284, 3284, -1143, 3211, 79, -1143, -1143, -1143, 3284, + -1143, 79, 5537, 1028, 1029, 891, -1143, 16, 3284, 1030, + 1032, 1653, -1143, 1033, 896, 11, 1036, -1143, 3211, 3211, + 3211, 3211, 3284, -1143, 915, 79, -53, 4650, 358, -1143, + 3211, 3646, 3204, 785, -1143, 2875, -1143, 991, 2267, 2267, + 1039, 2267, 786, 2267, 2267, 1040, 997, 2267, 2267, 690, + -1143, 3211, 1761, 1047, 1050, 1051, 1052, 2993, -1143, -1143, + 1044, -1143, 1053, 918, 6811, -1143, 921, 923, 925, 1054, + 1059, 1063, 1065, 818, 1174, 3284, 1068, 304, 4676, 4702, + -1143, -1143, 3674, 358, 358, 358, 1067, 926, 931, -31, + -1143, 366, -1143, 221, 1071, 1069, 1072, 1073, 6811, -1143, + 2051, 932, 1075, 1077, 1034, 1078, 1079, 2267, 2267, 2267, + 1083, 4728, -1143, 3277, 1513, 1084, 1097, 5560, -1143, 954, + 960, 962, 963, 1102, 1105, -1143, 1108, -1143, 973, 3284, + 3284, 2267, 969, -1143, 6601, 5583, 6622, 5606, 6643, 5629, + 6664, 5652, 349, 976, 6685, 977, 142, -1143, -1143, 82, + 289, 978, 1116, 2193, -1143, -1143, -1143, 11, 3284, -1143, + 694, -1143, 698, 699, 702, 706, 6811, -1143, 1118, 47, + 3284, 5, 710, -1143, 3284, 982, 1074, 1074, 2267, 1121, + 987, 988, 1124, 1133, 2267, 992, 1135, 1137, -1143, 711, + -1143, 1139, 2267, 2267, 2267, 1142, 1144, -1143, 2267, 1141, + 1146, 1148, 1149, 2267, 2267, 2267, -1143, 1693, 335, 3284, + 3284, 3284, 1008, -47, 194, 249, -1143, 2267, 3284, -1143, + -1143, 1209, -28, 2125, -1143, 1012, 2693, -1143, 3211, -1143, + -1143, 1014, -1143, -1143, 1145, 1159, 1081, -1143, 3284, 3284, + 3284, -1143, 1160, 1161, 1022, 2267, 2267, 2267, 2267, -1143, + 68, -1143, 3284, 4754, 4780, 714, -1143, 3284, -1143, -1143, + -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, + 2267, 189, 3284, 1168, 1163, 22, -1143, 1172, 5675, 11, + -1143, 1177, 1178, 1180, 1181, -1143, -1143, 79, 4806, -1143, + 1042, 6811, 3284, 358, 1184, 1185, 1186, -1143, 3284, 3284, + -1143, -1143, 1187, 3284, -1143, -1143, -1143, 1190, 1191, 1192, + 1100, 3284, -1143, 1194, 2267, 2267, 2267, 2267, 1197, 1201, + 1200, 1204, -1143, 3347, 3702, 6706, 1909, 347, 358, 1205, + 358, 1210, 358, 1215, 315, 1058, 6727, 3730, 370, -1143, + 1216, 1365, 1239, 358, 1365, 1240, 715, 3284, -1143, -1143, + 2267, 3590, 643, 6748, -1143, 2835, 1211, 1098, 1099, 1101, + 1103, -1143, 368, 6811, 3284, 3284, 2267, 1046, 719, 6811, + 1245, 1247, 2335, -1143, 1249, 1248, -1143, 1112, -1143, -1143, + -1143, -1143, -1143, 1254, 3284, -1143, 3758, 584, -1143, -1143, + -1143, 3786, 3814, -1143, 3842, 1257, -1143, -1143, 1214, 1260, + 6811, -1143, 1261, 1262, 1264, 1266, -1143, 1123, 1268, -1143, + -1143, 2477, 1269, 1126, -1143, 3284, -1143, 1127, 395, -1143, + 1129, 402, -1143, 1131, 466, -1143, 1132, 1271, 2267, 1277, + 1143, 3284, -1143, 2882, 468, -1143, 477, 532, -1143, 1281, + 3870, 1195, 3284, -1143, 3284, -1143, -1143, 3211, 2619, 1286, + -1143, 2267, 2267, 2267, 2267, -1143, 3284, 4832, 4858, -1143, + 2267, 3284, 1290, -1143, -1143, -1143, 11, -1143, 1217, -1143, + 4884, 1291, 1306, 1307, 1309, 1312, 1170, -1143, -1143, -1143, + -1143, -1143, 2267, -1143, -1143, -1143, 347, 3618, -1143, 1209, + 221, 1209, 221, 1209, 221, -1143, 723, 2267, -1143, 3898, + 358, 3211, 358, -1143, -1143, 3284, 3926, 3954, 727, -1143, + -1143, 1193, 1198, 1199, 1202, 1171, 6811, 3284, 3284, 728, + 6811, -1143, 1319, -1143, 3284, -1143, -1143, -1143, -1143, -1143, + 3284, 731, 1207, 3284, -1143, 3982, 535, -18, 4010, 552, + -15, 4038, 560, 147, 2267, 1335, 1280, 2445, 1212, 562, + 732, 574, 2651, -1143, -1143, 1342, 1345, 1354, 1355, 1357, + 3284, 6769, 4910, 32, -1143, 4936, 4066, 1360, -1143, 4094, + 1359, 3284, 1361, 1364, 3284, 1366, 1367, 3284, 1371, 1220, + -1143, 3284, -1143, 221, -1143, 3211, 1372, 2882, -1143, -1143, + -1143, -1143, -1143, -1143, 735, -1143, 3284, -1143, 2267, 3284, + -1143, -1143, 1394, -1143, -1143, 1252, 4122, -1143, -1143, 1255, + 4150, -1143, -1143, 1256, 4178, -1143, 1398, 2686, 223, 2587, + 736, -1143, 579, 739, 1401, 1258, 6790, 747, 4206, -1143, + 221, 1403, 221, 1404, 221, 1406, -1143, -1143, -1143, -1143, + 221, 1407, 3211, 1408, -1143, 79, -1143, 1265, 1410, 253, + -1143, 1267, 264, -1143, 1270, 388, -1143, 1272, 401, -1143, + 748, -1143, 755, -1143, 1273, 2267, -1143, 1412, 221, 1413, + 221, 1415, 221, -1143, 1418, 79, 1420, 79, 758, -1143, + 406, -1143, 414, -1143, 438, -1143, -1143, -1143, 759, -1143, + 1421, 1422, 1423, 1424, 79, 1426, -1143, -1143, -1143, -1143, + -1143, -1143 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1126, -1126, -1126, -1126, 735, -1126, -1126, -1126, -1126, 255, - -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, -1126, - -1126, -1126, -299, 4, -1126, -332, -1126, 728, 1589, -1126, - -1126, -1126, -1126, 3, -376, -192, -1126, -1126, -1126, -1126, - -1126, -1126, 1590, -1126, -1126, -1126, -1126, -1126, -1126, -1126, - -1126, -1126, -1126, -1126, -1126, -1126, -609, -705, 343, -1126, - -1126, 1230, -1126, -1126, -1126, -1126, -1126, -1126, -6, -1126, - -21, -1126, -1125, 449, -124, 73, -125, -682, 634, -1126, - -233, 8 + -1143, -1143, -1143, -1143, 507, -1143, -1143, -1143, -1143, 183, + -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, -1143, + -1143, -1143, -298, 35, -1143, 63, -1143, 577, 1439, -1143, + -1143, -1143, -1143, 3, -384, -197, -1143, -1143, -1143, -1143, + -1143, -1143, 1444, -1143, -1143, -1143, -1143, -1143, -1143, -1143, + -1143, -1143, -1143, -1143, -1143, -1143, -726, -720, 191, -1143, + -1143, 1086, -1143, -1143, -1143, -1143, -1143, -1143, -6, -1143, + -20, -1143, -1142, 557, -104, 126, -128, -681, 490, -1143, + -213, 19 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -5 +#define YYTABLE_NINF -260 static const yytype_int16 yytable[] = { - 143, 434, 435, 436, 500, 628, 74, 396, 711, 158, - 142, 581, 582, 972, 145, 192, 194, 410, 200, 1203, - 229, 845, 406, 222, 407, 219, 702, 303, 201, 528, - 342, 836, 237, 207, 529, 347, 231, 801, 428, 351, - 430, 1215, 149, 1281, 134, 135, 772, 5, 495, 366, - 367, 810, 773, 774, 485, 486, 487, 488, 4, 490, - 491, 492, 154, 163, 146, 772, 7, 8, 975, 155, - 906, 773, 774, 148, 202, 694, 151, 159, 385, 386, - 403, 385, 386, 203, 160, 772, 399, 629, 630, 631, - 632, 773, 774, 400, 1013, 147, 1014, 1015, 244, 1016, - 506, 15, 16, 507, 18, 19, 508, 21, 509, 23, - 681, 24, 152, 26, 27, 682, 29, 30, 31, 304, - 305, 905, 34, 837, 838, 296, 297, 298, 153, 154, - 299, 302, 712, 208, 855, 311, 706, 712, 164, 538, - 1024, 331, 156, 308, 333, 50, 51, 52, 334, 340, - 343, 344, 633, 346, 340, 348, 349, 1311, 340, 352, - 353, 963, 223, 408, 496, 230, 380, 381, 134, 135, - 908, 220, 703, 238, 389, 239, 497, 802, 397, 209, - 240, 232, 385, 386, 383, 384, 150, 1282, 127, 128, - 129, 130, 167, 384, 196, 385, 386, 197, 576, 696, - 198, 183, 952, 906, 184, 602, 590, 538, 134, 135, - 416, 417, 418, 694, 420, 695, 1139, 423, 424, 772, - 425, 1140, 158, 157, 1362, 773, 774, 499, 341, 611, - 163, 166, 438, 341, 754, 755, 756, 341, 709, 443, + 143, 207, 396, 583, 584, 500, 74, 229, 1209, 5, + 630, 979, 410, 713, 303, 219, 192, 194, 231, 200, + 840, 434, 435, 436, 849, 145, 704, 342, 237, 406, + 1221, 407, 347, 428, 805, 430, 351, 149, 1287, 163, + 154, 142, 201, 399, 222, 776, 495, 155, 776, 163, + 400, 777, 778, 976, 777, 778, 4, 912, 776, 910, + 147, 776, 385, 386, 777, 778, 528, 777, 778, 366, + 367, 529, 146, 499, 485, 486, 487, 488, 578, 490, + 491, 492, 696, 431, 243, 683, 385, 386, 202, 696, + 684, 859, 631, 632, 633, 634, 538, 203, 134, 135, + 403, 208, 1018, 532, 1019, 239, 304, 305, 140, 244, + 240, 148, 841, 842, 164, 115, 116, 117, 118, 183, + 909, 119, 184, 1029, 710, 296, 297, 298, 385, 386, + 299, 302, 210, 1262, 211, 311, 1265, 714, 385, 386, + 538, 331, 539, 308, 333, 387, 1317, 209, 334, 340, + 343, 344, 230, 346, 340, 348, 349, 635, 340, 352, + 353, 220, 496, 232, 134, 135, 967, 380, 381, 238, + 408, 239, 705, 497, 806, 389, 240, 714, 377, 397, + 151, 150, 1288, 223, 383, 384, 127, 128, 129, 130, + 122, 123, 910, 384, 243, 127, 128, 129, 130, 152, + 698, 592, 127, 128, 129, 130, 134, 135, 134, 135, + 416, 417, 418, 1368, 420, 134, 135, 423, 424, 158, + 425, 153, 697, 776, 613, 115, 116, 117, 118, 777, + 778, 119, 438, 172, 156, 245, 173, 246, 174, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 188, 189, 1063, 210, 489, 211, 603, 1007, 1008, - 159, 190, 161, 162, 1256, 340, 536, 707, 199, 325, - 326, 327, 245, 165, 246, 708, 328, 501, 512, 513, + 484, 341, 134, 135, 605, 489, 341, 159, 1068, 814, + 341, 385, 386, 157, 160, 340, 961, 776, 1268, 776, + 122, 123, 158, 777, 778, 777, 778, 585, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 247, 166, 248, 127, 128, 129, 130, - 772, 534, 957, 168, 385, 386, 773, 774, 169, 542, - 127, 128, 129, 130, 547, 431, 243, 170, 534, 340, - 1017, 175, 1018, 556, 557, 558, 559, 171, 385, 386, - 134, 135, 564, 186, 579, 580, 185, 569, 570, 571, - 204, 249, 381, 250, 341, 387, 187, 115, 116, 117, - 118, 385, 386, 119, 584, 585, 586, 296, 297, 587, - 308, 308, 812, 591, 592, 593, 594, 195, 388, 598, - 134, 135, 600, 601, 714, 1259, 340, 604, 605, 307, - 535, 206, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 554, 326, 327, 737, 535, 341, 205, - 328, 624, 385, 386, 627, 772, 251, 212, 252, 1111, - 213, 773, 774, 626, 214, 127, 128, 129, 130, 398, - 829, 215, 122, 123, 772, 216, 831, 385, 386, 172, - 773, 774, 173, 772, 174, 134, 135, 225, 1206, 773, - 774, 431, 243, 583, 35, 36, 37, 38, 385, 386, - 854, 134, 135, 43, 226, 341, 46, 690, 810, 772, - 253, 772, 254, 217, 699, 773, 774, 773, 774, 385, - 386, 218, 697, 115, 116, 117, 118, 698, 224, 119, - 1262, 772, 255, 227, 256, 589, 906, 773, 774, 906, - 242, 228, 906, 340, 715, 233, 690, 719, 772, 1322, - 720, 721, 723, 772, 773, 774, 956, 958, 1351, 773, - 774, 234, 385, 386, 772, 340, 235, 236, 721, 740, - 773, 774, 306, 291, 745, 763, 312, 828, 895, 752, - 752, 752, 752, 287, 1353, 1221, 1355, 1224, 777, 1227, - 288, 764, 765, 753, 753, 753, 753, 768, 122, 123, - 289, 848, 849, 850, 851, 180, 1357, 290, 181, 784, - 182, 786, 329, 858, 257, 332, 258, 906, 292, 385, - 386, 1128, 341, 1375, 797, 293, 799, 800, 1376, 360, - 722, 724, 803, 294, 875, 907, 357, 330, 259, 1377, - 260, 364, 364, 364, 341, 385, 386, 722, 906, 811, - 345, 906, 376, 377, 906, 379, 1101, 906, 350, 359, - 926, 1115, 361, 362, 385, 386, 368, 188, 189, 385, - 386, 385, 386, 364, 404, 820, 821, 190, 1302, 906, - 1173, 906, 373, 906, 191, 1175, 261, 1177, 262, 822, - 823, 824, 825, 826, 827, 374, 340, 313, 385, 386, - 375, 830, 385, 386, 134, 135, 263, 378, 264, 493, - 839, 239, 385, 386, 1184, 857, 240, 265, 1185, 266, - 340, 340, 340, 340, 852, 1333, 390, 1336, 1186, 1339, - 391, 267, 340, 268, 269, 1342, 270, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 392, 271, 340, 272, 328, 385, 386, 385, 386, - 1068, 401, 402, 1364, 1129, 1366, 409, 1368, 899, 900, - 901, 511, 1255, 405, 1258, 341, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 385, 386, 385, 386, 328, 412, 927, 385, 386, 341, - 341, 341, 341, 7, 8, 273, 1261, 274, 1269, 1031, - 275, 341, 276, 1271, 1216, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 939, - 940, 413, 341, 328, 538, 411, 539, 506, 15, 16, - 507, 18, 19, 508, 21, 509, 23, 277, 24, 278, - 26, 27, 414, 29, 30, 31, 811, 419, 964, 34, - 959, 385, 386, 279, 415, 280, 134, 135, 421, 422, - 974, 532, 426, 239, 977, 427, 140, 1326, 240, 281, - 429, 282, 50, 51, 52, 283, 285, 284, 286, 314, + 524, 525, 526, 536, 161, 431, 243, 385, 386, 776, + 154, 534, 167, 385, 386, 777, 778, 708, 501, 542, + 776, 1012, 1013, 1020, 547, 1021, 777, 778, 534, 340, + 388, 307, 162, 556, 557, 558, 559, 115, 116, 117, + 118, 165, 564, 119, 168, 581, 582, 569, 570, 571, + 159, 166, 196, 381, 1328, 197, 169, 709, 198, 170, + 385, 386, 385, 386, 586, 587, 588, 296, 297, 589, + 308, 308, 171, 593, 594, 595, 596, 398, 1022, 600, + 1023, 716, 602, 603, 1357, 175, 340, 606, 607, 127, + 128, 129, 130, 185, 816, 1359, 35, 36, 37, 38, + 385, 386, 247, 739, 248, 43, 186, 341, 46, 134, + 135, 626, 122, 123, 629, 187, 591, 385, 386, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 538, 437, 544, 1023, 328, 439, 1009, - 1010, 1011, 243, 538, 618, 548, 619, 1019, 1021, 442, - 328, 1022, 323, 324, 325, 326, 327, 176, 340, 440, - 177, 328, 538, 178, 693, 179, 503, 502, 1036, 1037, - 1038, 504, 616, 115, 116, 117, 118, 140, 538, 119, - 738, 538, 1048, 790, 866, 505, 867, 1054, 533, 538, - 1046, 874, 555, 560, 691, 692, 965, 538, 966, 967, - 561, 538, 1057, 968, 538, 538, 969, 970, 1072, 527, - 538, 538, 976, 992, 1051, 1056, 1052, 538, 1145, 1123, - 1146, 1228, 1071, 1229, 538, 1051, 1239, 1247, 1076, 1077, - 1051, 572, 1251, 1079, 538, 565, 1270, 341, 566, 573, - 1231, 1085, 1102, 1145, 1105, 1308, 1108, 574, 122, 123, - 567, 538, 1095, 1325, 575, 1118, 1192, 1120, 1121, 538, - 746, 1327, 1051, 568, 1331, 308, 1096, 538, 595, 1358, - 340, 760, 761, 340, 597, 1359, 1124, 1360, 1051, 1378, - 1374, 1379, 599, 609, 1132, 612, 620, 683, 621, 622, - 623, 684, 685, 1141, 1142, 688, 700, 701, 1133, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 1234, 687, 689, 1154, 328, 705, 716, 725, 726, 727, - 729, 730, 731, 732, 734, 735, 1303, 314, 315, 316, + 554, 326, 327, 899, 1227, 195, 1230, 328, 1233, 188, + 189, 134, 135, 535, 776, 249, 1117, 250, 814, 190, + 777, 778, 833, 206, 628, 1212, 199, 776, 835, 166, + 535, 341, 776, 777, 778, 212, 711, 692, 777, 778, + 776, 188, 189, 956, 701, 204, 777, 778, 538, 385, + 386, 190, 858, 385, 386, 205, 180, 910, 191, 181, + 910, 182, 1145, 910, 776, 911, 213, 1146, 700, 1121, + 777, 778, 214, 340, 717, 215, 692, 721, 385, 386, + 722, 723, 725, 699, 216, 385, 386, 217, 341, 1361, + 218, 960, 962, 224, 1179, 340, 225, 1308, 723, 742, + 226, 1181, 1363, 251, 747, 252, 832, 1381, 767, 754, + 754, 754, 754, 227, 253, 1382, 254, 763, 764, 176, + 228, 781, 177, 768, 769, 178, 255, 179, 256, 772, + 852, 853, 854, 855, 755, 755, 755, 755, 910, 1383, + 233, 788, 862, 790, 1339, 257, 1342, 258, 1345, 385, + 386, 385, 386, 259, 1348, 260, 801, 234, 803, 804, + 385, 386, 235, 879, 807, 1183, 261, 1190, 262, 910, + 242, 263, 910, 264, 236, 910, 1191, 287, 910, 756, + 757, 758, 1370, 1107, 1372, 288, 1374, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 289, + 910, 1134, 910, 328, 910, 341, 290, 824, 825, 265, + 291, 266, 815, 724, 726, 385, 386, 292, 385, 386, + 293, 826, 827, 828, 829, 830, 831, 341, 340, 294, + 724, 1192, 306, 834, 1261, 385, 386, 267, 269, 268, + 270, 332, 843, 385, 386, 385, 386, 271, 861, 272, + 535, 1264, 340, 340, 340, 340, 856, 385, 386, 1267, + 312, 1275, 385, 386, 340, 134, 135, 385, 386, 273, + 493, 274, 239, 1277, 357, 345, 329, 240, 1332, 364, + 364, 364, 325, 326, 327, 340, 275, 350, 276, 328, + 376, 359, 360, 379, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 903, 904, 905, 277, 328, 278, 897, + 330, 364, 404, 279, 1073, 280, 361, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 281, 283, 282, 284, 328, 538, 285, 544, 286, + 1036, 538, 1222, 548, 1135, 362, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 620, 368, 621, + 341, 328, 378, 943, 944, 538, 373, 695, 323, 324, + 325, 326, 327, 411, -259, -259, -259, 328, 538, 538, + 740, 794, 374, 390, 341, 341, 341, 341, 870, 538, + 871, 878, 968, 969, 375, 970, 341, 538, 538, 971, + 972, 538, 401, 973, 978, 538, 402, 974, 981, 538, + 538, 980, 996, 1056, 538, 1057, 1129, 341, 1151, 405, + 1152, 815, 1234, 415, 1235, 963, 538, 1056, 1245, 1253, + 1056, 538, 1257, 1276, 1151, 538, 1314, 1331, 538, 409, + 1333, 1028, 391, 1014, 1015, 1016, 1056, 538, 1337, 1364, + 392, 1024, 1026, 412, 1365, 1027, 1366, 1056, 1384, 1380, + 1385, 413, 340, 414, 419, 421, 426, 427, 422, 429, + 437, 439, 1041, 1042, 1043, 442, 440, 328, 502, 503, + 140, 555, 504, 505, 575, 560, 1053, 561, 533, 565, + 566, 1059, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, 1062, 567, 568, 572, + 328, 577, 601, 1077, 576, 597, 599, 611, 622, 623, + 624, 614, 625, 702, 686, 1051, 1076, 687, 685, 690, + 1061, 689, 1081, 1082, 703, 691, 707, 1084, 718, 727, + 728, 1237, 729, 731, 732, 1090, 733, 734, 1108, 736, + 1111, 737, 1114, 738, 749, 751, 766, 1101, 765, 1198, + 789, 1124, 770, 1126, 1127, 771, 797, 798, 799, 800, + 308, 808, 809, 810, 819, 340, 811, 812, 340, 820, + 821, 1130, 1102, 823, 837, 838, 844, 839, 845, 1138, + 847, 848, 851, 865, 341, 857, 868, 874, 1147, 1148, + 887, 875, 693, 694, 881, 7, 8, 882, 883, 884, + 888, 893, 889, 1240, 1139, 890, 894, 891, 1160, 892, + 895, 896, 898, 906, 908, 914, 907, 1309, 913, 915, + 916, 919, 918, 920, 922, 923, 921, 927, 932, 506, + 15, 16, 507, 18, 19, 508, 21, 509, 23, 1177, + 24, 933, 26, 27, 935, 29, 30, 31, 939, 940, + 936, 34, 937, 938, 941, 1189, 942, 534, 748, 947, + 957, 959, 1353, 965, 975, 964, 1196, 987, 1197, 762, + 990, 340, 982, 983, 50, 51, 52, 988, 989, 991, + 1206, 994, 993, 995, 997, 1210, 1001, 1310, 1004, 1313, + 1002, 1038, 1376, 1005, 1379, 1006, 1007, 341, 1017, 1226, + 341, 1229, 1033, 1232, 1037, 1039, 1044, 1064, 1045, 1046, + 1239, 1390, 1241, 1225, 1063, 1228, 1040, 1231, 1066, 308, + -258, -258, -258, 1069, 1070, 340, 1071, 1072, 1075, 1242, + 1078, 1079, 1080, 1083, 604, 1085, 1150, 1086, 1087, 1088, + 1091, 1251, 1252, 1096, 1350, 1097, 1099, 1118, 1255, 313, + 1100, 1109, 87, 295, 1256, 1140, 1112, 1259, 91, 92, + 93, 1115, 1122, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 1059, 1125, 1128, 1141, 1142, 535, + 1143, 1153, 1144, 1154, 1157, 1296, 1156, 1312, 1300, 1158, + 1159, 1304, 1165, 341, 1166, 1307, 1167, 1168, 1169, 340, + 1170, 340, 1171, 1172, 1173, 1175, 1176, 1185, 1178, 1180, + 1316, 1182, 1184, 1318, 1187, 866, 867, 1193, 869, 1195, + 872, 873, 1200, 1188, 876, 877, 1211, 1215, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, 1216, 1217, 1213, 1218, 328, 341, 1219, 121, + 1220, 1250, 124, 125, 126, 1254, 340, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 1270, 393, 394, 1246, 328, 1271, 133, 1279, 1247, + 1248, 1280, 395, 1249, 924, 925, 926, 139, 1258, 191, + 1281, 1282, 1274, 1283, 1291, 1294, 977, 1297, 87, 335, + 1298, 1306, 1301, 1302, 91, 92, 93, 1305, 1311, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 1319, 341, 1320, 341, 1326, 1322, 1324, 1334, 1335, 1340, + 1343, 336, 1346, 1349, 1351, 1355, 1356, 1358, 1369, 1371, + 1360, 1373, 1362, 1367, 1375, 986, 1377, 1386, 1387, 1388, + 1389, 992, 1391, 1284, 35, 36, 37, 38, 39, 998, + 999, 1000, 73, 43, 985, 1003, 46, 81, 1292, 511, + 1008, 1009, 1010, 563, 1011, 1065, 0, 0, 341, 0, + 0, 0, 0, 0, 1025, 0, 0, 0, 0, 0, + 1032, 0, 0, 1035, 0, 121, 0, 0, 124, 125, + 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1047, 1048, 1049, 1050, 527, 0, 393, 1123, + 0, 0, 0, 133, 0, 0, 0, 0, 395, 0, + 0, 0, 0, 139, 0, 191, 552, 1060, 0, 0, + 0, 930, 0, 87, 335, 0, 0, 0, 0, 91, + 92, 93, 0, 0, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 0, 0, 0, 688, 0, + 0, 1092, 1093, 1094, 1095, 0, 336, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 0, 0, 0, 0, 328, 0, 0, 0, 35, + 36, 37, 38, 39, 0, 0, 0, 1131, 43, 0, + 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1149, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, + 121, 0, 328, 124, 125, 126, 0, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 736, 749, 1171, 686, 328, 1347, 747, 762, 341, - 766, 767, 341, 785, 796, 793, 794, 795, 804, 1183, - 805, 534, 806, 807, 808, 817, 815, 819, 833, 816, - 1190, 834, 1191, 835, 840, 340, 1370, 841, 1373, 843, - 844, 847, 853, 861, 1200, 864, 870, 871, 877, 1204, - 878, 879, 880, 883, 1304, 1384, 1307, 884, 885, 886, - 887, 888, 1220, 889, 1223, 890, 1226, 891, 892, 893, - 894, 902, 903, 1233, 904, 1235, 909, 1219, 910, 1222, - 911, 1225, 912, 308, 914, 862, 863, 915, 865, 340, - 868, 869, 916, 1236, 872, 873, 918, 919, 917, 923, - 535, 928, 929, 936, 931, 1245, 1246, 932, 933, 934, - 935, 1344, 1249, 937, 341, 943, 961, 938, 1250, 971, - 978, 1253, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 953, 960, 979, 955, - 328, 983, 986, 987, 990, 991, 993, 984, 1054, 985, - 989, 997, 920, 921, 922, 998, 1012, 1000, 842, 1290, - 1306, 1001, 1294, 1002, 1003, 1298, 1033, 1034, 341, 1301, - 1028, 1035, 1039, 340, 1032, 340, 1040, 1041, 1058, 1059, - 1061, 1083, 1064, 1065, 1310, 1066, 1067, 1312, 1070, 87, - 335, 1073, 1160, 1074, 1075, 91, 92, 93, 1078, 1080, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 876, 1081, 982, 1082, 1086, 1091, 1092, 1094, 988, - 340, 1103, 336, 1106, 1109, 1116, 1112, 994, 995, 996, - 1119, 1122, 1134, 999, 1144, 913, 1147, 1148, 1004, 1005, - 1006, 1135, 341, 1150, 341, 35, 36, 37, 38, 39, - 1136, 1137, 1020, 1138, 43, 1151, 1152, 46, 1027, 1153, - 1159, 1030, 1161, 1162, 1163, 1164, 314, 315, 316, 317, + 327, 0, 0, 131, 337, 328, 0, 931, 133, 846, + 0, 0, 0, 136, 0, 0, 0, 0, 139, 0, + 0, 552, 0, 0, 0, 1186, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 1042, 1043, 1044, 1045, 328, 1165, 121, 1167, 1166, 124, - 125, 126, 1169, 1170, 1179, 1187, 1172, 1181, 1174, 341, - 1194, 1189, 1176, 1178, 1182, 1055, 1205, 1209, 1207, 393, - 1117, 1210, 1211, 1212, 133, 1213, 1248, 1264, 1214, 395, - 1265, 1244, 962, 1240, 139, 1241, 191, 552, 1273, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 1242, 1243, 1252, 1268, 328, 1274, 1087, - 1088, 1089, 1090, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 1275, 1276, 1277, - 1285, 328, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 1125, 1288, 1291, 1292, 328, 1295, - 1296, 1299, 1149, 1300, 1305, 1313, 87, 335, 1314, 1278, - 1143, 1316, 91, 92, 93, 1320, 1328, 94, 95, 96, + 0, 0, 0, 0, 328, 0, 87, 335, 1201, 1202, + 1203, 1204, 91, 92, 93, 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 1318, 1334, - 1329, 1337, 1340, 1343, 1345, 1349, 1350, 1352, 1363, 336, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 1354, 1365, 1367, 1369, 328, 1371, - 1380, 1180, 35, 36, 37, 38, 39, 1356, 1361, 1381, - 1382, 43, 1168, 1383, 46, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 1195, 1196, 1197, 1198, 328, 1385, - 973, 981, 73, 81, 1286, 1060, 0, 563, 0, 0, - 0, 0, 0, 121, 0, 0, 124, 125, 126, 0, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 0, 0, 131, 337, 328, 0, - 1230, 133, 0, 0, 0, 0, 136, 0, 0, 0, - 0, 139, 0, 0, 552, 87, 88, 89, 0, 90, - 0, 91, 92, 93, 0, 0, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 1263, 115, 116, - 117, 118, 0, 0, 119, 0, 0, 7, 8, 0, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, + 0, 0, 0, 0, 1236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 506, 15, 16, 507, 18, 19, 508, 21, 509, - 23, 0, 24, 0, 26, 27, 0, 29, 30, 31, - 0, 0, 0, 34, 0, 0, 120, 0, 0, 0, - 0, 0, 121, 122, 123, 124, 125, 126, 0, 0, - 0, 0, 127, 128, 129, 130, 50, 51, 52, 0, - 0, 0, 0, 0, 0, 131, 132, 0, 0, 0, - 133, 0, 134, 135, 0, 136, 0, 137, 0, 138, - 139, 0, 140, 87, 335, 363, 0, 0, 0, 91, - 92, 93, 0, 0, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 0, 617, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 7, 8, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 0, 0, 0, 0, 328, 35, - 36, 37, 38, 39, 1193, 1099, 0, 1100, 43, 0, - 0, 46, 506, 15, 16, 507, 18, 19, 508, 21, - 509, 23, 0, 24, 0, 26, 27, 0, 29, 30, - 31, 0, 0, 0, 34, 0, 0, 0, 0, 0, - 121, 0, 0, 124, 125, 126, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 51, 52, - 0, 0, 0, 131, 354, 0, 0, 0, 133, 0, - 0, 0, 0, 136, 0, 87, 335, 1025, 139, 0, - 355, 91, 92, 93, 0, 0, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 778, 336, 0, - 7, 8, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 35, 36, 37, 38, 39, 1272, 0, 0, 0, - 43, 0, 0, 46, 506, 15, 16, 507, 18, 19, + 0, 0, 35, 36, 37, 38, 39, 880, 0, 0, + 0, 43, 0, 0, 46, 0, 0, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 1269, 0, 0, 0, 328, 0, 0, 0, 0, + 0, 0, 0, 121, 0, 0, 124, 125, 126, 0, + 0, 0, 0, 0, 0, 0, 0, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 573, 574, 325, 326, + 327, 133, 0, 0, 0, 328, 136, 0, 87, 88, + 89, 139, 90, 355, 91, 92, 93, 0, 0, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 115, 116, 117, 118, 0, 0, 119, 0, 0, + 7, 8, 0, 0, 0, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, + 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 506, 15, 16, 507, 18, 19, 508, 21, 509, 23, 0, 24, 0, 26, 27, 0, - 29, 30, 31, 0, 0, 0, 34, 0, 0, 0, - 0, 0, 121, 0, 0, 124, 125, 126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 51, 52, 0, 0, 0, 131, 354, 0, 0, 0, - 133, 0, 0, 0, 0, 136, 0, 87, 335, 0, - 139, 0, 1026, 91, 92, 93, 0, 0, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 798, - 336, 0, 7, 8, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 35, 36, 37, 38, 39, 1321, 0, - 0, 0, 43, 0, 0, 46, 506, 15, 16, 507, - 18, 19, 508, 21, 509, 23, 0, 24, 0, 26, - 27, 0, 29, 30, 31, 0, 0, 0, 34, 0, - 0, 0, 0, 0, 121, 0, 0, 124, 125, 126, + 29, 30, 31, 0, 0, 0, 34, 0, 0, 120, + 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, + 126, 0, 0, 0, 0, 127, 128, 129, 130, 50, + 51, 52, 0, 0, 0, 0, 0, 0, 131, 132, + 0, 0, 0, 133, 0, 134, 135, 0, 136, 0, + 137, 0, 138, 139, 0, 140, 87, 335, 363, 0, + 0, 0, 91, 92, 93, 0, 0, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 0, 618, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, + 0, 7, 8, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, + 0, 328, 35, 36, 37, 38, 39, 917, 1105, 0, + 1106, 43, 0, 0, 46, 506, 15, 16, 507, 18, + 19, 508, 21, 509, 23, 0, 24, 0, 26, 27, + 0, 29, 30, 31, 0, 0, 0, 34, 0, 0, + 0, 0, 0, 121, 0, 0, 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 50, 51, 52, 0, 0, 0, 131, 354, 0, - 0, 0, 133, 0, 0, 0, 0, 136, 0, 87, - 335, 0, 139, 0, 355, 91, 92, 93, 0, 0, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1266, 336, 0, 7, 8, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 0, 0, 0, 328, 35, 36, 37, 38, 39, - 536, 0, 0, 0, 43, 0, 0, 46, 506, 15, - 16, 507, 18, 19, 508, 21, 509, 23, 0, 24, - 0, 26, 27, 0, 29, 30, 31, 0, 0, 0, - 34, 0, 0, 0, 536, 0, 121, 0, 0, 124, - 125, 126, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 51, 52, 0, 0, 0, 131, - 337, 0, 0, 0, 133, 0, 0, 0, 0, 136, - 613, 87, 335, 0, 139, 0, 551, 91, 92, 93, - 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1323, 336, 0, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 537, 326, 327, - 0, 0, 0, 0, 328, 0, 0, 35, 36, 37, - 38, 39, 710, 0, 0, 0, 43, 0, 0, 46, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 554, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 0, 860, 0, 121, 0, - 0, 124, 125, 126, 0, 0, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 131, 337, 0, 328, 0, 133, 0, 0, 0, - 0, 136, 925, 87, 335, 0, 139, 0, 739, 91, - 92, 93, 0, 0, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 0, 0, 0, 0, 328, 0, 0, 35, - 36, 37, 38, 39, 0, 0, 0, 0, 43, 0, - 0, 46, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 121, 0, 0, 124, 125, 126, 0, 0, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 0, 131, 354, 0, 328, 0, 133, 0, - 0, 0, 0, 136, 0, 87, 295, 243, 139, 0, - 1029, 91, 92, 93, 0, 0, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 0, 115, 116, - 117, 118, 0, 0, 119, 0, 0, 0, 0, 0, - 0, 0, 87, 335, 0, 0, 0, 0, 91, 92, + 50, 51, 52, 0, 0, 0, 131, 354, 0, 0, + 0, 133, 0, 0, 0, 0, 136, 0, 87, 335, + 1030, 139, 0, 355, 91, 92, 93, 0, 0, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 619, 336, 0, 7, 8, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, + 0, 0, 0, 328, 35, 36, 37, 38, 39, 966, + 0, 0, 0, 43, 0, 0, 46, 506, 15, 16, + 507, 18, 19, 508, 21, 509, 23, 0, 24, 0, + 26, 27, 0, 29, 30, 31, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 121, 0, 0, 124, 125, + 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 50, 51, 52, 0, 0, 0, 131, 354, + 0, 0, 0, 133, 0, 0, 0, 0, 136, 0, + 87, 335, 0, 139, 0, 1031, 91, 92, 93, 0, + 0, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 782, 336, 0, 7, 8, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 0, 0, 0, 0, 328, 35, 36, 37, 38, + 39, 1155, 0, 0, 0, 43, 0, 0, 46, 506, + 15, 16, 507, 18, 19, 508, 21, 509, 23, 0, + 24, 0, 26, 27, 0, 29, 30, 31, 0, 0, + 0, 34, 0, 0, 0, 0, 0, 121, 0, 0, + 124, 125, 126, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 51, 52, 0, 0, 0, + 131, 354, 0, 0, 0, 133, 0, 0, 0, 0, + 136, 0, 87, 335, 0, 139, 0, 355, 91, 92, 93, 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, - 0, 0, 121, 122, 123, 124, 125, 126, 35, 36, - 37, 38, 39, 0, 0, 0, 0, 43, 0, 0, - 46, 0, 0, 0, 0, 131, 132, 0, 0, 0, - 133, 0, 0, 0, 0, 136, 0, 0, 0, 0, - 139, 0, 1131, 0, 0, 0, 0, 0, 0, 121, - 0, 0, 124, 125, 126, 0, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 0, 393, 1117, 328, 0, 0, 133, 0, 0, - 0, 0, 395, 0, 87, 295, 0, 139, 0, 191, + 0, 0, 0, 0, 802, 336, 0, 7, 8, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 0, 0, 0, 0, 328, 35, 36, + 37, 38, 39, 1174, 0, 0, 0, 43, 0, 0, + 46, 506, 15, 16, 507, 18, 19, 508, 21, 509, + 23, 0, 24, 0, 26, 27, 0, 29, 30, 31, + 0, 0, 0, 34, 0, 0, 0, 0, 0, 121, + 0, 0, 124, 125, 126, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 50, 51, 52, 0, + 0, 0, 131, 337, 0, 0, 0, 133, 0, 0, + 0, 0, 136, 0, 87, 335, 0, 139, 0, 551, 91, 92, 93, 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, 0, - 0, 7, 8, 87, 295, 0, 0, 0, 0, 91, - 92, 93, 0, 0, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 506, 15, 16, 507, 18, - 19, 508, 21, 509, 23, 0, 24, 0, 26, 27, - 0, 29, 30, 31, 0, 0, 0, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1272, 336, 0, 7, + 8, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, + 35, 36, 37, 38, 39, 1199, 0, 0, 0, 43, + 0, 0, 46, 506, 15, 16, 507, 18, 19, 508, + 21, 509, 23, 0, 24, 0, 26, 27, 0, 29, + 30, 31, 0, 0, 0, 34, 0, 1278, 0, 0, 0, 121, 0, 0, 124, 125, 126, 0, 0, 0, - 50, 51, 52, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 132, 0, 0, 0, 133, - 0, 0, 0, 0, 136, 0, 0, 300, 0, 139, - 121, 301, 0, 124, 125, 126, 0, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 131, 132, 328, 0, 0, 133, 0, - 0, 0, 1126, 136, 1127, 0, 717, 0, 139, 0, - 718, 87, 295, 0, 0, 0, 0, 91, 92, 93, - 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 0, 87, 335, - 0, 328, 0, 494, 91, 92, 93, 0, 577, 94, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, + 52, 0, 0, 0, 131, 337, 0, 0, 0, 133, + 0, 0, 1327, 0, 136, 0, 87, 335, 0, 139, + 0, 741, 91, 92, 93, 0, 0, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1329, 336, + 0, 0, 0, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, + 0, 328, 35, 36, 37, 38, 39, 0, 0, 0, + 0, 43, 0, 0, 46, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, + 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 121, 0, 0, 124, 125, 126, 0, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 0, 131, 354, 328, 0, + 0, 133, 0, 0, 0, 0, 136, 0, 87, 295, + 243, 139, 0, 1034, 91, 92, 93, 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 0, 115, 116, 117, 118, 0, 0, 119, 0, 0, + 0, 0, 0, 536, 0, 87, 335, 0, 0, 0, + 0, 91, 92, 93, 0, 0, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 121, 0, - 328, 124, 125, 126, 35, 36, 37, 38, 39, 742, - 0, 0, 0, 43, 0, 0, 46, 0, 0, 0, - 0, 393, 394, 0, 0, 0, 133, 0, 0, 0, - 0, 395, 0, 0, 0, 0, 139, 0, 191, 0, - 0, 0, 0, 0, 0, 121, 0, 0, 124, 125, - 126, 0, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 131, 337, - 328, 0, 0, 133, 87, 295, 243, 1217, 136, 1218, - 91, 92, 93, 139, 0, 94, 95, 96, 97, 98, + 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, + 126, 35, 36, 37, 38, 39, 0, 0, 0, 0, + 43, 0, 0, 46, 0, 0, 0, 0, 131, 132, + 0, 0, 0, 133, 0, 0, 0, 0, 136, 0, + 0, 0, 536, 139, 0, 1137, 0, 0, 0, 0, + 0, 0, 121, 0, 0, 124, 125, 126, 0, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 537, 326, 327, 0, 0, 393, 1123, 328, 0, 0, + 133, 0, 0, 0, 0, 395, 615, 87, 295, 0, + 139, 0, 191, 91, 92, 93, 0, 0, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 885, + 0, 0, 0, 0, 712, 0, 87, 295, 0, 0, + 0, 0, 91, 92, 93, 0, 0, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 554, + 326, 327, 0, 0, 0, 0, 328, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 0, 0, 0, 121, 328, 0, 124, 125, 126, + 0, 0, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 0, 131, 132, 0, + 328, 0, 133, 0, 0, 0, 0, 136, 0, 0, + 300, 0, 139, 121, 301, 0, 124, 125, 126, 0, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 0, 131, 132, 328, 0, + 0, 133, 0, 0, 0, 0, 136, 0, 0, 719, + 0, 139, 864, 720, 87, 335, 0, 0, 0, 0, + 91, 92, 93, 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 0, 115, 116, 117, - 118, 87, 295, 119, 0, 0, 0, 91, 92, 93, - 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, - 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 121, 122, 123, 124, 125, 126, 0, 314, 315, + 109, 110, 111, 112, 113, 114, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 336, 0, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, + 35, 36, 37, 38, 39, 929, 744, 87, 295, 43, + 0, 0, 46, 91, 92, 93, 0, 0, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 0, + 0, 121, 0, 0, 124, 125, 126, 0, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 0, 0, 131, 132, 328, 0, 0, 133, - 0, 0, 0, 0, 136, 813, 0, 0, 121, 139, - 0, 124, 125, 126, -4, 1, 0, 0, -4, 0, - 0, 0, 0, 0, 0, 0, -4, -4, 0, 0, - 0, 131, 132, 0, 0, 0, 133, 0, 0, 0, - 0, 136, 0, 0, 0, 0, 139, 0, 0, -4, - 0, 0, 0, 0, -4, -4, 0, -4, -4, 0, - -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, - 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, - 0, -4, -4, -4, -4, -4, -4, -4, -4, 0, - -4, -4, -4, -4, -4, -4, 0, 0, -4, -4, - 0, 0, 0, 0, -4, -4, -4, -4, 0, 0, - -4, 0, -4, 0, -4, -4, -4, -4, -4, -4, - -4, -4, -4, -4, 0, 0, 6, 0, 0, 0, - -4, -4, -4, -4, 7, 8, 0, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 9, 0, 0, - 0, 0, 10, 11, 859, 12, 13, 0, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 0, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, - 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, - 43, 44, 45, 46, 0, 0, 47, 48, 0, 0, - 0, 0, 49, 50, 51, 52, 0, 0, 53, 0, - 54, 0, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 0, 0, 0, 0, 0, 0, 65, 66, - 67, 68, 314, 315, 316, 317, 318, 319, 320, 321, + 326, 327, 0, 0, 131, 337, 328, 0, 0, 133, + 87, 295, 243, 0, 136, 0, 91, 92, 93, 139, + 0, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 0, 115, 116, 117, 118, 0, 0, 119, + 0, 0, 0, 0, 121, 0, 0, 124, 125, 126, + 0, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 0, 0, 131, 132, 328, + 0, 0, 133, 0, 0, 0, 0, 136, 0, 0, + 0, 0, 139, 0, 0, 0, 0, 0, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 0, 0, 0, 0, 328, 121, 122, 123, + 124, 125, 126, -4, 1, 785, 0, -4, 0, 0, + 0, 0, 0, 0, 0, -4, -4, 0, 0, 0, + 131, 132, 0, 0, 0, 133, 0, 0, 0, 0, + 136, 0, 0, 0, 0, 139, 0, 0, -4, 0, + 0, 0, 0, -4, -4, 0, -4, -4, 0, -4, + -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, + -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, + -4, -4, -4, -4, -4, -4, -4, -4, 0, -4, + -4, -4, -4, -4, -4, 0, 0, -4, -4, 0, + 0, 0, 0, -4, -4, -4, -4, 0, 0, -4, + 0, -4, 0, -4, -4, -4, -4, -4, -4, -4, + -4, -4, -4, 0, 0, 6, 0, 0, 0, -4, + -4, -4, -4, 7, 8, 0, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 0, 0, 0, 328, 0, 9, 0, 0, 0, + 0, 10, 11, 817, 12, 13, 0, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, + 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, + 44, 45, 46, 0, 0, 47, 48, 7, 8, 0, + 0, 49, 50, 51, 52, 0, 0, 53, 0, 54, + 0, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 0, 0, 0, 0, 0, 0, 65, 66, 67, + 68, 506, 15, 16, 507, 18, 19, 508, 21, 509, + 23, 0, 24, 0, 26, 27, 0, 29, 30, 31, + 0, 0, 0, 34, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, + 0, 0, 328, 0, 0, 0, 50, 51, 52, 1132, + 0, 1133, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 0, 0, 0, 0, 0, 898, + 328, 0, 0, 0, 0, 0, 0, 1223, 0, 1224, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 0, 0, 1097, 314, 315, + 0, 0, 0, 0, 0, 0, 0, 863, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 0, 0, 0, 0, 1114, 314, 315, 316, 317, + 0, 0, 0, 0, 0, 902, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, - 0, 0, 0, 1155, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 1103, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, - 0, 1156, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 1120, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 0, 0, 0, 0, 0, 1157, + 328, 0, 0, 0, 0, 0, 0, 0, 0, 1161, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 0, 0, 1158, 314, 315, + 0, 0, 0, 0, 0, 0, 0, 1162, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 0, 0, 0, 0, 1188, 314, 315, 316, 317, + 0, 0, 0, 0, 0, 1163, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, - 0, 0, 0, 1232, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 1164, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, - 0, 1237, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 1194, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 1238, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 0, 0, 1254, 314, 315, + 0, 0, 0, 0, 0, 0, 0, 1243, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 0, 0, 0, 0, 1257, 314, 315, 316, 317, + 0, 0, 0, 0, 0, 1244, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 1260, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, - 0, 1284, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 1263, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 0, 0, 0, 0, 0, 1287, + 328, 0, 0, 0, 0, 0, 0, 0, 0, 1266, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 0, 0, 1315, 314, 315, + 0, 0, 0, 0, 0, 0, 0, 1290, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 0, 0, 0, 0, 1317, 314, 315, 316, 317, + 0, 0, 0, 0, 0, 1293, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, - 0, 0, 0, 1319, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 1321, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, - 0, 1332, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 1323, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 0, 0, 0, 530, 314, 315, + 328, 0, 0, 0, 0, 0, 0, 0, 0, 1325, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, + 0, 0, 0, 0, 0, 0, 0, 1338, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 0, 0, 577, 314, 315, 316, 317, 318, 319, + 326, 327, 0, 0, 0, 0, 328, 0, 494, 0, + 0, 0, 0, 579, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 0, 0, 0, 0, 0, 578, + 0, 0, 328, 0, 0, 0, 0, 0, 0, 530, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 610, 314, 315, 316, 317, + 0, 0, 0, 0, 0, 579, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, - 0, 661, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 580, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 0, 0, 0, 662, 314, 315, + 328, 0, 0, 0, 0, 0, 0, 612, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 0, 0, 675, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 663, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 0, 0, 0, 0, 0, 676, + 0, 0, 328, 0, 0, 0, 0, 0, 0, 664, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 677, 314, 315, 316, 317, @@ -2008,596 +2029,617 @@ static const yytype_int16 yytable[] = 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 680, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 0, 0, 0, 0, 0, 769, + 0, 0, 328, 0, 0, 0, 0, 0, 0, 681, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 770, 314, 315, 316, 317, + 0, 0, 0, 0, 0, 682, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, - 0, 771, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 773, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 0, 0, 0, 856, 314, 315, + 328, 0, 0, 0, 0, 0, 0, 774, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 0, 0, 896, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 775, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 0, 0, 0, 0, 0, 897, + 0, 0, 328, 0, 0, 0, 0, 0, 0, 860, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 924, 314, 315, 316, 317, + 0, 0, 0, 0, 0, 900, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, - 0, 1049, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 901, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 0, 0, 0, 1050, 314, 315, + 328, 0, 0, 0, 0, 0, 0, 928, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 0, 0, 1069, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 1054, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 0, 0, 0, 0, 0, 1201, + 0, 0, 328, 0, 0, 0, 0, 0, 0, 1055, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 1202, 314, 315, 316, 317, + 0, 0, 0, 0, 0, 1074, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, - 0, 1208, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 1207, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 0, 0, 0, 1280, 314, 315, + 328, 0, 0, 0, 0, 0, 0, 1208, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 0, 0, 1283, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 1214, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 0, 0, 498, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 0, 0, 615, + 0, 0, 328, 0, 0, 0, 0, 0, 0, 1286, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 625, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328, 0, 0, 0, 640, 314, 315, 316, 317, + 0, 0, 0, 0, 0, 1289, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 0, 0, 0, 328, 0, 0, 0, 642, 314, + 0, 0, 0, 0, 328, 0, 0, 0, 498, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, - 0, 644, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 617, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 646, 314, 315, 316, 317, 318, + 328, 0, 0, 0, 627, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, - 0, 0, 0, 328, 0, 0, 0, 648, 314, 315, + 0, 0, 0, 328, 0, 0, 0, 642, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 650, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 644, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, - 0, 0, 0, 652, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 646, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 0, 0, 654, 314, 315, 316, + 0, 0, 328, 0, 0, 0, 648, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 0, 0, 656, + 327, 0, 0, 0, 0, 328, 0, 0, 0, 650, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 658, 314, 315, 316, 317, 318, 319, 320, + 0, 0, 652, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328, 0, 0, 0, 660, 314, 315, 316, 317, + 0, 328, 0, 0, 0, 654, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 0, 0, 0, 328, 0, 0, 0, 664, 314, + 0, 0, 0, 0, 328, 0, 0, 0, 656, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, - 0, 666, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 658, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 668, 314, 315, 316, 317, 318, + 328, 0, 0, 0, 660, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, - 0, 0, 0, 328, 0, 0, 0, 670, 314, 315, + 0, 0, 0, 328, 0, 0, 0, 662, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 672, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 666, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, - 0, 0, 0, 674, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 668, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 0, 0, 788, 314, 315, 316, + 0, 0, 328, 0, 0, 0, 670, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 0, 0, 789, + 327, 0, 0, 0, 0, 328, 0, 0, 0, 672, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 0, 0, 791, 314, 315, 316, 317, 318, 319, 320, + 0, 0, 674, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328, 0, 0, 0, 792, 314, 315, 316, 317, + 0, 328, 0, 0, 0, 676, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 0, 0, 0, 328, 0, 0, 0, 809, 314, + 0, 0, 0, 0, 328, 0, 0, 0, 792, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, - 0, 832, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 793, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 0, 0, 930, 314, 315, 316, 317, 318, + 328, 0, 0, 0, 795, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, - 0, 0, 0, 328, 0, 0, 0, 945, 314, 315, + 0, 0, 0, 328, 0, 0, 0, 796, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, 0, - 947, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 813, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, - 0, 0, 0, 949, 314, 315, 316, 317, 318, 319, + 0, 0, 0, 836, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 0, 0, 951, 314, 315, 316, + 0, 0, 328, 0, 0, 0, 934, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 0, 0, 1062, + 327, 0, 0, 0, 0, 328, 0, 0, 0, 949, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 494, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, - 0, 531, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 0, 951, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, + 0, 328, 0, 0, 0, 953, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 0, 0, 0, 0, 328, 0, 0, 0, 955, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 0, 0, 0, 0, 328, 0, 0, + 0, 1067, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 540, 314, 315, 316, 317, 318, 319, 320, + 328, 0, 494, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328, 0, 541, 314, 315, 316, 317, 318, 319, + 0, 328, 0, 531, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 543, 314, 315, 316, 317, 318, + 0, 0, 328, 0, 540, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, - 0, 0, 0, 328, 0, 545, 314, 315, 316, 317, + 0, 0, 0, 328, 0, 541, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 0, 0, 0, 328, 0, 546, 314, 315, 316, + 0, 0, 0, 0, 328, 0, 543, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 549, 314, 315, + 327, 0, 0, 0, 0, 328, 0, 545, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 0, 0, 0, 0, 328, 0, 550, 314, + 326, 327, 0, 0, 0, 0, 328, 0, 546, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 0, 0, 0, 0, 328, 0, 606, + 325, 326, 327, 0, 0, 0, 0, 328, 0, 549, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 607, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 550, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 608, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 614, 314, 315, 316, 317, 318, 319, 320, + 328, 0, 609, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328, 0, 639, 314, 315, 316, 317, 318, 319, + 0, 328, 0, 610, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 641, 314, 315, 316, 317, 318, + 0, 0, 328, 0, 616, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, - 0, 0, 0, 328, 0, 643, 314, 315, 316, 317, + 0, 0, 0, 328, 0, 641, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 0, 0, 0, 328, 0, 645, 314, 315, 316, + 0, 0, 0, 0, 328, 0, 643, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 647, 314, 315, + 327, 0, 0, 0, 0, 328, 0, 645, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 0, 0, 0, 0, 328, 0, 649, 314, + 326, 327, 0, 0, 0, 0, 328, 0, 647, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 0, 0, 0, 0, 328, 0, 651, + 325, 326, 327, 0, 0, 0, 0, 328, 0, 649, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 653, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 651, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, - 0, 655, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 653, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 657, 314, 315, 316, 317, 318, 319, 320, + 328, 0, 655, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328, 0, 659, 314, 315, 316, 317, 318, 319, + 0, 328, 0, 657, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 663, 314, 315, 316, 317, 318, + 0, 0, 328, 0, 659, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, - 0, 0, 0, 328, 0, 665, 314, 315, 316, 317, + 0, 0, 0, 328, 0, 661, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 0, 0, 0, 328, 0, 667, 314, 315, 316, + 0, 0, 0, 0, 328, 0, 665, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 669, 314, 315, + 327, 0, 0, 0, 0, 328, 0, 667, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 0, 0, 0, 0, 328, 0, 671, 314, + 326, 327, 0, 0, 0, 0, 328, 0, 669, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 0, 0, 0, 0, 328, 0, 673, + 325, 326, 327, 0, 0, 0, 0, 328, 0, 671, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 728, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 673, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, - 0, 733, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 675, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 741, 314, 315, 316, 317, 318, 319, 320, + 328, 0, 730, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328, 0, 743, 314, 315, 316, 317, 318, 319, + 0, 328, 0, 735, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 744, 314, 315, 316, 317, 318, + 0, 0, 328, 0, 743, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, - 0, 0, 0, 328, 0, 750, 314, 315, 316, 317, + 0, 0, 0, 328, 0, 745, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 0, 0, 0, 0, 328, 0, 757, 314, 315, 316, + 0, 0, 0, 0, 328, 0, 746, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 758, 314, 315, + 327, 0, 0, 0, 0, 328, 0, 752, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 759, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 0, 0, 0, 0, 328, 0, 780, + 325, 326, 327, 0, 0, 0, 0, 328, 0, 760, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 782, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 761, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, - 0, 783, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 784, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 787, 314, 315, 316, 317, 318, 319, 320, + 328, 0, 786, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328, 0, 944, 314, 315, 316, 317, 318, 319, + 0, 328, 0, 787, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, - 0, 0, 328, 0, 946, 314, 315, 316, 317, 318, + 0, 0, 328, 0, 791, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 948, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, 950, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 328, 0, 954, 314, 315, + 327, 0, 0, 0, 0, 328, 0, 952, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 0, 0, 0, 0, 328, 0, 1098, 314, + 326, 327, 0, 0, 0, 0, 328, 0, 954, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 0, 0, 0, 0, 328, 0, 1113, + 325, 326, 327, 0, 0, 0, 0, 328, 0, 958, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, 0, - 1130, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 1104, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 328, - 0, 1279, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 1119, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 328, 0, 1330, 314, 315, 316, 317, 318, 319, 320, + 328, 0, 1136, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, - 0, 328 + 0, 328, 0, 1285, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 0, 0, + 0, 0, 328, 0, 1336, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 0, + 0, 0, 0, 328 }; static const yytype_int16 yycheck[] = { - 6, 234, 235, 236, 303, 4, 3, 199, 6, 75, - 6, 387, 388, 6, 6, 36, 37, 209, 39, 1144, - 5, 703, 4, 4, 6, 4, 4, 4, 4, 144, - 155, 4, 4, 4, 149, 160, 5, 7, 230, 164, - 232, 1166, 6, 6, 140, 141, 76, 0, 7, 173, - 174, 147, 82, 83, 287, 288, 289, 290, 6, 292, - 293, 294, 143, 75, 13, 76, 12, 13, 6, 150, - 775, 82, 83, 143, 50, 7, 6, 143, 133, 134, - 204, 133, 134, 59, 150, 76, 143, 86, 87, 88, - 89, 82, 83, 150, 149, 52, 151, 149, 90, 151, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 144, 57, 6, 59, 60, 149, 62, 63, 64, 96, - 97, 151, 68, 96, 97, 131, 132, 133, 6, 143, - 136, 137, 130, 104, 144, 141, 150, 130, 150, 149, - 151, 147, 143, 140, 150, 91, 92, 93, 154, 155, - 156, 157, 151, 159, 160, 161, 162, 1282, 164, 165, - 166, 843, 143, 145, 123, 150, 187, 188, 140, 141, - 779, 150, 150, 145, 195, 147, 301, 147, 199, 150, - 152, 150, 133, 134, 190, 191, 150, 150, 120, 121, - 122, 123, 56, 199, 46, 133, 134, 49, 149, 498, - 52, 49, 144, 908, 52, 151, 398, 149, 140, 141, - 216, 217, 218, 7, 220, 147, 144, 223, 224, 76, - 226, 149, 75, 143, 1349, 82, 83, 7, 155, 421, - 75, 143, 238, 160, 566, 567, 568, 164, 150, 245, + 6, 4, 199, 387, 388, 303, 3, 5, 1150, 0, + 4, 6, 209, 6, 4, 4, 36, 37, 5, 39, + 4, 234, 235, 236, 705, 6, 4, 155, 4, 4, + 1172, 6, 160, 230, 7, 232, 164, 6, 6, 75, + 143, 6, 4, 143, 4, 76, 7, 150, 76, 75, + 150, 82, 83, 6, 82, 83, 6, 783, 76, 779, + 52, 76, 133, 134, 82, 83, 144, 82, 83, 173, + 174, 149, 13, 7, 287, 288, 289, 290, 149, 292, + 293, 294, 7, 4, 5, 144, 133, 134, 50, 7, + 149, 144, 86, 87, 88, 89, 149, 59, 140, 141, + 204, 104, 149, 145, 151, 147, 96, 97, 150, 90, + 152, 143, 96, 97, 150, 36, 37, 38, 39, 49, + 151, 42, 52, 151, 150, 131, 132, 133, 133, 134, + 136, 137, 4, 151, 6, 141, 151, 130, 133, 134, + 149, 147, 151, 140, 150, 150, 1288, 150, 154, 155, + 156, 157, 150, 159, 160, 161, 162, 151, 164, 165, + 166, 150, 123, 150, 140, 141, 847, 187, 188, 145, + 145, 147, 150, 301, 147, 195, 152, 130, 184, 199, + 6, 150, 150, 143, 190, 191, 120, 121, 122, 123, + 111, 112, 912, 199, 5, 120, 121, 122, 123, 6, + 498, 398, 120, 121, 122, 123, 140, 141, 140, 141, + 216, 217, 218, 1355, 220, 140, 141, 223, 224, 75, + 226, 6, 147, 76, 421, 36, 37, 38, 39, 82, + 83, 42, 238, 49, 143, 143, 52, 145, 54, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 133, 134, 965, 4, 291, 6, 412, 6, 7, - 143, 143, 143, 143, 151, 301, 8, 150, 150, 135, - 136, 137, 143, 143, 145, 150, 142, 303, 314, 315, + 286, 155, 140, 141, 412, 291, 160, 143, 969, 147, + 164, 133, 134, 143, 150, 301, 7, 76, 151, 76, + 111, 112, 75, 82, 83, 82, 83, 149, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 143, 143, 145, 120, 121, 122, 123, - 76, 337, 7, 52, 133, 134, 82, 83, 52, 345, - 120, 121, 122, 123, 350, 4, 5, 52, 354, 355, - 149, 54, 151, 359, 360, 361, 362, 52, 133, 134, - 140, 141, 368, 49, 385, 386, 143, 373, 374, 375, - 52, 143, 393, 145, 301, 150, 150, 36, 37, 38, - 39, 133, 134, 42, 390, 391, 392, 393, 394, 395, - 387, 388, 625, 399, 400, 401, 402, 150, 150, 405, - 140, 141, 408, 409, 529, 151, 412, 413, 414, 4, - 337, 49, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 551, 354, 355, 52, - 142, 437, 133, 134, 440, 76, 143, 49, 145, 151, - 4, 82, 83, 439, 4, 120, 121, 122, 123, 150, - 683, 4, 111, 112, 76, 143, 689, 133, 134, 49, - 82, 83, 52, 76, 54, 140, 141, 6, 1150, 82, - 83, 4, 5, 149, 69, 70, 71, 72, 133, 134, - 713, 140, 141, 78, 145, 412, 81, 493, 147, 76, - 143, 76, 145, 143, 500, 82, 83, 82, 83, 133, - 134, 143, 498, 36, 37, 38, 39, 499, 143, 42, - 151, 76, 143, 4, 145, 149, 1221, 82, 83, 1224, - 150, 4, 1227, 529, 530, 143, 532, 533, 76, 151, - 536, 537, 538, 76, 82, 83, 835, 836, 151, 82, - 83, 143, 133, 134, 76, 551, 143, 143, 554, 555, - 82, 83, 4, 7, 560, 576, 6, 682, 149, 565, - 566, 567, 568, 143, 151, 1174, 151, 1176, 589, 1178, - 143, 577, 578, 565, 566, 567, 568, 583, 111, 112, - 143, 706, 707, 708, 709, 49, 151, 143, 52, 595, - 54, 597, 6, 718, 143, 5, 145, 1302, 143, 133, - 134, 8, 529, 151, 610, 143, 612, 613, 151, 150, - 537, 538, 618, 143, 739, 149, 167, 6, 143, 151, - 145, 172, 173, 174, 551, 133, 134, 554, 1333, 625, - 143, 1336, 183, 184, 1339, 186, 1012, 1342, 143, 143, - 8, 149, 143, 143, 133, 134, 143, 133, 134, 133, - 134, 133, 134, 204, 205, 661, 662, 143, 1267, 1364, - 149, 1366, 143, 1368, 150, 149, 143, 149, 145, 675, - 676, 677, 678, 679, 680, 143, 682, 6, 133, 134, - 143, 687, 133, 134, 140, 141, 143, 4, 145, 145, - 696, 147, 133, 134, 149, 716, 152, 143, 149, 145, - 706, 707, 708, 709, 710, 1314, 150, 1316, 149, 1318, - 150, 143, 718, 145, 143, 1324, 145, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 150, 143, 739, 145, 142, 133, 134, 133, 134, - 973, 143, 143, 1352, 151, 1354, 145, 1356, 769, 770, - 771, 6, 149, 143, 149, 682, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 133, 134, 133, 134, 142, 150, 144, 133, 134, 706, - 707, 708, 709, 12, 13, 143, 149, 145, 149, 914, - 143, 718, 145, 149, 1170, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 815, - 816, 145, 739, 142, 149, 6, 151, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 143, 57, 145, - 59, 60, 145, 62, 63, 64, 832, 147, 844, 68, - 836, 133, 134, 143, 6, 145, 140, 141, 150, 99, - 856, 145, 6, 147, 860, 6, 150, 149, 152, 143, - 6, 145, 91, 92, 93, 143, 143, 145, 145, 124, + 326, 327, 328, 8, 143, 4, 5, 133, 134, 76, + 143, 337, 56, 133, 134, 82, 83, 150, 303, 345, + 76, 6, 7, 149, 350, 151, 82, 83, 354, 355, + 150, 4, 143, 359, 360, 361, 362, 36, 37, 38, + 39, 143, 368, 42, 52, 385, 386, 373, 374, 375, + 143, 143, 46, 393, 151, 49, 52, 150, 52, 52, + 133, 134, 133, 134, 390, 391, 392, 393, 394, 395, + 387, 388, 52, 399, 400, 401, 402, 150, 149, 405, + 151, 529, 408, 409, 151, 54, 412, 413, 414, 120, + 121, 122, 123, 143, 627, 151, 69, 70, 71, 72, + 133, 134, 143, 551, 145, 78, 49, 301, 81, 140, + 141, 437, 111, 112, 440, 150, 149, 133, 134, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 149, 145, 151, 907, 142, 4, 895, - 896, 897, 5, 149, 145, 151, 147, 903, 904, 6, - 142, 907, 133, 134, 135, 136, 137, 46, 914, 150, - 49, 142, 149, 52, 151, 54, 7, 147, 924, 925, - 926, 145, 151, 36, 37, 38, 39, 150, 149, 42, - 151, 149, 938, 151, 52, 151, 54, 943, 150, 149, - 936, 151, 7, 7, 495, 496, 149, 149, 151, 151, - 7, 149, 958, 151, 149, 149, 151, 151, 979, 6, - 149, 149, 151, 151, 149, 957, 151, 149, 149, 151, - 151, 149, 978, 151, 149, 149, 151, 151, 984, 985, - 149, 7, 151, 989, 149, 143, 151, 914, 143, 7, - 1182, 997, 1013, 149, 1015, 151, 1017, 144, 111, 112, - 143, 149, 1008, 151, 6, 1026, 1131, 1028, 1029, 149, - 561, 151, 149, 143, 151, 1012, 1008, 149, 7, 151, - 1026, 572, 573, 1029, 7, 149, 1032, 151, 149, 149, - 151, 151, 6, 96, 1040, 150, 144, 149, 144, 144, - 144, 144, 144, 1049, 1050, 144, 6, 4, 1040, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 1185, 149, 149, 1069, 142, 146, 7, 99, 7, 7, - 7, 99, 7, 7, 99, 7, 1268, 124, 125, 126, + 135, 136, 137, 149, 1180, 150, 1182, 142, 1184, 133, + 134, 140, 141, 337, 76, 143, 151, 145, 147, 143, + 82, 83, 685, 49, 439, 1156, 150, 76, 691, 143, + 354, 355, 76, 82, 83, 49, 150, 493, 82, 83, + 76, 133, 134, 144, 500, 52, 82, 83, 149, 133, + 134, 143, 715, 133, 134, 52, 49, 1227, 150, 52, + 1230, 54, 144, 1233, 76, 149, 4, 149, 499, 149, + 82, 83, 4, 529, 530, 4, 532, 533, 133, 134, + 536, 537, 538, 498, 143, 133, 134, 143, 412, 151, + 143, 839, 840, 143, 149, 551, 6, 1273, 554, 555, + 145, 149, 151, 143, 560, 145, 684, 151, 578, 565, + 566, 567, 568, 4, 143, 151, 145, 573, 574, 46, + 4, 591, 49, 579, 580, 52, 143, 54, 145, 585, + 708, 709, 710, 711, 565, 566, 567, 568, 1308, 151, + 143, 597, 720, 599, 1320, 143, 1322, 145, 1324, 133, + 134, 133, 134, 143, 1330, 145, 612, 143, 614, 615, + 133, 134, 143, 741, 620, 149, 143, 149, 145, 1339, + 150, 143, 1342, 145, 143, 1345, 149, 143, 1348, 566, + 567, 568, 1358, 1017, 1360, 143, 1362, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 143, + 1370, 8, 1372, 142, 1374, 529, 143, 663, 664, 143, + 7, 145, 627, 537, 538, 133, 134, 143, 133, 134, + 143, 677, 678, 679, 680, 681, 682, 551, 684, 143, + 554, 149, 4, 689, 149, 133, 134, 143, 143, 145, + 145, 5, 698, 133, 134, 133, 134, 143, 718, 145, + 574, 149, 708, 709, 710, 711, 712, 133, 134, 149, + 6, 149, 133, 134, 720, 140, 141, 133, 134, 143, + 145, 145, 147, 149, 167, 143, 6, 152, 149, 172, + 173, 174, 135, 136, 137, 741, 143, 143, 145, 142, + 183, 143, 150, 186, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 773, 774, 775, 143, 142, 145, 765, + 6, 204, 205, 143, 977, 145, 143, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 143, 143, 145, 145, 142, 149, 143, 151, 145, + 918, 149, 1176, 151, 151, 143, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 145, 143, 147, + 684, 142, 4, 819, 820, 149, 143, 151, 133, 134, + 135, 136, 137, 6, 6, 7, 8, 142, 149, 149, + 151, 151, 143, 150, 708, 709, 710, 711, 52, 149, + 54, 151, 848, 149, 143, 151, 720, 149, 149, 151, + 151, 149, 143, 151, 860, 149, 143, 151, 864, 149, + 149, 151, 151, 149, 149, 151, 151, 741, 149, 143, + 151, 836, 149, 6, 151, 840, 149, 149, 151, 151, + 149, 149, 151, 151, 149, 149, 151, 151, 149, 145, + 151, 911, 150, 899, 900, 901, 149, 149, 151, 151, + 150, 907, 908, 150, 149, 911, 151, 149, 149, 151, + 151, 145, 918, 145, 147, 150, 6, 6, 99, 6, + 145, 4, 928, 929, 930, 6, 150, 142, 147, 7, + 150, 7, 145, 151, 377, 7, 942, 7, 150, 143, + 143, 947, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 962, 143, 143, 7, + 142, 6, 6, 983, 144, 7, 7, 96, 144, 144, + 144, 150, 144, 6, 144, 940, 982, 144, 149, 144, + 961, 149, 988, 989, 4, 149, 146, 993, 7, 99, + 7, 1188, 7, 7, 99, 1001, 7, 7, 1018, 99, + 1020, 7, 1022, 7, 4, 6, 147, 1013, 7, 1137, + 6, 1031, 151, 1033, 1034, 151, 7, 7, 7, 147, + 1017, 4, 7, 7, 143, 1031, 7, 7, 1034, 143, + 150, 1037, 1013, 6, 6, 6, 6, 146, 6, 1045, + 7, 145, 6, 52, 918, 130, 7, 7, 1054, 1055, + 6, 54, 495, 496, 7, 12, 13, 7, 7, 7, + 7, 7, 144, 1191, 1045, 144, 7, 144, 1074, 144, + 7, 6, 4, 6, 143, 6, 150, 1274, 7, 7, + 7, 6, 150, 6, 6, 6, 52, 4, 4, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 1105, + 57, 4, 59, 60, 150, 62, 63, 64, 6, 4, + 150, 68, 150, 150, 6, 1121, 143, 1123, 561, 150, + 144, 144, 1335, 7, 6, 147, 1132, 6, 1134, 572, + 6, 1137, 150, 59, 91, 92, 93, 150, 150, 6, + 1146, 6, 150, 6, 5, 1151, 4, 1275, 7, 1277, + 6, 6, 1365, 7, 1367, 7, 7, 1031, 150, 1179, + 1034, 1181, 150, 1183, 150, 6, 6, 4, 7, 147, + 1190, 1384, 1192, 1179, 6, 1181, 95, 1183, 6, 1176, + 6, 7, 8, 6, 6, 1191, 6, 6, 146, 1195, + 6, 6, 6, 6, 151, 5, 150, 6, 6, 99, + 6, 1207, 1208, 6, 1332, 4, 6, 149, 1214, 6, + 6, 6, 3, 4, 1220, 4, 6, 1223, 9, 10, + 11, 6, 6, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 1250, 6, 6, 149, 149, 1123, + 149, 6, 149, 6, 6, 1261, 7, 1277, 1264, 147, + 6, 1267, 5, 1137, 50, 1271, 6, 6, 6, 1275, + 6, 1277, 6, 150, 6, 6, 150, 6, 151, 150, + 1286, 150, 150, 1289, 7, 728, 729, 6, 731, 94, + 733, 734, 6, 150, 737, 738, 6, 6, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 6, 6, 97, 6, 142, 1191, 6, 110, + 150, 150, 113, 114, 115, 6, 1332, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 7, 6, 1099, 6, 142, 1329, 4, 147, 1026, - 151, 151, 1029, 6, 147, 7, 7, 7, 4, 1115, - 7, 1117, 7, 7, 7, 150, 143, 6, 6, 143, - 1126, 6, 1128, 146, 6, 1131, 1359, 6, 1361, 7, - 145, 6, 130, 52, 1140, 7, 7, 54, 7, 1145, - 7, 7, 7, 6, 1269, 1378, 1271, 7, 144, 144, - 144, 144, 1173, 7, 1175, 7, 1177, 7, 6, 6, - 4, 6, 150, 1184, 143, 1186, 7, 1173, 6, 1175, - 7, 1177, 7, 1170, 150, 726, 727, 6, 729, 1185, - 731, 732, 6, 1189, 735, 736, 6, 6, 52, 4, - 1117, 4, 4, 4, 150, 1201, 1202, 150, 150, 150, - 6, 1326, 1208, 6, 1131, 150, 7, 143, 1214, 6, - 150, 1217, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 144, 147, 59, 144, - 142, 6, 6, 6, 6, 6, 5, 150, 1244, 150, - 150, 4, 793, 794, 795, 6, 150, 7, 6, 1255, - 1271, 7, 1258, 7, 7, 1261, 6, 6, 1185, 1265, - 150, 95, 6, 1269, 150, 1271, 7, 147, 6, 4, - 6, 99, 6, 6, 1280, 6, 6, 1283, 146, 3, - 4, 6, 50, 6, 6, 9, 10, 11, 6, 5, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 6, 6, 864, 6, 6, 6, 4, 6, 870, - 1326, 6, 46, 6, 6, 6, 149, 878, 879, 880, - 6, 6, 4, 884, 150, 6, 6, 6, 889, 890, - 891, 149, 1269, 7, 1271, 69, 70, 71, 72, 73, - 149, 149, 903, 149, 78, 6, 147, 81, 909, 6, - 5, 912, 6, 6, 6, 6, 124, 125, 126, 127, + 137, 6, 133, 134, 151, 142, 66, 138, 6, 151, + 151, 6, 143, 151, 797, 798, 799, 148, 151, 150, + 6, 6, 150, 6, 4, 6, 859, 6, 3, 4, + 6, 151, 6, 6, 9, 10, 11, 6, 6, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 6, 1275, 150, 1277, 6, 150, 150, 6, 150, 6, + 6, 46, 6, 6, 6, 150, 6, 150, 6, 6, + 150, 6, 150, 150, 6, 868, 6, 6, 6, 6, + 6, 874, 6, 1250, 69, 70, 71, 72, 73, 882, + 883, 884, 3, 78, 867, 888, 81, 3, 1257, 6, + 893, 894, 895, 367, 897, 965, -1, -1, 1332, -1, + -1, -1, -1, -1, 907, -1, -1, -1, -1, -1, + 913, -1, -1, 916, -1, 110, -1, -1, 113, 114, + 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 935, 936, 937, 938, 6, -1, 133, 134, + -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, + -1, -1, -1, 148, -1, 150, 151, 960, -1, -1, + -1, 8, -1, 3, 4, -1, -1, -1, -1, 9, + 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, -1, -1, -1, 6, -1, + -1, 1004, 1005, 1006, 1007, -1, 46, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, -1, -1, -1, -1, 142, -1, -1, -1, 69, + 70, 71, 72, 73, -1, -1, -1, 1040, 78, -1, + -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1056, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, + 110, -1, 142, 113, 114, 115, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, -1, -1, 133, 134, 142, -1, 144, 138, 6, + -1, -1, -1, 143, -1, -1, -1, -1, 148, -1, + -1, 151, -1, -1, -1, 1118, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 931, 932, 933, 934, 142, 6, 110, 6, 150, 113, - 114, 115, 6, 150, 6, 6, 151, 7, 150, 1326, - 6, 94, 150, 150, 150, 956, 6, 6, 97, 133, - 134, 6, 6, 6, 138, 6, 6, 6, 150, 143, - 66, 150, 6, 151, 148, 151, 150, 151, 6, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 151, 151, 151, 150, 142, 6, 1000, - 1001, 1002, 1003, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 6, 6, 6, - 4, 142, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 1035, 6, 6, 6, 142, 6, - 6, 6, 6, 151, 6, 6, 3, 4, 150, 1244, - 1051, 150, 9, 10, 11, 6, 6, 14, 15, 16, + -1, -1, -1, -1, 142, -1, 3, 4, 1141, 1142, + 1143, 1144, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 150, 6, - 150, 6, 6, 6, 6, 150, 6, 150, 6, 46, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 150, 6, 6, 6, 142, 6, - 6, 1112, 69, 70, 71, 72, 73, 150, 150, 6, - 6, 78, 6, 6, 81, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 1135, 1136, 1137, 1138, 142, 6, - 855, 863, 3, 3, 1251, 961, -1, 367, -1, -1, - -1, -1, -1, 110, -1, -1, 113, 114, 115, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, -1, -1, 133, 134, 142, -1, - 1181, 138, -1, -1, -1, -1, 143, -1, -1, -1, - -1, 148, -1, -1, 151, 3, 4, 5, -1, 7, - -1, 9, 10, 11, -1, -1, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 1228, 36, 37, - 38, 39, -1, -1, 42, -1, -1, 12, 13, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, + 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, + -1, -1, -1, -1, 1187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, -1, 57, -1, 59, 60, -1, 62, 63, 64, - -1, -1, -1, 68, -1, -1, 104, -1, -1, -1, - -1, -1, 110, 111, 112, 113, 114, 115, -1, -1, - -1, -1, 120, 121, 122, 123, 91, 92, 93, -1, - -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, - 138, -1, 140, 141, -1, 143, -1, 145, -1, 147, - 148, -1, 150, 3, 4, 5, -1, -1, -1, 9, - 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, 151, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 46, -1, 12, 13, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, -1, -1, -1, -1, 142, 69, - 70, 71, 72, 73, 6, 149, -1, 151, 78, -1, - -1, 81, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, -1, 57, -1, 59, 60, -1, 62, 63, - 64, -1, -1, -1, 68, -1, -1, -1, -1, -1, - 110, -1, -1, 113, 114, 115, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - -1, -1, -1, 133, 134, -1, -1, -1, 138, -1, - -1, -1, -1, 143, -1, 3, 4, 5, 148, -1, - 150, 9, 10, 11, -1, -1, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 151, 46, -1, - 12, 13, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, - 142, 69, 70, 71, 72, 73, 6, -1, -1, -1, - 78, -1, -1, 81, 46, 47, 48, 49, 50, 51, + -1, -1, 69, 70, 71, 72, 73, 6, -1, -1, + -1, 78, -1, -1, 81, -1, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 1234, -1, -1, -1, 142, -1, -1, -1, -1, + -1, -1, -1, 110, -1, -1, 113, 114, 115, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, -1, -1, -1, 142, 143, -1, 3, 4, + 5, 148, 7, 150, 9, 10, 11, -1, -1, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, -1, -1, 42, -1, -1, + 12, 13, -1, -1, -1, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, + -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, -1, 59, 60, -1, - 62, 63, 64, -1, -1, -1, 68, -1, -1, -1, - -1, -1, 110, -1, -1, 113, 114, 115, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, - 92, 93, -1, -1, -1, 133, 134, -1, -1, -1, - 138, -1, -1, -1, -1, 143, -1, 3, 4, -1, - 148, -1, 150, 9, 10, 11, -1, -1, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, - 46, -1, 12, 13, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, - -1, -1, 142, 69, 70, 71, 72, 73, 6, -1, - -1, -1, 78, -1, -1, 81, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, -1, 57, -1, 59, - 60, -1, 62, 63, 64, -1, -1, -1, 68, -1, - -1, -1, -1, -1, 110, -1, -1, 113, 114, 115, + 62, 63, 64, -1, -1, -1, 68, -1, -1, 104, + -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, + 115, -1, -1, -1, -1, 120, 121, 122, 123, 91, + 92, 93, -1, -1, -1, -1, -1, -1, 133, 134, + -1, -1, -1, 138, -1, 140, 141, -1, 143, -1, + 145, -1, 147, 148, -1, 150, 3, 4, 5, -1, + -1, -1, 9, 10, 11, -1, -1, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, 151, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, + -1, 12, 13, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, + -1, 142, 69, 70, 71, 72, 73, 6, 149, -1, + 151, 78, -1, -1, 81, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, -1, 57, -1, 59, 60, + -1, 62, 63, 64, -1, -1, -1, 68, -1, -1, + -1, -1, -1, 110, -1, -1, 113, 114, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 92, 93, -1, -1, -1, 133, 134, -1, - -1, -1, 138, -1, -1, -1, -1, 143, -1, 3, - 4, -1, 148, -1, 150, 9, 10, 11, -1, -1, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 151, 46, -1, 12, 13, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - -1, -1, -1, -1, 142, 69, 70, 71, 72, 73, - 8, -1, -1, -1, 78, -1, -1, 81, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, - -1, 59, 60, -1, 62, 63, 64, -1, -1, -1, - 68, -1, -1, -1, 8, -1, 110, -1, -1, 113, - 114, 115, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, 92, 93, -1, -1, -1, 133, - 134, -1, -1, -1, 138, -1, -1, -1, -1, 143, - 8, 3, 4, -1, 148, -1, 150, 9, 10, 11, - -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 151, 46, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - -1, -1, -1, -1, 142, -1, -1, 69, 70, 71, - 72, 73, 8, -1, -1, -1, 78, -1, -1, 81, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, - -1, -1, -1, -1, -1, -1, 8, -1, 110, -1, - -1, 113, 114, 115, -1, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - -1, 133, 134, -1, 142, -1, 138, -1, -1, -1, - -1, 143, 8, 3, 4, -1, 148, -1, 150, 9, - 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 46, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, -1, -1, -1, -1, 142, -1, -1, 69, - 70, 71, 72, 73, -1, -1, -1, -1, 78, -1, - -1, 81, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, - 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 110, -1, -1, 113, 114, 115, -1, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, -1, 133, 134, -1, 142, -1, 138, -1, - -1, -1, -1, 143, -1, 3, 4, 5, 148, -1, - 150, 9, 10, 11, -1, -1, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, - 38, 39, -1, -1, 42, -1, -1, -1, -1, -1, - -1, -1, 3, 4, -1, -1, -1, -1, 9, 10, + 91, 92, 93, -1, -1, -1, 133, 134, -1, -1, + -1, 138, -1, -1, -1, -1, 143, -1, 3, 4, + 5, 148, -1, 150, 9, 10, 11, -1, -1, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 151, 46, -1, 12, 13, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, + -1, -1, -1, 142, 69, 70, 71, 72, 73, 6, + -1, -1, -1, 78, -1, -1, 81, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, -1, + 59, 60, -1, 62, 63, 64, -1, -1, -1, 68, + -1, -1, -1, -1, -1, 110, -1, -1, 113, 114, + 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 91, 92, 93, -1, -1, -1, 133, 134, + -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, + 3, 4, -1, 148, -1, 150, 9, 10, 11, -1, + -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 151, 46, -1, 12, 13, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, -1, -1, -1, -1, 142, 69, 70, 71, 72, + 73, 6, -1, -1, -1, 78, -1, -1, 81, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, -1, 59, 60, -1, 62, 63, 64, -1, -1, + -1, 68, -1, -1, -1, -1, -1, 110, -1, -1, + 113, 114, 115, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 91, 92, 93, -1, -1, -1, + 133, 134, -1, -1, -1, 138, -1, -1, -1, -1, + 143, -1, 3, 4, -1, 148, -1, 150, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, - -1, -1, 110, 111, 112, 113, 114, 115, 69, 70, - 71, 72, 73, -1, -1, -1, -1, 78, -1, -1, - 81, -1, -1, -1, -1, 133, 134, -1, -1, -1, - 138, -1, -1, -1, -1, 143, -1, -1, -1, -1, - 148, -1, 150, -1, -1, -1, -1, -1, -1, 110, - -1, -1, 113, 114, 115, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - -1, -1, 133, 134, 142, -1, -1, 138, -1, -1, + -1, -1, -1, -1, 151, 46, -1, 12, 13, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, -1, -1, -1, -1, 142, 69, 70, + 71, 72, 73, 6, -1, -1, -1, 78, -1, -1, + 81, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, -1, 59, 60, -1, 62, 63, 64, + -1, -1, -1, 68, -1, -1, -1, -1, -1, 110, + -1, -1, 113, 114, 115, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, + -1, -1, 133, 134, -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, 3, 4, -1, 148, -1, 150, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, 12, 13, 3, 4, -1, -1, -1, -1, 9, - 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, -1, 57, -1, 59, 60, - -1, 62, 63, 64, -1, -1, -1, 68, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 151, 46, -1, 12, + 13, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, -1, -1, -1, -1, 142, + 69, 70, 71, 72, 73, 6, -1, -1, -1, 78, + -1, -1, 81, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, -1, 59, 60, -1, 62, + 63, 64, -1, -1, -1, 68, -1, 6, -1, -1, -1, 110, -1, -1, 113, 114, 115, -1, -1, -1, - 91, 92, 93, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, - -1, -1, -1, -1, 143, -1, -1, 146, -1, 148, - 110, 150, -1, 113, 114, 115, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, -1, -1, 133, 134, 142, -1, -1, 138, -1, - -1, -1, 149, 143, 151, -1, 146, -1, 148, -1, - 150, 3, 4, -1, -1, -1, -1, 9, 10, 11, - -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, -1, 3, 4, - -1, 142, -1, 144, 9, 10, 11, -1, 149, 14, + -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, + 93, -1, -1, -1, 133, 134, -1, -1, -1, 138, + -1, -1, 6, -1, 143, -1, 3, 4, -1, 148, + -1, 150, 9, 10, 11, -1, -1, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 151, 46, + -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, + -1, 142, 69, 70, 71, 72, 73, -1, -1, -1, + -1, 78, -1, -1, 81, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, + -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 110, -1, -1, 113, 114, 115, -1, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, -1, -1, 133, 134, 142, -1, + -1, 138, -1, -1, -1, -1, 143, -1, 3, 4, + 5, 148, -1, 150, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, -1, -1, 42, -1, -1, + -1, -1, -1, 8, -1, 3, 4, -1, -1, -1, + -1, 9, 10, 11, -1, -1, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 46, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, -1, -1, 110, -1, - 142, 113, 114, 115, 69, 70, 71, 72, 73, 151, - -1, -1, -1, 78, -1, -1, 81, -1, -1, -1, - -1, 133, 134, -1, -1, -1, 138, -1, -1, -1, - -1, 143, -1, -1, -1, -1, 148, -1, 150, -1, - -1, -1, -1, -1, -1, 110, -1, -1, 113, 114, - 115, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, -1, -1, 133, 134, - 142, -1, -1, 138, 3, 4, 5, 149, 143, 151, - 9, 10, 11, 148, -1, 14, 15, 16, 17, 18, + -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, + 115, 69, 70, 71, 72, 73, -1, -1, -1, -1, + 78, -1, -1, 81, -1, -1, -1, -1, 133, 134, + -1, -1, -1, 138, -1, -1, -1, -1, 143, -1, + -1, -1, 8, 148, -1, 150, -1, -1, -1, -1, + -1, -1, 110, -1, -1, 113, 114, 115, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, -1, -1, 133, 134, 142, -1, -1, + 138, -1, -1, -1, -1, 143, 8, 3, 4, -1, + 148, -1, 150, 9, 10, 11, -1, -1, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 66, + -1, -1, -1, -1, 8, -1, 3, 4, -1, -1, + -1, -1, 9, 10, 11, -1, -1, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, -1, -1, -1, -1, 142, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, -1, -1, -1, 110, 142, -1, 113, 114, 115, + -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, -1, 133, 134, -1, + 142, -1, 138, -1, -1, -1, -1, 143, -1, -1, + 146, -1, 148, 110, 150, -1, 113, 114, 115, -1, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, -1, -1, 133, 134, 142, -1, + -1, 138, -1, -1, -1, -1, 143, -1, -1, 146, + -1, 148, 8, 150, 3, 4, -1, -1, -1, -1, + 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, - 39, 3, 4, 42, -1, -1, -1, 9, 10, 11, - -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, - -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, - 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 110, 111, 112, 113, 114, 115, -1, 124, 125, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 46, -1, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, -1, -1, -1, -1, 142, -1, -1, + 69, 70, 71, 72, 73, 8, 151, 3, 4, 78, + -1, -1, 81, 9, 10, 11, -1, -1, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + -1, 110, -1, -1, 113, 114, 115, -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, 133, 134, 142, -1, -1, 138, - -1, -1, -1, -1, 143, 151, -1, -1, 110, 148, - -1, 113, 114, 115, 0, 1, -1, -1, 4, -1, - -1, -1, -1, -1, -1, -1, 12, 13, -1, -1, - -1, 133, 134, -1, -1, -1, 138, -1, -1, -1, - -1, 143, -1, -1, -1, -1, 148, -1, -1, 35, - -1, -1, -1, -1, 40, 41, -1, 43, 44, -1, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, - -1, 67, 68, 69, 70, 71, 72, 73, 74, -1, - 76, 77, 78, 79, 80, 81, -1, -1, 84, 85, - -1, -1, -1, -1, 90, 91, 92, 93, -1, -1, - 96, -1, 98, -1, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, -1, -1, 4, -1, -1, -1, - 116, 117, 118, 119, 12, 13, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, -1, -1, -1, -1, 142, -1, 35, -1, -1, - -1, -1, 40, 41, 151, 43, 44, -1, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, - 58, 59, 60, 61, 62, 63, 64, 65, -1, 67, - 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, - 78, 79, 80, 81, -1, -1, 84, 85, -1, -1, - -1, -1, 90, 91, 92, 93, -1, -1, 96, -1, - 98, -1, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, -1, -1, -1, -1, -1, -1, 116, 117, - 118, 119, 124, 125, 126, 127, 128, 129, 130, 131, + 3, 4, 5, -1, 143, -1, 9, 10, 11, 148, + -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, -1, 36, 37, 38, 39, -1, -1, 42, + -1, -1, -1, -1, 110, -1, -1, 113, 114, 115, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, -1, -1, 133, 134, 142, + -1, -1, 138, -1, -1, -1, -1, 143, -1, -1, + -1, -1, 148, -1, -1, -1, -1, -1, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, -1, -1, -1, -1, 142, 110, 111, 112, + 113, 114, 115, 0, 1, 151, -1, 4, -1, -1, + -1, -1, -1, -1, -1, 12, 13, -1, -1, -1, + 133, 134, -1, -1, -1, 138, -1, -1, -1, -1, + 143, -1, -1, -1, -1, 148, -1, -1, 35, -1, + -1, -1, -1, 40, 41, -1, 43, 44, -1, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 67, 68, 69, 70, 71, 72, 73, 74, -1, 76, + 77, 78, 79, 80, 81, -1, -1, 84, 85, -1, + -1, -1, -1, 90, 91, 92, 93, -1, -1, 96, + -1, 98, -1, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, -1, -1, 4, -1, -1, -1, 116, + 117, 118, 119, 12, 13, -1, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + -1, -1, -1, -1, 142, -1, 35, -1, -1, -1, + -1, 40, 41, 151, 43, 44, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, -1, 67, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, 80, 81, -1, -1, 84, 85, 12, 13, -1, + -1, 90, 91, 92, 93, -1, -1, 96, -1, 98, + -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, -1, -1, -1, -1, -1, -1, 116, 117, 118, + 119, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, -1, 59, 60, -1, 62, 63, 64, + -1, -1, -1, 68, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, + -1, -1, 142, -1, -1, -1, 91, 92, 93, 149, + -1, 151, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, - 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, + 142, -1, -1, -1, -1, -1, -1, 149, -1, 151, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, 124, 125, @@ -2653,9 +2695,12 @@ static const yytype_int16 yycheck[] = -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, - 142, -1, -1, -1, -1, -1, -1, 149, 124, 125, + 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, + -1, -1, -1, -1, -1, -1, -1, 151, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, -1, -1, -1, -1, 142, -1, -1, -1, + 136, 137, -1, -1, -1, -1, 142, -1, 144, -1, -1, -1, -1, 149, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, 149, @@ -2723,14 +2768,10 @@ static const yytype_int16 yycheck[] = 136, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, 149, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, - -1, -1, 142, -1, -1, -1, 146, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, -1, -1, -1, -1, 142, -1, -1, -1, 146, + -1, -1, 142, -1, -1, -1, -1, -1, -1, 149, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, - -1, -1, 146, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, - -1, 142, -1, -1, -1, 146, 124, 125, 126, 127, + -1, -1, -1, -1, -1, 149, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, -1, -1, 146, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, @@ -2797,9 +2838,14 @@ static const yytype_int16 yycheck[] = 137, -1, -1, -1, -1, 142, -1, -1, -1, 146, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, - 144, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, -1, -1, -1, -1, 142, - -1, 144, 124, 125, 126, 127, 128, 129, 130, 131, + -1, -1, 146, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, + -1, 142, -1, -1, -1, 146, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + -1, -1, -1, -1, 142, -1, -1, -1, 146, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, -1, -1, -1, -1, 142, -1, -1, + -1, 146, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, 144, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, @@ -2908,7 +2954,11 @@ static const yytype_int16 yycheck[] = 132, 133, 134, 135, 136, 137, -1, -1, -1, -1, 142, -1, 144, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, -1, - -1, 142 + -1, 142, -1, 144, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, -1, -1, + -1, -1, 142, -1, 144, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, -1, + -1, -1, -1, 142 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -2952,7 +3002,7 @@ static const yytype_uint8 yystos[] = 221, 228, 229, 221, 221, 143, 221, 229, 221, 221, 143, 229, 221, 221, 134, 150, 221, 226, 228, 143, 150, 143, 143, 5, 226, 227, 227, 227, 143, 182, - 183, 184, 185, 143, 143, 143, 226, 226, 4, 226, + 183, 184, 185, 143, 143, 143, 226, 221, 4, 226, 223, 223, 223, 221, 221, 133, 134, 150, 150, 223, 150, 150, 150, 133, 134, 143, 188, 223, 150, 143, 150, 143, 143, 227, 226, 143, 4, 6, 145, 145, @@ -2972,88 +3022,89 @@ static const yytype_uint8 yystos[] = 144, 144, 221, 144, 151, 144, 144, 221, 151, 144, 144, 150, 151, 229, 135, 7, 221, 221, 221, 221, 7, 7, 214, 214, 221, 143, 143, 143, 143, 221, - 221, 221, 7, 7, 144, 6, 149, 149, 149, 223, - 223, 187, 187, 149, 221, 221, 221, 221, 199, 149, - 188, 221, 221, 221, 221, 7, 215, 7, 221, 6, - 221, 221, 151, 229, 221, 221, 144, 144, 144, 96, - 149, 188, 150, 8, 144, 146, 151, 151, 145, 147, - 144, 144, 144, 144, 221, 146, 176, 221, 4, 86, - 87, 88, 89, 151, 163, 167, 170, 172, 173, 144, + 221, 221, 7, 133, 134, 226, 144, 6, 149, 149, + 149, 223, 223, 187, 187, 149, 221, 221, 221, 221, + 199, 149, 188, 221, 221, 221, 221, 7, 215, 7, + 221, 6, 221, 221, 151, 229, 221, 221, 144, 144, + 144, 96, 149, 188, 150, 8, 144, 146, 151, 151, + 145, 147, 144, 144, 144, 144, 221, 146, 176, 221, + 4, 86, 87, 88, 89, 151, 163, 167, 170, 172, + 173, 144, 146, 144, 146, 144, 146, 144, 146, 144, 146, 144, 146, 144, 146, 144, 146, 144, 146, 144, - 146, 144, 146, 144, 146, 144, 146, 144, 146, 144, - 146, 149, 149, 144, 146, 144, 146, 144, 146, 144, - 146, 144, 146, 144, 146, 149, 149, 149, 149, 149, - 149, 144, 149, 149, 144, 144, 6, 149, 144, 149, - 221, 226, 226, 151, 7, 147, 175, 176, 234, 221, - 6, 4, 4, 150, 231, 146, 150, 150, 150, 150, - 8, 6, 130, 157, 229, 221, 7, 146, 150, 221, - 221, 221, 228, 221, 228, 99, 7, 7, 144, 7, - 99, 7, 7, 144, 99, 7, 7, 229, 151, 150, - 221, 144, 151, 144, 144, 221, 226, 4, 213, 6, - 144, 178, 221, 234, 178, 178, 178, 144, 144, 144, - 226, 226, 147, 223, 221, 221, 151, 151, 221, 149, - 149, 149, 76, 82, 83, 209, 210, 223, 151, 196, - 144, 151, 144, 144, 221, 6, 221, 144, 146, 146, - 151, 146, 146, 7, 7, 7, 147, 221, 151, 221, - 221, 7, 147, 221, 4, 7, 7, 7, 7, 146, - 147, 176, 233, 151, 164, 143, 143, 150, 174, 6, - 221, 221, 221, 221, 221, 221, 221, 221, 229, 233, - 221, 233, 146, 6, 6, 146, 4, 96, 97, 221, - 6, 6, 6, 7, 145, 230, 232, 6, 229, 229, - 229, 229, 221, 130, 233, 144, 149, 223, 229, 151, - 8, 52, 226, 226, 7, 226, 52, 54, 226, 226, - 7, 54, 226, 226, 151, 229, 6, 7, 7, 7, - 7, 66, 212, 6, 7, 144, 144, 144, 144, 7, - 7, 7, 6, 6, 4, 149, 149, 149, 151, 223, - 223, 223, 6, 150, 143, 151, 210, 149, 209, 7, - 6, 7, 7, 6, 150, 6, 6, 52, 6, 6, - 226, 226, 226, 4, 149, 8, 8, 144, 4, 4, - 146, 150, 150, 150, 150, 6, 4, 6, 143, 221, - 221, 225, 226, 150, 144, 146, 144, 146, 144, 146, - 144, 146, 144, 144, 144, 144, 175, 7, 175, 176, - 147, 7, 6, 230, 221, 149, 151, 151, 151, 151, - 151, 6, 6, 157, 221, 6, 151, 221, 150, 59, - 180, 180, 226, 6, 150, 150, 6, 6, 226, 150, - 6, 6, 151, 5, 226, 226, 226, 4, 6, 226, - 7, 7, 7, 7, 226, 226, 226, 6, 7, 221, - 221, 221, 150, 149, 151, 149, 151, 149, 151, 221, - 226, 221, 221, 223, 151, 5, 150, 226, 150, 150, - 226, 229, 150, 6, 6, 95, 221, 221, 221, 6, - 7, 147, 226, 226, 226, 226, 176, 161, 221, 149, - 149, 149, 151, 162, 221, 226, 234, 221, 6, 4, - 231, 6, 146, 230, 6, 6, 6, 6, 233, 149, - 146, 221, 223, 6, 6, 6, 221, 221, 6, 221, - 5, 6, 6, 99, 179, 221, 6, 226, 226, 226, - 226, 6, 4, 211, 6, 221, 234, 151, 144, 149, - 151, 187, 223, 6, 200, 223, 6, 201, 223, 6, - 202, 151, 149, 144, 151, 149, 6, 134, 223, 6, - 223, 223, 6, 151, 221, 226, 149, 151, 8, 151, - 144, 150, 221, 234, 4, 149, 149, 149, 149, 144, - 149, 221, 221, 226, 150, 149, 151, 6, 6, 6, - 7, 6, 147, 6, 221, 151, 151, 151, 151, 5, - 50, 6, 6, 6, 6, 6, 150, 6, 6, 6, - 150, 221, 151, 149, 150, 149, 150, 149, 150, 6, - 226, 7, 150, 221, 149, 149, 149, 6, 151, 94, - 221, 221, 229, 6, 6, 226, 226, 226, 226, 165, - 221, 149, 149, 225, 221, 6, 230, 97, 149, 6, - 6, 6, 6, 6, 150, 225, 187, 149, 151, 221, - 223, 209, 221, 223, 209, 221, 223, 209, 149, 151, - 226, 188, 151, 223, 229, 223, 221, 151, 151, 151, - 151, 151, 151, 151, 150, 221, 221, 151, 6, 221, - 221, 151, 151, 221, 151, 149, 151, 151, 149, 151, - 151, 149, 151, 226, 6, 66, 151, 197, 150, 149, - 151, 149, 6, 6, 6, 6, 6, 6, 162, 144, - 149, 6, 150, 149, 151, 4, 211, 151, 6, 203, - 221, 6, 6, 204, 221, 6, 6, 205, 221, 6, - 151, 221, 209, 188, 229, 6, 223, 229, 151, 168, - 221, 225, 221, 6, 150, 151, 150, 151, 150, 151, - 6, 6, 151, 151, 198, 151, 149, 151, 6, 150, - 144, 151, 151, 209, 6, 206, 209, 6, 207, 209, - 6, 208, 209, 6, 229, 6, 166, 233, 171, 150, - 6, 151, 150, 151, 150, 151, 150, 151, 151, 149, - 151, 150, 225, 6, 209, 6, 209, 6, 209, 6, - 233, 6, 169, 233, 151, 151, 151, 151, 149, 151, - 6, 6, 6, 6, 233, 6 + 146, 144, 146, 149, 149, 144, 146, 144, 146, 144, + 146, 144, 146, 144, 146, 144, 146, 149, 149, 149, + 149, 149, 149, 144, 149, 149, 144, 144, 6, 149, + 144, 149, 221, 226, 226, 151, 7, 147, 175, 176, + 234, 221, 6, 4, 4, 150, 231, 146, 150, 150, + 150, 150, 8, 6, 130, 157, 229, 221, 7, 146, + 150, 221, 221, 221, 228, 221, 228, 99, 7, 7, + 144, 7, 99, 7, 7, 144, 99, 7, 7, 229, + 151, 150, 221, 144, 151, 144, 144, 221, 226, 4, + 213, 6, 144, 178, 221, 234, 178, 178, 178, 144, + 144, 144, 226, 221, 221, 7, 147, 223, 221, 221, + 151, 151, 221, 149, 149, 149, 76, 82, 83, 209, + 210, 223, 151, 196, 144, 151, 144, 144, 221, 6, + 221, 144, 146, 146, 151, 146, 146, 7, 7, 7, + 147, 221, 151, 221, 221, 7, 147, 221, 4, 7, + 7, 7, 7, 146, 147, 176, 233, 151, 164, 143, + 143, 150, 174, 6, 221, 221, 221, 221, 221, 221, + 221, 221, 229, 233, 221, 233, 146, 6, 6, 146, + 4, 96, 97, 221, 6, 6, 6, 7, 145, 230, + 232, 6, 229, 229, 229, 229, 221, 130, 233, 144, + 149, 223, 229, 151, 8, 52, 226, 226, 7, 226, + 52, 54, 226, 226, 7, 54, 226, 226, 151, 229, + 6, 7, 7, 7, 7, 66, 212, 6, 7, 144, + 144, 144, 144, 7, 7, 7, 6, 221, 4, 149, + 149, 149, 151, 223, 223, 223, 6, 150, 143, 151, + 210, 149, 209, 7, 6, 7, 7, 6, 150, 6, + 6, 52, 6, 6, 226, 226, 226, 4, 149, 8, + 8, 144, 4, 4, 146, 150, 150, 150, 150, 6, + 4, 6, 143, 221, 221, 225, 226, 150, 144, 146, + 144, 146, 144, 146, 144, 146, 144, 144, 144, 144, + 175, 7, 175, 176, 147, 7, 6, 230, 221, 149, + 151, 151, 151, 151, 151, 6, 6, 157, 221, 6, + 151, 221, 150, 59, 180, 180, 226, 6, 150, 150, + 6, 6, 226, 150, 6, 6, 151, 5, 226, 226, + 226, 4, 6, 226, 7, 7, 7, 7, 226, 226, + 226, 226, 6, 7, 221, 221, 221, 150, 149, 151, + 149, 151, 149, 151, 221, 226, 221, 221, 223, 151, + 5, 150, 226, 150, 150, 226, 229, 150, 6, 6, + 95, 221, 221, 221, 6, 7, 147, 226, 226, 226, + 226, 176, 161, 221, 149, 149, 149, 151, 162, 221, + 226, 234, 221, 6, 4, 231, 6, 146, 230, 6, + 6, 6, 6, 233, 149, 146, 221, 223, 6, 6, + 6, 221, 221, 6, 221, 5, 6, 6, 99, 179, + 221, 6, 226, 226, 226, 226, 6, 4, 211, 6, + 6, 221, 234, 151, 144, 149, 151, 187, 223, 6, + 200, 223, 6, 201, 223, 6, 202, 151, 149, 144, + 151, 149, 6, 134, 223, 6, 223, 223, 6, 151, + 221, 226, 149, 151, 8, 151, 144, 150, 221, 234, + 4, 149, 149, 149, 149, 144, 149, 221, 221, 226, + 150, 149, 151, 6, 6, 6, 7, 6, 147, 6, + 221, 151, 151, 151, 151, 5, 50, 6, 6, 6, + 6, 6, 150, 6, 6, 6, 150, 221, 151, 149, + 150, 149, 150, 149, 150, 6, 226, 7, 150, 221, + 149, 149, 149, 6, 151, 94, 221, 221, 229, 6, + 6, 226, 226, 226, 226, 165, 221, 149, 149, 225, + 221, 6, 230, 97, 149, 6, 6, 6, 6, 6, + 150, 225, 187, 149, 151, 221, 223, 209, 221, 223, + 209, 221, 223, 209, 149, 151, 226, 188, 151, 223, + 229, 223, 221, 151, 151, 151, 151, 151, 151, 151, + 150, 221, 221, 151, 6, 221, 221, 151, 151, 221, + 151, 149, 151, 151, 149, 151, 151, 149, 151, 226, + 6, 66, 151, 197, 150, 149, 151, 149, 6, 6, + 6, 6, 6, 6, 162, 144, 149, 6, 150, 149, + 151, 4, 211, 151, 6, 203, 221, 6, 6, 204, + 221, 6, 6, 205, 221, 6, 151, 221, 209, 188, + 229, 6, 223, 229, 151, 168, 221, 225, 221, 6, + 150, 151, 150, 151, 150, 151, 6, 6, 151, 151, + 198, 151, 149, 151, 6, 150, 144, 151, 151, 209, + 6, 206, 209, 6, 207, 209, 6, 208, 209, 6, + 229, 6, 166, 233, 171, 150, 6, 151, 150, 151, + 150, 151, 150, 151, 151, 149, 151, 150, 225, 6, + 209, 6, 209, 6, 209, 6, 233, 6, 169, 233, + 151, 151, 151, 151, 149, 151, 6, 6, 6, 6, + 233, 6 }; #define yyerrok (yyerrstatus = 0) @@ -7493,33 +7544,44 @@ yyreduce: case 245: #line 3252 "Gmsh.y" { - if (List_Nbr((yyvsp[(3) - (6)].l)) != List_Nbr((yyvsp[(5) - (6)].l))){ - yymsg(0, "Periodic Surface : the number of masters (%d) is not equal to the number of slaves(%d)", List_Nbr((yyvsp[(3) - (6)].l)),List_Nbr((yyvsp[(5) - (6)].l))); - } - - for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ - double d_master,d_slave; - List_Read((yyvsp[(3) - (6)].l), i, &d_master); - List_Read((yyvsp[(5) - (6)].l), i, &d_slave); - int j_master = (int)d_master; - int j_slave = (int)d_slave; - Surface *s_slave = FindSurface(abs(j_slave)); - if(s_slave){ - s_slave->meshMaster = j_master; + if (List_Nbr((yyvsp[(4) - (8)].l)) != List_Nbr((yyvsp[(7) - (8)].l))){ + yymsg(0, "Periodic Surface : the number of masters (%d) is not equal to the number of slaves(%d)", List_Nbr((yyvsp[(4) - (8)].l)),List_Nbr((yyvsp[(7) - (8)].l))); + } + + double d_master = (yyvsp[(3) - (8)].d) ,d_slave = (yyvsp[(6) - (8)].d); + int j_master = (int)d_master; + int j_slave = (int)d_slave; + Surface *s_slave = FindSurface(abs(j_slave)); + if(s_slave){ + s_slave->meshMaster = j_master; + for (int i=0;i<List_Nbr((yyvsp[(4) - (8)].l));i++){ + double dm,ds; + List_Read((yyvsp[(4) - (8)].l),i,&dm); + List_Read((yyvsp[(7) - (8)].l),i,&ds); + s_slave->edgeCounterparts[(int)ds] = (int)dm; } - else{ - GFace *gf = GModel::current()->getFaceByTag(abs(j_slave)); - if(gf) gf->setMeshMaster (j_master); - else yymsg(0, "Unknown line %d", j_slave); + } + else{ + GFace *gf = GModel::current()->getFaceByTag(abs(j_slave)); + if(gf) gf->setMeshMaster (j_master); + else yymsg(0, "Unknown surface %d", j_slave); + + for (int i=0;i<List_Nbr((yyvsp[(4) - (8)].l));i++){ + double dm,ds; + List_Read((yyvsp[(4) - (8)].l),i,&dm); + List_Read((yyvsp[(7) - (8)].l),i,&ds); + gf->edgeCounterparts[(int)ds] = (int)dm; } + } - List_Delete((yyvsp[(3) - (6)].l)); - List_Delete((yyvsp[(5) - (6)].l)); + + List_Delete((yyvsp[(4) - (8)].l)); + List_Delete((yyvsp[(7) - (8)].l)); ;} break; case 246: -#line 3284 "Gmsh.y" +#line 3295 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -7545,7 +7607,7 @@ yyreduce: break; case 247: -#line 3307 "Gmsh.y" +#line 3318 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -7571,26 +7633,26 @@ yyreduce: break; case 248: -#line 3330 "Gmsh.y" +#line 3341 "Gmsh.y" { ;} break; case 249: -#line 3333 "Gmsh.y" +#line 3344 "Gmsh.y" { ;} break; case 250: -#line 3342 "Gmsh.y" +#line 3353 "Gmsh.y" { ReplaceAllDuplicates(); ;} break; case 251: -#line 3346 "Gmsh.y" +#line 3357 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")) ReplaceAllDuplicates(); @@ -7603,7 +7665,7 @@ yyreduce: break; case 252: -#line 3363 "Gmsh.y" +#line 3374 "Gmsh.y" { List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l)); @@ -7642,7 +7704,7 @@ yyreduce: break; case 253: -#line 3400 "Gmsh.y" +#line 3411 "Gmsh.y" { List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l)); std::vector<int> domain; @@ -7680,7 +7742,7 @@ yyreduce: break; case 254: -#line 3436 "Gmsh.y" +#line 3447 "Gmsh.y" { List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l)); std::vector<int> domain; @@ -7718,7 +7780,7 @@ yyreduce: break; case 255: -#line 3471 "Gmsh.y" +#line 3482 "Gmsh.y" { List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l)); std::vector<int> domain; @@ -7756,47 +7818,47 @@ yyreduce: break; case 256: -#line 3510 "Gmsh.y" +#line 3521 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 257: -#line 3511 "Gmsh.y" +#line 3522 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (3)].d); ;} break; case 258: -#line 3512 "Gmsh.y" +#line 3523 "Gmsh.y" { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} break; case 259: -#line 3513 "Gmsh.y" +#line 3524 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; case 260: -#line 3514 "Gmsh.y" +#line 3525 "Gmsh.y" { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} break; case 261: -#line 3515 "Gmsh.y" +#line 3526 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} break; case 262: -#line 3516 "Gmsh.y" +#line 3527 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} break; case 263: -#line 3517 "Gmsh.y" +#line 3528 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} break; case 264: -#line 3519 "Gmsh.y" +#line 3530 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -7806,307 +7868,307 @@ yyreduce: break; case 265: -#line 3525 "Gmsh.y" +#line 3536 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} break; case 266: -#line 3526 "Gmsh.y" +#line 3537 "Gmsh.y" { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} break; case 267: -#line 3527 "Gmsh.y" +#line 3538 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} break; case 268: -#line 3528 "Gmsh.y" +#line 3539 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} break; case 269: -#line 3529 "Gmsh.y" +#line 3540 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} break; case 270: -#line 3530 "Gmsh.y" +#line 3541 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} break; case 271: -#line 3531 "Gmsh.y" +#line 3542 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} break; case 272: -#line 3532 "Gmsh.y" +#line 3543 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} break; case 273: -#line 3533 "Gmsh.y" +#line 3544 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} break; case 274: -#line 3534 "Gmsh.y" +#line 3545 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} break; case 275: -#line 3535 "Gmsh.y" +#line 3546 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} break; case 276: -#line 3536 "Gmsh.y" +#line 3547 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; case 277: -#line 3537 "Gmsh.y" +#line 3548 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; case 278: -#line 3538 "Gmsh.y" +#line 3549 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; case 279: -#line 3539 "Gmsh.y" +#line 3550 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; case 280: -#line 3540 "Gmsh.y" +#line 3551 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; case 281: -#line 3541 "Gmsh.y" +#line 3552 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; case 282: -#line 3542 "Gmsh.y" +#line 3553 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; case 283: -#line 3543 "Gmsh.y" +#line 3554 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; case 284: -#line 3544 "Gmsh.y" +#line 3555 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; case 285: -#line 3545 "Gmsh.y" +#line 3556 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; case 286: -#line 3546 "Gmsh.y" +#line 3557 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; case 287: -#line 3547 "Gmsh.y" +#line 3558 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; case 288: -#line 3548 "Gmsh.y" +#line 3559 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; case 289: -#line 3549 "Gmsh.y" +#line 3560 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; case 290: -#line 3550 "Gmsh.y" +#line 3561 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; case 291: -#line 3551 "Gmsh.y" +#line 3562 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; case 292: -#line 3552 "Gmsh.y" +#line 3563 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; case 293: -#line 3553 "Gmsh.y" +#line 3564 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 294: -#line 3554 "Gmsh.y" +#line 3565 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 295: -#line 3555 "Gmsh.y" +#line 3566 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; case 296: -#line 3556 "Gmsh.y" +#line 3567 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; case 297: -#line 3558 "Gmsh.y" +#line 3569 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; case 298: -#line 3559 "Gmsh.y" +#line 3570 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; case 299: -#line 3560 "Gmsh.y" +#line 3571 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; case 300: -#line 3561 "Gmsh.y" +#line 3572 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; case 301: -#line 3562 "Gmsh.y" +#line 3573 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; case 302: -#line 3563 "Gmsh.y" +#line 3574 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; case 303: -#line 3564 "Gmsh.y" +#line 3575 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; case 304: -#line 3565 "Gmsh.y" +#line 3576 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; case 305: -#line 3566 "Gmsh.y" +#line 3577 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; case 306: -#line 3567 "Gmsh.y" +#line 3578 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; case 307: -#line 3568 "Gmsh.y" +#line 3579 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; case 308: -#line 3569 "Gmsh.y" +#line 3580 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; case 309: -#line 3570 "Gmsh.y" +#line 3581 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; case 310: -#line 3571 "Gmsh.y" +#line 3582 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; case 311: -#line 3572 "Gmsh.y" +#line 3583 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; case 312: -#line 3573 "Gmsh.y" +#line 3584 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; case 313: -#line 3574 "Gmsh.y" +#line 3585 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; case 314: -#line 3575 "Gmsh.y" +#line 3586 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 315: -#line 3576 "Gmsh.y" +#line 3587 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 316: -#line 3577 "Gmsh.y" +#line 3588 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; case 317: -#line 3578 "Gmsh.y" +#line 3589 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; case 318: -#line 3587 "Gmsh.y" +#line 3598 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 319: -#line 3588 "Gmsh.y" +#line 3599 "Gmsh.y" { (yyval.d) = 3.141592653589793; ;} break; case 320: -#line 3589 "Gmsh.y" +#line 3600 "Gmsh.y" { (yyval.d) = Msg::GetCommRank(); ;} break; case 321: -#line 3590 "Gmsh.y" +#line 3601 "Gmsh.y" { (yyval.d) = Msg::GetCommSize(); ;} break; case 322: -#line 3591 "Gmsh.y" +#line 3602 "Gmsh.y" { (yyval.d) = GetGmshMajorVersion(); ;} break; case 323: -#line 3592 "Gmsh.y" +#line 3603 "Gmsh.y" { (yyval.d) = GetGmshMinorVersion(); ;} break; case 324: -#line 3593 "Gmsh.y" +#line 3604 "Gmsh.y" { (yyval.d) = GetGmshPatchVersion(); ;} break; case 325: -#line 3598 "Gmsh.y" +#line 3609 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c)); @@ -8125,7 +8187,7 @@ yyreduce: break; case 326: -#line 3617 "Gmsh.y" +#line 3628 "Gmsh.y" { char tmpstring[1024]; sprintf(tmpstring, "%s_%d", (yyvsp[(1) - (5)].c), (int)(yyvsp[(4) - (5)].d)) ; @@ -8146,7 +8208,7 @@ yyreduce: break; case 327: -#line 3635 "Gmsh.y" +#line 3646 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -8164,7 +8226,7 @@ yyreduce: break; case 328: -#line 3650 "Gmsh.y" +#line 3661 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(2) - (4)].c)); @@ -8177,7 +8239,7 @@ yyreduce: break; case 329: -#line 3660 "Gmsh.y" +#line 3671 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -8196,7 +8258,7 @@ yyreduce: break; case 330: -#line 3676 "Gmsh.y" +#line 3687 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -8214,7 +8276,7 @@ yyreduce: break; case 331: -#line 3694 "Gmsh.y" +#line 3705 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), (yyval.d)); Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c)); @@ -8222,7 +8284,7 @@ yyreduce: break; case 332: -#line 3699 "Gmsh.y" +#line 3710 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d)); Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c)); @@ -8230,7 +8292,7 @@ yyreduce: break; case 333: -#line 3704 "Gmsh.y" +#line 3715 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -8243,7 +8305,7 @@ yyreduce: break; case 334: -#line 3714 "Gmsh.y" +#line 3725 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -8256,7 +8318,7 @@ yyreduce: break; case 335: -#line 3724 "Gmsh.y" +#line 3735 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -8264,70 +8326,70 @@ yyreduce: break; case 336: -#line 3732 "Gmsh.y" +#line 3743 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); ;} break; case 337: -#line 3736 "Gmsh.y" +#line 3747 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; ;} break; case 338: -#line 3740 "Gmsh.y" +#line 3751 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; case 339: -#line 3744 "Gmsh.y" +#line 3755 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; ;} break; case 340: -#line 3748 "Gmsh.y" +#line 3759 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; ;} break; case 341: -#line 3755 "Gmsh.y" +#line 3766 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (11)].d); (yyval.v)[1] = (yyvsp[(4) - (11)].d); (yyval.v)[2] = (yyvsp[(6) - (11)].d); (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d); ;} break; case 342: -#line 3759 "Gmsh.y" +#line 3770 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (9)].d); (yyval.v)[1] = (yyvsp[(4) - (9)].d); (yyval.v)[2] = (yyvsp[(6) - (9)].d); (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0; ;} break; case 343: -#line 3763 "Gmsh.y" +#line 3774 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 344: -#line 3767 "Gmsh.y" +#line 3778 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 345: -#line 3774 "Gmsh.y" +#line 3785 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); @@ -8335,14 +8397,14 @@ yyreduce: break; case 346: -#line 3779 "Gmsh.y" +#line 3790 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); ;} break; case 347: -#line 3786 "Gmsh.y" +#line 3797 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -8350,14 +8412,14 @@ yyreduce: break; case 348: -#line 3791 "Gmsh.y" +#line 3802 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 349: -#line 3795 "Gmsh.y" +#line 3806 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); @@ -8365,14 +8427,14 @@ yyreduce: break; case 350: -#line 3800 "Gmsh.y" +#line 3811 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 351: -#line 3804 "Gmsh.y" +#line 3815 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -8383,7 +8445,7 @@ yyreduce: break; case 352: -#line 3812 "Gmsh.y" +#line 3823 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -8394,14 +8456,14 @@ yyreduce: break; case 353: -#line 3823 "Gmsh.y" +#line 3834 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 354: -#line 3827 "Gmsh.y" +#line 3838 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -8413,7 +8475,7 @@ yyreduce: break; case 355: -#line 3839 "Gmsh.y" +#line 3850 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -8424,7 +8486,7 @@ yyreduce: break; case 356: -#line 3847 "Gmsh.y" +#line 3858 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -8435,7 +8497,7 @@ yyreduce: break; case 357: -#line 3855 "Gmsh.y" +#line 3866 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); @@ -8445,7 +8507,7 @@ yyreduce: break; case 358: -#line 3862 "Gmsh.y" +#line 3873 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d) || ((yyvsp[(1) - (5)].d) < (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) < 0) || ((yyvsp[(1) - (5)].d) > (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) > 0)){ @@ -8459,7 +8521,7 @@ yyreduce: break; case 359: -#line 3873 "Gmsh.y" +#line 3884 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -8482,7 +8544,7 @@ yyreduce: break; case 360: -#line 3893 "Gmsh.y" +#line 3904 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -8495,7 +8557,7 @@ yyreduce: break; case 361: -#line 3903 "Gmsh.y" +#line 3914 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -8508,7 +8570,7 @@ yyreduce: break; case 362: -#line 3913 "Gmsh.y" +#line 3924 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -8521,7 +8583,7 @@ yyreduce: break; case 363: -#line 3923 "Gmsh.y" +#line 3934 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -8541,7 +8603,7 @@ yyreduce: break; case 364: -#line 3943 "Gmsh.y" +#line 3954 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -8549,21 +8611,21 @@ yyreduce: break; case 365: -#line 3948 "Gmsh.y" +#line 3959 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 366: -#line 3952 "Gmsh.y" +#line 3963 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); ;} break; case 367: -#line 3956 "Gmsh.y" +#line 3967 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -8575,21 +8637,21 @@ yyreduce: break; case 368: -#line 3968 "Gmsh.y" +#line 3979 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d)); ;} break; case 369: -#line 3972 "Gmsh.y" +#line 3983 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255); ;} break; case 370: -#line 3984 "Gmsh.y" +#line 3995 "Gmsh.y" { int flag; (yyval.u) = GetColorForString(ColorString, -1, (yyvsp[(1) - (1)].c), &flag); @@ -8599,7 +8661,7 @@ yyreduce: break; case 371: -#line 3991 "Gmsh.y" +#line 4002 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -8609,14 +8671,14 @@ yyreduce: break; case 372: -#line 4001 "Gmsh.y" +#line 4012 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 373: -#line 4005 "Gmsh.y" +#line 4016 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -8631,7 +8693,7 @@ yyreduce: break; case 374: -#line 4020 "Gmsh.y" +#line 4031 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); @@ -8639,21 +8701,21 @@ yyreduce: break; case 375: -#line 4025 "Gmsh.y" +#line 4036 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); ;} break; case 376: -#line 4032 "Gmsh.y" +#line 4043 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 377: -#line 4036 "Gmsh.y" +#line 4047 "Gmsh.y" { if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown string variable '%s'", (yyvsp[(1) - (1)].c)); @@ -8669,7 +8731,7 @@ yyreduce: break; case 378: -#line 4049 "Gmsh.y" +#line 4060 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), out); @@ -8680,7 +8742,7 @@ yyreduce: break; case 379: -#line 4057 "Gmsh.y" +#line 4068 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -8691,14 +8753,14 @@ yyreduce: break; case 380: -#line 4068 "Gmsh.y" +#line 4079 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 381: -#line 4072 "Gmsh.y" +#line 4083 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -8709,7 +8771,7 @@ yyreduce: break; case 382: -#line 4080 "Gmsh.y" +#line 4091 "Gmsh.y" { const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c)); if(!env) env = ""; @@ -8720,7 +8782,7 @@ yyreduce: break; case 383: -#line 4088 "Gmsh.y" +#line 4099 "Gmsh.y" { std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -8731,7 +8793,7 @@ yyreduce: break; case 384: -#line 4096 "Gmsh.y" +#line 4107 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (6)].c)) + strlen((yyvsp[(5) - (6)].c)) + 1) * sizeof(char)); strcpy((yyval.c), (yyvsp[(3) - (6)].c)); @@ -8742,7 +8804,7 @@ yyreduce: break; case 385: -#line 4104 "Gmsh.y" +#line 4115 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -8759,7 +8821,7 @@ yyreduce: break; case 386: -#line 4118 "Gmsh.y" +#line 4129 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -8776,14 +8838,14 @@ yyreduce: break; case 387: -#line 4132 "Gmsh.y" +#line 4143 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; case 388: -#line 4136 "Gmsh.y" +#line 4147 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -8806,7 +8868,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 8810 "Gmsh.tab.cpp" +#line 8872 "Gmsh.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -9020,7 +9082,7 @@ yyreturn: } -#line 4156 "Gmsh.y" +#line 4167 "Gmsh.y" int PrintListOfDouble(char *format, List_T *list, char *buffer) diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 6cc10169abdd3801936389f8d1af4b43515a2b87..5eec7e2ad108b7a30214c0786a793d349a905463 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -3248,30 +3248,41 @@ Periodic : List_Delete($3); List_Delete($5); } - | tPeriodic tSurface ListOfDouble tAFFECT ListOfDouble tEND - { - if (List_Nbr($3) != List_Nbr($5)){ - yymsg(0, "Periodic Surface : the number of masters (%d) is not equal to the number of slaves(%d)", List_Nbr($3),List_Nbr($5)); - } - - for(int i = 0; i < List_Nbr($3); i++){ - double d_master,d_slave; - List_Read($3, i, &d_master); - List_Read($5, i, &d_slave); - int j_master = (int)d_master; - int j_slave = (int)d_slave; - Surface *s_slave = FindSurface(abs(j_slave)); - if(s_slave){ - s_slave->meshMaster = j_master; + | tPeriodic tSurface FExpr ListOfDouble tAFFECT FExpr ListOfDouble tEND + { + if (List_Nbr($4) != List_Nbr($7)){ + yymsg(0, "Periodic Surface : the number of masters (%d) is not equal to the number of slaves(%d)", List_Nbr($4),List_Nbr($7)); + } + + double d_master = $3 ,d_slave = $6; + int j_master = (int)d_master; + int j_slave = (int)d_slave; + Surface *s_slave = FindSurface(abs(j_slave)); + if(s_slave){ + s_slave->meshMaster = j_master; + for (int i=0;i<List_Nbr($4);i++){ + double dm,ds; + List_Read($4,i,&dm); + List_Read($7,i,&ds); + s_slave->edgeCounterparts[(int)ds] = (int)dm; } - else{ - GFace *gf = GModel::current()->getFaceByTag(abs(j_slave)); - if(gf) gf->setMeshMaster (j_master); - else yymsg(0, "Unknown line %d", j_slave); + } + else{ + GFace *gf = GModel::current()->getFaceByTag(abs(j_slave)); + if(gf) gf->setMeshMaster (j_master); + else yymsg(0, "Unknown surface %d", j_slave); + + for (int i=0;i<List_Nbr($4);i++){ + double dm,ds; + List_Read($4,i,&dm); + List_Read($7,i,&ds); + gf->edgeCounterparts[(int)ds] = (int)dm; } + } - List_Delete($3); - List_Delete($5); + + List_Delete($4); + List_Delete($7); } ; diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index c3a05213f45e925a001e0cd1e266f16167f20dc3..e58187ab7f566bf380e5350af6aedcf4ce881c3a 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -6,29 +6,10 @@ /* A lexical scanner generated by flex */ -#define yy_create_buffer gmsh_yy_create_buffer -#define yy_delete_buffer gmsh_yy_delete_buffer -#define yy_flex_debug gmsh_yy_flex_debug -#define yy_init_buffer gmsh_yy_init_buffer -#define yy_flush_buffer gmsh_yy_flush_buffer -#define yy_load_buffer_state gmsh_yy_load_buffer_state -#define yy_switch_to_buffer gmsh_yy_switch_to_buffer -#define yyin gmsh_yyin -#define yyleng gmsh_yyleng -#define yylex gmsh_yylex -#define yylineno gmsh_yylineno -#define yyout gmsh_yyout -#define yyrestart gmsh_yyrestart -#define yytext gmsh_yytext -#define yywrap gmsh_yywrap -#define yyalloc gmsh_yyalloc -#define yyrealloc gmsh_yyrealloc -#define yyfree gmsh_yyfree - #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_SUBMINOR_VERSION 33 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -50,7 +31,7 @@ /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#if __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. @@ -113,12 +94,11 @@ typedef unsigned int flex_uint32_t; #else /* ! __cplusplus */ -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) +#if __STDC__ #define YY_USE_CONST -#endif /* defined (__STDC__) */ +#endif /* __STDC__ */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST @@ -172,12 +152,7 @@ typedef unsigned int flex_uint32_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern yy_size_t gmsh_yyleng; +extern int gmsh_yyleng; extern FILE *gmsh_yyin, *gmsh_yyout; @@ -203,6 +178,16 @@ extern FILE *gmsh_yyin, *gmsh_yyout; #define unput(c) yyunput( c, (yytext_ptr) ) +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef unsigned int yy_size_t; +#endif + #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -220,7 +205,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -290,8 +275,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when gmsh_yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t gmsh_yyleng; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int gmsh_yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -319,7 +304,7 @@ static void gmsh_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE gmsh_yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE gmsh_yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char *bytes,yy_size_t len ); +YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char *bytes,int len ); void *gmsh_yyalloc (yy_size_t ); void *gmsh_yyrealloc (void *,yy_size_t ); @@ -910,7 +895,7 @@ void skipline(void); #define YY_NO_UNISTD_H #endif -#line 914 "Gmsh.yy.cpp" +#line 899 "Gmsh.yy.cpp" #define INITIAL 0 @@ -928,35 +913,6 @@ void skipline(void); static int yy_init_globals (void ); -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int gmsh_yylex_destroy (void ); - -int gmsh_yyget_debug (void ); - -void gmsh_yyset_debug (int debug_flag ); - -YY_EXTRA_TYPE gmsh_yyget_extra (void ); - -void gmsh_yyset_extra (YY_EXTRA_TYPE user_defined ); - -FILE *gmsh_yyget_in (void ); - -void gmsh_yyset_in (FILE * in_str ); - -FILE *gmsh_yyget_out (void ); - -void gmsh_yyset_out (FILE * out_str ); - -yy_size_t gmsh_yyget_leng (void ); - -char *gmsh_yyget_text (void ); - -int gmsh_yyget_lineno (void ); - -void gmsh_yyset_lineno (int line_number ); - /* Macros after this point can all be overridden by user definitions in * section 1. */ @@ -999,7 +955,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO fwrite( gmsh_yytext, gmsh_yyleng, 1, gmsh_yyout ) +#define ECHO (void) fwrite( gmsh_yytext, gmsh_yyleng, 1, gmsh_yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1010,7 +966,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - yy_size_t n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( gmsh_yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -1095,7 +1051,7 @@ YY_DECL #line 49 "Gmsh.l" -#line 1099 "Gmsh.yy.cpp" +#line 1055 "Gmsh.yy.cpp" if ( !(yy_init) ) { @@ -1935,7 +1891,7 @@ YY_RULE_SETUP #line 227 "Gmsh.l" ECHO; YY_BREAK -#line 1939 "Gmsh.yy.cpp" +#line 1895 "Gmsh.yy.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2121,7 +2077,7 @@ static int yy_get_next_buffer (void) else { - yy_size_t num_to_read = + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -2135,7 +2091,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -2190,14 +2146,6 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) gmsh_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; @@ -2276,7 +2224,7 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register yy_size_t number_to_move = (yy_n_chars) + 2; + register int number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = @@ -2325,7 +2273,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -2601,7 +2549,7 @@ void gmsh_yypop_buffer_state (void) */ static void gmsh_yyensure_buffer_stack (void) { - yy_size_t num_to_alloc; + int num_to_alloc; if (!(yy_buffer_stack)) { @@ -2613,9 +2561,7 @@ static void gmsh_yyensure_buffer_stack (void) (yy_buffer_stack) = (struct yy_buffer_state**)gmsh_yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in gmsh_yyensure_buffer_stack()" ); - + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; @@ -2633,8 +2579,6 @@ static void gmsh_yyensure_buffer_stack (void) ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in gmsh_yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -2679,7 +2623,7 @@ YY_BUFFER_STATE gmsh_yy_scan_buffer (char * base, yy_size_t size ) /** Setup the input buffer state to scan a string. The next call to gmsh_yylex() will * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan + * @param str a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use @@ -2698,11 +2642,12 @@ YY_BUFFER_STATE gmsh_yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; - yy_size_t n, i; + yy_size_t n; + int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -2784,7 +2729,7 @@ FILE *gmsh_yyget_out (void) /** Get the length of the current token. * */ -yy_size_t gmsh_yyget_leng (void) +int gmsh_yyget_leng (void) { return gmsh_yyleng; } diff --git a/Solver/elasticityTerm.cpp b/Solver/elasticityTerm.cpp index 09421294bba56d4145b23afd4faf5bd9e206142c..77a0c4dcca8492438a0e7357dc9c841e7236eb19 100644 --- a/Solver/elasticityTerm.cpp +++ b/Solver/elasticityTerm.cpp @@ -28,6 +28,12 @@ void elasticityTerm::elementMatrix(SElement *se, fullMatrix<double> &m) const double C11 = FACT * (1 - _nu) / (1 - 2 * _nu); double C12 = FACT * _nu / (1 - 2 * _nu); double C44 = (C11 - C12) / 2; + // FIXME : PLANE STRESS !!! + FACT = _E / (1-_nu*_nu); + C11 = FACT; + C12 = _nu * FACT; + C44 = (1.-_nu)*.5*FACT; + const double C[6][6] = { {C11, C12, C12, 0, 0, 0}, {C12, C11, C12, 0, 0, 0}, @@ -57,10 +63,8 @@ void elasticityTerm::elementMatrix(SElement *se, fullMatrix<double> &m) const BT.setAll(0.); if (se->getShapeEnrichement() == se->getTestEnrichement()){ + // printf("coucou\n"); for (int j = 0; j < nbNodes; j++){ - -// printf(" GR(j) = %12.5E,%12.5E,%12.5E\n", Grads[j][0],Grads[j][1],Grads[j][2]); - BT(j, 0) = B(0, j) = Grads[j][0]; BT(j, 3) = B(3, j) = Grads[j][1]; BT(j, 5) = B(5, j) = Grads[j][2]; @@ -72,7 +76,6 @@ void elasticityTerm::elementMatrix(SElement *se, fullMatrix<double> &m) const BT(j + 2 * nbNodes, 2) = B(2, j + 2 * nbNodes) = Grads[j][2]; BT(j + 2 * nbNodes, 4) = B(4, j + 2 * nbNodes) = Grads[j][1]; BT(j + 2 * nbNodes, 5) = B(5, j + 2 * nbNodes) = Grads[j][0]; - // JF mon cochon si tu savais le nombre de bugs qu'il y avait ici... } } else{ diff --git a/Solver/terms.h b/Solver/terms.h index 98d6e7379d24d9ff616efaee78cdae187d413097..7d52068f315e60e99ea9bc7b5920342848d53187 100644 --- a/Solver/terms.h +++ b/Solver/terms.h @@ -193,6 +193,11 @@ class IsotropicElasticTerm : public BilinearTerm<SVector3,SVector3> double C11 = FACT * (1 - nu) / (1 - 2 * nu); double C12 = FACT * nu / (1 - 2 * nu); double C44 = (C11 - C12) / 2; + FACT = E / (1-nu*nu); + C11 = FACT; + C12 = nu * FACT; + C44 = (1.-nu)*.5*FACT; + H.scale(0.); for (int i=0;i<3;++i) {H(i,i)=C11;H(i+3,i+3)=C44;} H(1,0)=H(0,1)=H(2,0)=H(0,2)=H(1,2)=H(2,1)=C12; diff --git a/benchmarks/3d/CubePeriodic.geo b/benchmarks/3d/CubePeriodic.geo new file mode 100644 index 0000000000000000000000000000000000000000..fddfcbfa4a0dda49a51f9ba68bc4298d4cdfb7f8 --- /dev/null +++ b/benchmarks/3d/CubePeriodic.geo @@ -0,0 +1,67 @@ +lc = 0.2; +//ep=0.35; +ep=2.2; +eh=ep/4; +em=ep-eh; +it=600; +diff=0.0; +Point(1) = {0, 0, 0, lc}; +Point(2) = {2.2, 0, 0, lc}; +Point(3) = {2.2, 2.2, 0, lc}; +Point(4) = {0, 2.2, 0, lc}; +Point(5) = {0, 0, ep, lc}; +Point(6) = {2.2, 0, ep, lc}; +Point(7) = {2.2, 2.2, ep, lc}; +Point(8) = {0, 2.2, ep, lc}; +Line (1) = {5, 6}; +Line (2) = {6, 2}; +Line (3) = {2, 1}; +Line (4) = {1, 5}; +Line (5) = {8, 7}; +Line (6) = {7, 3}; +Line (7) = {3, 4}; +Line (8) = {4, 8}; +Line (9) = {5, 8}; +Line (10) = {6, 7}; +Line (11) = {2, 3}; +Line (12) = {1, 4}; +Line Loop (1000014) = {5, -10, -1, 9}; +Plane Surface (14) = {1000014}; +Line Loop (1000016) = {8, 5, 6, 7}; +Plane Surface (16) = {1000016}; +Line Loop (1000018) = {4, 9, -8, -12}; +Plane Surface (18) = {1000018}; +Line Loop (1000020) = {2, 11, -6, -10}; +Plane Surface (20) = {1000020}; +Line Loop (1000022) = {3, 12, -7, -11}; +Plane Surface (22) = {1000022}; +Line Loop (1000024) = {4, 1, 2, 3}; +Plane Surface (24) = {1000024}; +Surface Loop (1000026) = {14, 16, 18, 24, 20, 22}; +Volume (26) = {1000026}; + +Physical Volume(1)={26}; +Physical Surface(10)={14:24:2}; +/* +Periodic Line {1} = {5}; +Periodic Line {3} = {7}; +Periodic Line {9} = {10}; +Periodic Line {12} = {11}; +*/ +Periodic Line {4} = {2} ; +Periodic Line {4} = {6} ; +Periodic Line {4} = {8} ; + +Periodic Line {1} = {5} ; +Periodic Line {1} = {7} ; +Periodic Line {1} = {3} ; + +Periodic Line {9} = {10} ; +Periodic Line {9} = {11} ; +Periodic Line {9} = {12} ; + +Periodic Surface 24 {1,2,3,4} = 16 {5,6,7,8}; +Periodic Surface 14 {10,5,9,1} = 22 {11,-7,12,-3}; +Periodic Surface 18 {9,8,12,4} = 20 {10,-6,11,-2}; +//Periodic Surface {14} = {22}; +//Periodic Surface {18} = {20};