diff --git a/Mesh/2D_Mesh_Shewchuk.cpp b/Mesh/2D_Mesh_Shewchuk.cpp index f7b7cf9541108a3593d948951ddd95136d1a4671..670cd5cf17a91f3d647e4dd8bc3a4763a1f62178 100644 --- a/Mesh/2D_Mesh_Shewchuk.cpp +++ b/Mesh/2D_Mesh_Shewchuk.cpp @@ -1,4 +1,4 @@ -// $Id: 2D_Mesh_Shewchuk.cpp,v 1.5 2001-08-24 06:58:19 geuzaine Exp $ +// $Id: 2D_Mesh_Shewchuk.cpp,v 1.6 2001-09-04 16:25:05 geuzaine Exp $ #include "Gmsh.h" #include "Mesh.h" @@ -21,7 +21,7 @@ void AddInMesh(Surface *sur, int nbbound, Vertex **vertexbound, Vertex **vtable; Simplex *s; - Msg(INFO, "Add in database..."); + //Msg(INFO, "Add in database..."); vtable = (Vertex**) Malloc(out->numberofpoints*sizeof(Vertex*)); @@ -51,7 +51,7 @@ void AddInMesh(Surface *sur, int nbbound, Vertex **vertexbound, Free(out->trianglelist); Free(out->triangleattributelist); - Msg(INFO, "...done"); + //Msg(INFO, "...done"); } // This is horrible... diff --git a/Mesh/3D_Coherence.cpp b/Mesh/3D_Coherence.cpp index e40be6c941d05e2fea3cd9bed02f111ca9a3f6ee..c2c94e65b58931c3effee0400fed0ff1b9daf695 100644 --- a/Mesh/3D_Coherence.cpp +++ b/Mesh/3D_Coherence.cpp @@ -1,4 +1,4 @@ -// $Id: 3D_Coherence.cpp,v 1.21 2001-09-04 13:27:00 geuzaine Exp $ +// $Id: 3D_Coherence.cpp,v 1.22 2001-09-04 16:25:05 geuzaine Exp $ #include "Gmsh.h" #include "Numeric.h" @@ -1177,8 +1177,9 @@ int Coherence (Volume * v, Mesh * m){ } } */ - Msg(INFO, "Edge %d->%d => %d division(s)", - pE1->V[0]->Num, pE1->V[1]->Num, List_Nbr(NewPoints)); + Msg(INFO, "%d/%d: Edge %d->%d => %d division(s)", + i+1, List_Nbr(Missing), pE1->V[0]->Num, pE1->V[1]->Num, + List_Nbr(NewPoints)); if (!List_Nbr (NewPoints)) Msg(GERROR, "Missing edge without any intersection (%g,%g,%g) (%g,%g,%g)", @@ -1201,7 +1202,8 @@ int Coherence (Volume * v, Mesh * m){ for (i = 0; i < List_Nbr (MissingS); i++){ List_Read (MissingS, i, &simp); TheFace = &simp->F[0]; - Msg(INFO, "Face %d %d %d", simp->F[0].V[0]->Num, + Msg(INFO, "%d/%d: Face %d %d %d", + i+1, List_Nbr (MissingS), simp->F[0].V[0]->Num, simp->F[0].V[1]->Num, simp->F[0].V[2]->Num); E.V[0] = simp->F[0].V[0]; E.V[1] = simp->F[0].V[1]; diff --git a/Mesh/3D_Divide.cpp b/Mesh/3D_Divide.cpp index a345e8567907134318672a7eaa82af04930b111b..9cf415d478be7e682011d9ff76a11cc60dd75850 100644 --- a/Mesh/3D_Divide.cpp +++ b/Mesh/3D_Divide.cpp @@ -1,4 +1,4 @@ -// $Id: 3D_Divide.cpp,v 1.12 2001-08-11 23:28:32 geuzaine Exp $ +// $Id: 3D_Divide.cpp,v 1.13 2001-09-04 16:25:05 geuzaine Exp $ /* Routine de division des elements tetraedriques ou triangulaires @@ -73,7 +73,7 @@ void cut_prism (Vertex * v1, Vertex * v2, Vertex * v3, Simplex *news; Vertex *e1; - Msg(INFO, "Prism cut"); + //Msg(INFO, "Prism cut"); /* test des meilleures aretes a creer */ /* diff --git a/Mesh/Matrix.h b/Mesh/Matrix.h index f4d546221883d9391e885af48770493fe4681e7a..d5f03944b9ba4f4bb561930752921ad0d19594cf 100644 --- a/Mesh/Matrix.h +++ b/Mesh/Matrix.h @@ -1,195 +1,255 @@ -#ifndef _MATRIX_H_ -#define _MATRIX_H_ - -#define _TAILLE_ 2 - -template <class T> class Matrix2x2{ - T mat[_TAILLE_][_TAILLE_]; - T zero; - -public: - - Matrix2x2 (const T& init){ - zero = init; - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - mat[i][j] = zero; - } - - Matrix2x2 (const T& init, T z[3][3]){ - zero = init; - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - mat[i][j] = z[i][j]; - } - - Matrix2x2<T>& operator = (const Matrix2x2<T> &autre){ - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - mat[i][j] = autre.mat[i][j]; - return *this; - } - - Matrix2x2<T> operator + (const Matrix2x2<T> &autre){ - Matrix2x2<T> m(0.); - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - m.mat[i][j] = mat[i][j] + autre.mat[i][j]; - return m; - } - - Matrix2x2<T> operator - (const Matrix2x2<T> &autre){ - Matrix2x2<T> m(0.); - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - m.mat[i][j] = mat[i][j] - autre.mat[i][j]; - return m; - } - - T* operator [] (int i){ - return mat[i]; - } - - Matrix2x2 Identity(T id){ - for(int i=0;i<_TAILLE_;i++) - mat[i][i] = id; - } - - Matrix2x2 copy(T m[3][3]){ - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - m[i][j] = mat[i][j]; - } - - Matrix2x2 operator * (const Matrix2x2<T> &autre){ - Matrix2x2 m(0.); - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++){ - m.mat[i][j] = zero; - for(int k=0;k<_TAILLE_;k++) - m.mat[i][j] += mat[i][k] * autre.mat[k][j]; - } - return m; - } - - bool invert (){ - T det = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]; - if(det == zero)return false; - mat[0][0] = mat[1][1] / det; - mat[1][1] = mat[0][0] / det; - mat[1][0] = -mat[1][0] / det; - mat[0][1] = -mat[0][1] / det; - } - - void transpose(){ - T temp; - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++){ - if(i!=j){ - temp = mat[i][j]; - mat[i][j] = mat[j][i]; - mat[j][i] = temp; - } - } - } -}; +#ifndef _GMSH_MATRIX_ +#define _GMSH_MATRIX_ -#undef _TAILLE_ #define _TAILLE_ 3 -template <class T> class Matrix3x3{ - T mat[_TAILLE_][_TAILLE_]; - T zero; - -public: - - Matrix3x3 (const T& init){ - zero = init; - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - mat[i][j] = zero; - } - - Matrix3x3 (const T& init, T z[3][3]){ - zero = init; - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - mat[i][j] = z[i][j]; - } - - Matrix3x3<T>& operator = (const Matrix3x3<T> &autre){ - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - mat[i][j] = autre.mat[i][j]; - return *this; - } - - Matrix3x3<T> operator + (const Matrix3x3<T> &autre){ - Matrix3x3<T> m(0.); - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - m.mat[i][j] = mat[i][j] + autre.mat[i][j]; - return m; - } - - Matrix3x3<T> operator - (const Matrix3x3<T> &autre){ - Matrix2x2<T> m(0.); - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - m.mat[i][j] = mat[i][j] - autre.mat[i][j]; - return m; - } - - T* operator [] (int i){ - return mat[i]; - } - - void Identity(T id){ - for(int i=0;i<_TAILLE_;i++) - mat[i][i] = id; - } - - void copy(T m[3][3]){ - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++) - m[i][j] = mat[i][j]; - } - - Matrix3x3 operator * (const Matrix3x3<T> &autre){ - Matrix3x3 m(0.); - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<_TAILLE_;j++){ - m.mat[i][j] = zero; - for(int k=0;k<_TAILLE_;k++) - m.mat[i][j] += mat[i][k] * autre.mat[k][j]; - } - return m; - } - - /* - bool invert (){ - T det = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]; - if(det == zero)return false; - mat[0][0] = mat[1][1] / det; - mat[1][1] = mat[0][0] / det; - mat[1][0] = -mat[1][0] / det; - mat[0][1] = -mat[0][1] / det; - } - */ - - void transpose(){ - T temp; - for(int i=0;i<_TAILLE_;i++) - for(int j=0;j<i;j++){ - if(i!=j){ - temp = mat[i][j]; - mat[i][j] = mat[j][i]; - mat[j][i] = temp; - } - } - } +class Vector3 +{ + double mat[_TAILLE_]; + double zero; + public: + Vector3 (const double init = 0) + { + zero = init; + for(int i=0;i<_TAILLE_;i++) + mat[i] = zero; + } + Vector3 (const double& init, double z[3]) + { + zero = init; + for(int i=0;i<_TAILLE_;i++) + mat[i] = z[i]; + } + Vector3 (const double& init, double x, double y, double z) + { + zero = init; + mat[0] = x; + mat[1] = y; + mat[2] = z; + } + Vector3& operator = (const Vector3 &autre) + { + for(int i=0;i<_TAILLE_;i++) + mat[i] = autre.mat[i]; + return *this; + } + + Vector3 operator * (double autre) + { + for(int i=0;i<_TAILLE_;i++) + mat[i] *= autre; + return *this; + } + Vector3 operator + (const Vector3 &autre) + { + Vector3 m(0.); + for(int i=0;i<_TAILLE_;i++) + m.mat[i] = mat[i] + autre.mat[i]; + return m; + } + Vector3 operator - (const Vector3 &autre) + { + Vector3 m(0.); + for(int i=0;i<_TAILLE_;i++) + m.mat[i] = mat[i] - autre.mat[i]; + return m; + } + + double & operator [] (int i) + { + return mat[i]; + } + + double length () + { + return sqrt(mat[0]*mat[0]+mat[1]*mat[1]+mat[2]*mat[2]); + } + + double operator * (const Vector3 &autre) + { + + double m = zero; + for(int i=0;i<_TAILLE_;i++) + m + mat[i] * autre.mat[i]; + return m; + } }; -#undef _TAILLE_ +class Matrix3x3 +{ + double mat[_TAILLE_][_TAILLE_]; + Vector3 eVec[_TAILLE_]; + double eVal[_TAILLE_]; + double zero; + public: + void print() + { + /* + cout << "| " << mat[0][0] << " " << mat[0][1] << " " << mat[0][2] << "|"<<endl; + cout << "| " << mat[1][0] << " " << mat[1][1] << " " << mat[1][2] << "|"<<endl; + cout << "| " << mat[2][0] << " " << mat[2][1] << " " << mat[2][2] << "|"<<endl; + */ + } + Matrix3x3 () + { + zero = 0.0; + } + Matrix3x3 (Vector3 &v1, Vector3 &v2, Vector3 &v3) + { + setColumn(0,v1); + setColumn(1,v2); + setColumn(2,v3); + } + void getEigen(int i,Vector3 &v, double &l) + { + l = eVal[i]; + v = eVec[i]; + } + void setEigen(int i, double v1, double v2, double v3, double l) + { + (eVec[i])[0] = v1; + (eVec[i])[1] = v2; + (eVec[i])[2] = v3; + eVal[i] = l; + } + void setMetric () + { + Matrix3x3 rot (eVec[0],eVec[1],eVec[2]); + Matrix3x3 rotT (eVec[0],eVec[1],eVec[2]); + Matrix3x3 Id (0.0); + rotT.transpose(); + Id.Identity(1.0); + for(int i=0;i<3;i++)Id.mat[i][i] = eVal[i]; + Matrix3x3 m = rotT * (Id * rot); + for(int i=0;i<_TAILLE_;i++) + for(int j=0;j<_TAILLE_;j++) + mat[i][j] = m.mat[i][j]; + } + + Matrix3x3 (const double& init) + { + zero = init; + for(int i=0;i<_TAILLE_;i++) + for(int j=0;j<_TAILLE_;j++) + mat[i][j] = zero; + } + Matrix3x3 (const double& init, double z[3][3]) + { + + Identity(init); + zero = init; + for(int i=0;i<_TAILLE_;i++) + for(int j=0;j<_TAILLE_;j++) + mat[i][j] = z[i][j]; + } + Matrix3x3 operator + (const Matrix3x3 &autre) + { + Matrix3x3 m(0.); + for(int i=0;i<_TAILLE_;i++) + for(int j=0;j<_TAILLE_;j++) + m.mat[i][j] = mat[i][j] + autre.mat[i][j]; + return m; + } + Matrix3x3 operator - (const Matrix3x3 &autre) + { + Matrix3x3 m(0.); + for(int i=0;i<_TAILLE_;i++) + for(int j=0;j<_TAILLE_;j++) + m.mat[i][j] = mat[i][j] - autre.mat[i][j]; + return m; + } + double* operator [] (int i) + { + return mat[i]; + } + void Identity(double id) + { + for(int i=0;i<_TAILLE_;i++) + mat[i][i] = id; + setEigen(0,1,0,0,1); + setEigen(1,0,1,0,1); + setEigen(2,0,0,1,1); + } + + void copy(double m[3][3]) + { + for(int i=0;i<_TAILLE_;i++) + for(int j=0;j<_TAILLE_;j++) + m[i][j] = mat[i][j]; + } + + Vector3 getColumn (int i) + { + return Vector3 (0.0,mat[0][i],mat[1][i],mat[2][i]); + } + + void setColumn (int i, Vector3 &col) + { + mat[0][i] = col[0]; + mat[1][i] = col[1]; + mat[2][i] = col[2]; + } + + double get(int i, int j) const + { + return mat[i][j]; + } + void set(int i, int j, double k) + { + mat[i][j] = k; + } + + Matrix3x3 operator * (const Matrix3x3 &autre) + { + + Matrix3x3 m(0.); + for(int i=0;i<_TAILLE_;i++) + for(int j=0;j<_TAILLE_;j++) + { + m.mat[i][j] = zero; + for(int k=0;k<_TAILLE_;k++) + m.mat[i][j] += mat[i][k] * autre.mat[k][j]; + } + return m; + } + /* + bool invert () + { + double det = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]; + if(det == zero)return false; + mat[0][0] = mat[1][1] / det; + mat[1][1] = mat[0][0] / det; + mat[1][0] = -mat[1][0] / det; + mat[0][1] = -mat[0][1] / det; + } + */ + + double quadraticFormEval (Vector3 & v) + { + return v[0] * v[0] * mat[0][0] + + v[1] * v[1] * mat[1][1] + + v[2] * v[2] * mat[2][2] + + 2. * v[0] * v[1] * mat[0][1] + + 2. * v[0] * v[2] * mat[0][2] + + 2. * v[1] * v[2] * mat[1][2]; + } + + void transpose() + { + double temp; + for(int i=0;i<_TAILLE_;i++) + for(int j=0;j<i;j++) + { + if(i!=j) + { + temp = mat[i][j]; + mat[i][j] = mat[j][i]; + mat[j][i] = temp; + } + } + } +}; + +#undef _TAILLE_ #endif diff --git a/Mesh/Metric.cpp b/Mesh/Metric.cpp index 2b179b759c7d0ae522f1e67de3c1755d2b493771..54f16c279da12539e3dd1b63674283671871c480 100644 --- a/Mesh/Metric.cpp +++ b/Mesh/Metric.cpp @@ -1,4 +1,4 @@ -// $Id: Metric.cpp,v 1.6 2001-08-11 23:28:32 geuzaine Exp $ +// $Id: Metric.cpp,v 1.7 2001-09-04 16:25:05 geuzaine Exp $ #include "Gmsh.h" #include "Numeric.h" @@ -8,180 +8,226 @@ #include "Matrix.h" #include "Interpolation.h" -GMSHMetric::GMSHMetric (){ +GMSHMetric::GMSHMetric () +{ Identity (); Attractors = List_Create (2, 2, sizeof (Attractor *)); - apply_costest = true; - apply_disttest = true; - min_cos = 0.0095; - max_dist = 1.e-3; limite_aniso = 3000.; + min_cos = 0.0095; quality_measure = QUALITY_SIMPLEX_BASED; } -double GMSHMetric:: Local_Metric_Of_Attractors (double X, double Y, double Z, - double metric[3][3]){ - int i; - Attractor *a, *amin; - double u, x1, x2, d, dmin; - Vertex v1 (X, Y, Z), v2, der, metr; - - dmin = 1.e25; - amin = NULL; - - for (i = 0; i < List_Nbr (Attractors); i++){ - List_Read (Attractors, i, &a); - if (a->v){ - d = sqrt ((X - a->v->Pos.X) * (X - a->v->Pos.X) + - (Y - a->v->Pos.Y) * (Y - a->v->Pos.Y) + - (Z - a->v->Pos.Z) * (Z - a->v->Pos.Z)); - } - if (a->c){ - ProjectPointOnCurve (a->c, &v1, &v2, &der); - d = sqrt ((X - v2.Pos.X) * (X - v2.Pos.X) + - (Y - v2.Pos.Y) * (Y - v2.Pos.Y) + - (Z - v2.Pos.Z) * (Z - v2.Pos.Z)); - + +Matrix3x3 GMSHMetric :: Intersect2Metrics (Matrix3x3 *m1[2]) +{ + double lmax = 0.; + int im,ic,io; + Vector3 cmax(0.,0,0,0); + Matrix3x3 res(0.0); + + for(int i=0;i<3;i++) + { + for(int j=0;j<2;j++) + { + Vector3 v(0.0); + double l; + m1[j]->getEigen(i,v,l); + // cout << i << " " << j << " " << l << endl; + if(l>lmax) + { + ic = i; + lmax = l; + cmax = v; + im = j; + io = (j==0)?1:0; + } + } } - /* - if(a->s){ - ProjectPointOnSurface (a->c, &v1, &v2,&der); - d = sqrt((X-v2.Pos.X)*(X-v2.Pos.X)+ - (Y-v2.Pos.Y)*(Y-v2.Pos.Y)+ - (Z-v2.Pos.Z)*(Z-v2.Pos.Z)); - - } - */ - if (d < dmin){ - dmin = d; - amin = a; - metr = der; + + // cout << "lmax " << lmax << endl; + res.setEigen (ic, cmax[0],cmax[1], cmax[2], lmax); + + for(int i=0;i<3;i++) + { + if(i != ic) + { + Vector3 v(0.0); + double l; + m1[im]->getEigen(i,v,l); + double l2 = m1[io]->quadraticFormEval(v); + // cout << l << " " << l2 << endl; + res.setEigen(i,v[0],v[1],v[2],(l2>l)?l2:l); + } + } + // cout << "gives " << endl; + // res.print(); + // cout<<endl; + res.setMetric(); + return res; + +} + +double GMSHMetric:: +Local_Metric_Of_Attractors ( double X, double Y, double Z, + double metric[3][3]) +{ + + int i; + Attractor *a; + double u, x1, x2, d; + Vertex v1 (X, Y, Z), v2,metr; + + Matrix3x3 myOldMetric (0.,m); + + for (i = 0; i < List_Nbr (Attractors); i++) + { + Matrix3x3 myMetric (0.); + List_Read (Attractors, i, &a); + if (a->v) + { + d = sqrt ((X - a->v->Pos.X) * (X - a->v->Pos.X) + + (Y - a->v->Pos.Y) * (Y - a->v->Pos.Y) + + (Z - a->v->Pos.Z) * (Z - a->v->Pos.Z)); + metr = Vertex(1.,0.,0.); + } + if (a->c) + { + ProjectPointOnCurve (a->c, &v1, &v2, &metr); + d = sqrt ((X - v2.Pos.X) * (X - v2.Pos.X) + + (Y - v2.Pos.Y) * (Y - v2.Pos.Y) + + (Z - v2.Pos.Z) * (Z - v2.Pos.Z)); + + } + double d1 = d * a->Radius; + u = exp (-(d1 * d1)); + x1 = (1. - u) + u * a->lc1; + x2 = (1. - u) + u * a->lc2; + // cout << " dist from "<< X << " " << Y << " = " << d << endl; + if (u > 0.) + { + if (a->v) + { + double q11 = 1. / (x1 * x1); + double q22 = 1. / (x2 * x2); + //double q12 = 1. / (x1 * x2); + + myMetric.setEigen (0,1.,0.,0.,q11); + myMetric.setEigen (1,0.,1.,0.,q22); + myMetric.setEigen (2,0.,0.,1.,q11); + myMetric.setMetric(); + } + else if (a->c) + { + double xx=0.0,yy=0.0,zz=0.0; + if (metr.Pos.X != 0.0 || metr.Pos.Y != 0.0) + zz = 1.0; + else if (metr.Pos.Y == 0.0) + yy = 1.0; + else + xx = 1.0; + + Vertex z (xx, yy, zz); + Vertex d2 = metr % z; + metr.norme (); + d2.norme (); + Vertex d3 = metr % d2; + d3.norme (); + + myMetric.setEigen (0,metr.Pos.X,metr.Pos.Y,metr.Pos.Z,1./(x1*x1)); + myMetric.setEigen (1,d2.Pos.X,d2.Pos.Y,d2.Pos.Z,1./(x2*x2)); + myMetric.setEigen (2,d3.Pos.X,d3.Pos.Y,d3.Pos.Z,1./(x1*x1)); + myMetric.setMetric(); + } + Matrix3x3 *M[2]; + M[0] = &myMetric; + M[1] = &myOldMetric; + myOldMetric = Intersect2Metrics(M); + // myOldMetric = myMetric; + } } - } - if (amin){ - double d1 = dmin * amin->Radius; - u = exp (-(d1 * d1)); - x1 = (1. - u) + u * amin->lc1; - x2 = (1. - u) + u * amin->lc2; - } - if (amin && amin->v){ - double q11 = 1. / (x1 * x1); - double q22 = 1. / (x2 * x2); - double q12 = 1. / (x1 * x2); - m[0][0] *= q11; - m[0][1] *= q12; - m[1][0] *= q12; - m[1][1] *= q22; - m[2][1] *= q11; - m[1][2] *= q12; - m[0][2] *= q12; - m[2][0] *= q12; - m[2][2] *= q11; - } - else if (amin && amin->c){ - Matrix3x3 < double >NewMetric (0.), Rot (0.), RotTranspose (0.), Id (0.); - double xx = 0.0, yy = 0.0, zz = 0.0; - - if (metr.Pos.Z == 0.0) - zz = 1.0; - else if (metr.Pos.Y == 0.0) - yy = 1.0; - else - xx = 1.0; - - Vertex z (xx, yy, zz); - Vertex d2 = metr % z; - metr.norme (); - d2.norme (); - Vertex d3 = metr % d2; - d3.norme (); - - Id.Identity (1.0); - Rot.Identity (1.0); - - Id[0][0] = 1. / (x1 * x1); - Id[1][1] = 1. / (x2 * x2); - Id[2][2] = 1. / (x2 * x2); - - Rot[0][0] = metr.Pos.X; - Rot[0][1] = metr.Pos.Y; - Rot[0][2] = metr.Pos.Z; - Rot[1][0] = d2.Pos.X; - Rot[1][1] = d2.Pos.Y; - Rot[1][2] = d2.Pos.Z; - Rot[2][0] = d3.Pos.X; - Rot[2][1] = d3.Pos.Y; - Rot[2][2] = d3.Pos.Z; - - RotTranspose = Rot; - RotTranspose.transpose (); - NewMetric = RotTranspose * (Id * Rot); - NewMetric.copy (m); - } - else - u = 0.0; - return u; + myOldMetric.copy(m); + return 1.0; } -void GMSHMetric:: setMetric (double u,double v, Surface * s){ - double a, b, c; // ellipsis axx+byy+cxy=1 - double l1, l2; // 2 eigenvalues +void GMSHMetric:: +setMetric (double u, + double v, + Surface * s) +{ + double a, b, c; // ellipsis axx+byy+cxy=1 + double l1, l2; // 2 eigenvalues Identity (); Vertex p = InterpolateSurface (s, u, v, 0, 0); - if (s->Typ != MSH_SURF_PLAN && s->Typ != MSH_SURF_REGL && s->Typ != MSH_SURF_TRIC){ - Vertex du = InterpolateSurface (s, u, v, 1, 1); - Vertex dv = InterpolateSurface (s, u, v, 1, 2); - - a = du * du; - b = dv * dv; - c = du * dv; - - m[0][0] = a; - m[1][1] = b; - m[0][1] = c; - m[1][0] = c; - - l1 = 0.5 * ((a + b) + sqrt ((a - b) * (a - b) + 4. * c * c)); - l2 = 0.5 * ((a + b) - sqrt ((a - b) * (a - b) + 4. * c * c)); - - if (l1 == 0.0 && l2 == 0.0) - Identity (); - - else if (sqrt (l1 / l2) > limite_aniso){ - // on limite les rapports de metrique a limite_ansio - double r = limite_aniso * limite_aniso * (l2 / l1); - m[0][0] = a / r; - m[1][1] = b * r; + if (s->Typ != MSH_SURF_PLAN && s->Typ != MSH_SURF_REGL && s->Typ != MSH_SURF_TRIC) + { + Vertex du = InterpolateSurface (s, u, v, 1, 1); + Vertex dv = InterpolateSurface (s, u, v, 1, 2); + + a = du * du; + b = dv * dv; + c = du * dv; + + m[0][0] = a; + m[1][1] = b; m[0][1] = c; m[1][0] = c; + + l1 = 0.5 * ((a + b) + sqrt ((a - b) * (a - b) + 4. * c * c)); + l2 = 0.5 * ((a + b) - sqrt ((a - b) * (a - b) + 4. * c * c)); + + if (l1 == 0.0 && l2 == 0.0) + Identity (); + + else if (sqrt (l1 / l2) > limite_aniso) + { + // on limite les rapports de metrique a limite_ansio + double r = limite_aniso * limite_aniso * (l2 / l1); + m[0][0] = a / r; + m[1][1] = b * r; + m[0][1] = c; + m[1][0] = c; + } } - } Local_Metric_Of_Attractors (p.Pos.X, p.Pos.Y, p.Pos.Z, NULL); - + return; } -void GMSHMetric:: setMetric (double x, double y, double z){ +void GMSHMetric:: +setMetric (double x, + double y, + double z) +{ Identity (); Local_Metric_Of_Attractors (x, y, z, NULL); return; } -void GMSHMetric:: setMetricMin (double u, double v, Surface * s){ +void GMSHMetric:: +setMetricMin (double u, + double v, + Surface * s) +{ + /*setMetric(u,v,s); + return; + */ Identity (); - if (s->Typ != MSH_SURF_PLAN && s->Typ != MSH_SURF_REGL && s->Typ != MSH_SURF_TRIC){ - Vertex du = InterpolateSurface (s, u, v, 1, 1); - Vertex dv = InterpolateSurface (s, u, v, 1, 2); - double d = (du * du > dv * dv) ? du * du : dv * dv; - m[0][0] = d; - m[1][1] = d; - } - + if (s->Typ != MSH_SURF_PLAN && s->Typ != MSH_SURF_REGL && s->Typ != MSH_SURF_TRIC) + { + Vertex du = InterpolateSurface (s, u, v, 1, 1); + Vertex dv = InterpolateSurface (s, u, v, 1, 2); + double d = (du * du > dv * dv) ? du * du : dv * dv; + m[0][0] = d; + m[1][1] = d; + } + return; } -double GMSHMetric:: getWorstEdge (Simplex * s, Surface * surf, Vertex * v[2]){ +double GMSHMetric:: +getWorstEdge (Simplex * s, Surface * surf, Vertex * v[2]) +{ double l1, l2, l3, q1, q2, q3; v[0] = s->V[0]; v[1] = s->V[1]; @@ -197,154 +243,185 @@ double GMSHMetric:: getWorstEdge (Simplex * s, Surface * surf, Vertex * v[2]){ q2 = 2. * l2 / (s->V[0]->lc + s->V[2]->lc); q3 = 2. * l3 / (s->V[1]->lc + s->V[2]->lc); - if (q1 >= q2 && q1 >= q3){ - v[0] = s->V[0]; - v[1] = s->V[1]; - return l1; - } - else if (q2 >= q3){ - v[0] = s->V[0]; - v[1] = s->V[2]; - return l2; - } + if (q1 >= q2 && q1 >= q3) + { + v[0] = s->V[0]; + v[1] = s->V[1]; + return l1; + } + else if (q2 >= q3) + { + v[0] = s->V[0]; + v[1] = s->V[2]; + return l2; + } return l3; } -void GMSHMetric:: setSimplexQuality (Simplex * s, Surface * surf){ - if (quality_measure == QUALITY_EDGES_BASED){ - Vertex *v[2], vv; - double l1, l2, l3, q1, q2, q3; - v[0] = s->V[0]; - v[1] = s->V[1]; - vv = (*v[1]) - (*v[0]); - l1 = LengthVector (&vv); - v[0] = s->V[0]; - v[1] = s->V[2]; - vv = (*v[1]) - (*v[0]); - l2 = LengthVector (&vv); - v[0] = s->V[1]; - v[1] = s->V[2]; - vv = (*v[1]) - (*v[0]); - l3 = LengthVector (&vv); - - q1 = 2. * l1 / (s->V[0]->lc + s->V[1]->lc); - q2 = 2. * l2 / (s->V[0]->lc + s->V[2]->lc); - q3 = 2. * l3 / (s->V[1]->lc + s->V[2]->lc); - - s->Quality = DMAX (DMAX (q1, q2), q3) / (RacineDeTrois); - } - else{ - s->Center_Ellipsum_2D (m); - s->Quality = 3. * s->Radius / (s->V[0]->lc + s->V[1]->lc + s->V[2]->lc); - } +void GMSHMetric:: +setSimplexQuality (Simplex * s, Surface * surf) +{ + if (quality_measure == QUALITY_EDGES_BASED) + { + Vertex *v[2], vv; + double l1, l2, l3, q1, q2, q3; + v[0] = s->V[0]; + v[1] = s->V[1]; + vv = (*v[1]) - (*v[0]); + l1 = LengthVector (&vv); + v[0] = s->V[0]; + v[1] = s->V[2]; + vv = (*v[1]) - (*v[0]); + l2 = LengthVector (&vv); + v[0] = s->V[1]; + v[1] = s->V[2]; + vv = (*v[1]) - (*v[0]); + l3 = LengthVector (&vv); + + q1 = 2. * l1 / (s->V[0]->lc + s->V[1]->lc); + q2 = 2. * l2 / (s->V[0]->lc + s->V[2]->lc); + q3 = 2. * l3 / (s->V[1]->lc + s->V[2]->lc); + + s->Quality = DMAX (DMAX (q1, q2), q3) / (RacineDeTrois); + } + else + { + s->Center_Ellipsum_2D (m); + s->Quality = 3. * s->Radius / (s->V[0]->lc + s->V[1]->lc + s->V[2]->lc); + } } -void GMSHMetric::setSimplexQuality (Simplex * s){ - if (quality_measure == QUALITY_EDGES_BASED){ - Vertex *v[2], vv; - double l1, l2, l3, l4, l5, l6, q1, q2, q3, q4, q5, q6; - v[0] = s->V[0]; - v[1] = s->V[1]; - vv = (*v[1]) - (*v[0]); - l1 = LengthVector (&vv); - v[0] = s->V[0]; - v[1] = s->V[2]; - vv = (*v[1]) - (*v[0]); - l2 = LengthVector (&vv); - v[0] = s->V[1]; - v[1] = s->V[2]; - vv = (*v[1]) - (*v[0]); - l3 = LengthVector (&vv); - v[0] = s->V[0]; - v[1] = s->V[3]; - vv = (*v[1]) - (*v[0]); - l4 = LengthVector (&vv); - v[0] = s->V[1]; - v[1] = s->V[3]; - vv = (*v[1]) - (*v[0]); - l5 = LengthVector (&vv); - v[0] = s->V[2]; - v[1] = s->V[3]; - vv = (*v[1]) - (*v[0]); - l6 = LengthVector (&vv); - - q1 = 2. * l1 / (s->V[0]->lc + s->V[1]->lc); - q2 = 2. * l2 / (s->V[0]->lc + s->V[2]->lc); - q3 = 2. * l3 / (s->V[1]->lc + s->V[2]->lc); - q4 = 2. * l4 / (s->V[0]->lc + s->V[3]->lc); - q5 = 2. * l5 / (s->V[1]->lc + s->V[3]->lc); - q6 = 2. * l6 / (s->V[2]->lc + s->V[3]->lc); - - //s->Quality = (0.5/6.)*(q1+q2+q3+q4+q5+q6); - - //double qmax = (DMAX (q1, DMAX (q2, DMAX (q3, DMAX (q4, DMAX (q5, q6)))))); - - s->Quality = (q1 + q2 + q3 + q4 + q5 + q6) / (6. * RacineDeDeux); - } - else{ - s->Center_Ellipsum_3D (m); - s->Quality = 4. * s->Radius / (s->V[0]->lc + s->V[1]->lc + s->V[2]->lc + s->V[3]->lc); - } +void GMSHMetric:: +setSimplexQuality (Simplex * s) +{ + if (quality_measure == QUALITY_EDGES_BASED) + { + Vertex *v[2], vv; + double l1, l2, l3, l4, l5, l6, q1, q2, q3, q4, q5, q6; + v[0] = s->V[0]; + v[1] = s->V[1]; + vv = (*v[1]) - (*v[0]); + l1 = LengthVector (&vv); + v[0] = s->V[0]; + v[1] = s->V[2]; + vv = (*v[1]) - (*v[0]); + l2 = LengthVector (&vv); + v[0] = s->V[1]; + v[1] = s->V[2]; + vv = (*v[1]) - (*v[0]); + l3 = LengthVector (&vv); + v[0] = s->V[0]; + v[1] = s->V[3]; + vv = (*v[1]) - (*v[0]); + l4 = LengthVector (&vv); + v[0] = s->V[1]; + v[1] = s->V[3]; + vv = (*v[1]) - (*v[0]); + l5 = LengthVector (&vv); + v[0] = s->V[2]; + v[1] = s->V[3]; + vv = (*v[1]) - (*v[0]); + l6 = LengthVector (&vv); + + q1 = 2. * l1 / (s->V[0]->lc + s->V[1]->lc); + q2 = 2. * l2 / (s->V[0]->lc + s->V[2]->lc); + q3 = 2. * l3 / (s->V[1]->lc + s->V[2]->lc); + q4 = 2. * l4 / (s->V[0]->lc + s->V[3]->lc); + q5 = 2. * l5 / (s->V[1]->lc + s->V[3]->lc); + q6 = 2. * l6 / (s->V[2]->lc + s->V[3]->lc); + + //s->Quality = (0.5/6.)*(q1+q2+q3+q4+q5+q6); + + //double qmax = (DMAX (q1, DMAX (q2, DMAX (q3, DMAX (q4, DMAX (q5, q6)))))); + + s->Quality = (q1 + q2 + q3 + q4 + q5 + q6) / (6. * RacineDeDeux); + } + else + { + s->Center_Ellipsum_3D (m); + s->Quality = 4. * s->Radius / (s->V[0]->lc + s->V[1]->lc + s->V[2]->lc + s->V[3]->lc); + } } -double GMSHMetric::operator () (int i, int j){ +double GMSHMetric::operator () (int i, int j) +{ return m[i][j]; } -double *GMSHMetric::operator[] (int i){ + +double *GMSHMetric::operator[] (int i) +{ if (i < 0 || i > 3) return m[0]; return m[i]; } -void GMSHMetric::Identity (){ +void GMSHMetric:: +Identity () +{ m[0][0] = m[1][1] = m[2][2] = 1.0; m[1][0] = m[1][2] = m[0][1] = 0.0; m[2][0] = m[2][1] = m[0][2] = 0.0; } -void GMSHMetric::setMetric (double u, Curve * c){ +void GMSHMetric:: +setMetric (double u, + Curve * c) +{ } -double GMSHMetric::getLc (double u, Curve * c){ + +double GMSHMetric:: +getLc (double u, Curve * c) +{ double l; Identity (); Vertex v = InterpolateCurve (c, u, 0); Vertex du = InterpolateCurve (c, u, 1); Local_Metric_Of_Attractors (v.Pos.X, v.Pos.Y, v.Pos.Z, NULL); l = LengthVector (&du); - - //printf("GetLC : u = %g l=%g lc=%g return=%g ", u, l, v.lc, l/v.lc); - + /* + printf("GetLC : u = %g l=%g lc=%g return=%g\n", u, l, v.lc, l/v.lc); + printf("Metric: %g %g %g %g %g %g %g %g %g \n ", + m[0][0], m[0][1], m[0][2], + m[1][0], m[1][1], m[1][2], + m[2][0], m[2][1], m[2][2]); + */ return l / v.lc; } -double GMSHMetric::LengthVector (Vertex * v){ +double GMSHMetric:: +LengthVector (Vertex * v) +{ Vertex mult (v->Pos.X * m[0][0] + v->Pos.Y * m[0][1] + v->Pos.Z * m[0][2], - v->Pos.X * m[1][0] + v->Pos.Y * m[1][1] + v->Pos.Z * m[1][2], - v->Pos.X * m[2][0] + v->Pos.Y * m[2][1] + v->Pos.Z * m[2][2]); + v->Pos.X * m[1][0] + v->Pos.Y * m[1][1] + v->Pos.Z * m[1][2], + v->Pos.X * m[2][0] + v->Pos.Y * m[2][1] + v->Pos.Z * m[2][2]); return sqrt (mult * (*v)); } -double GMSHMetric::EdgeLengthOnSurface (Surface * s, Vertex * v[2], int cuts){ +double GMSHMetric:: +EdgeLengthOnSurface (Surface * s, Vertex * v[2], int cuts) +{ Vertex dv; - if (!s){ - dv = (*v[1]) - (*v[0]); - return LengthVector (&dv); - } + if (!s) + { + dv = (*v[1]) - (*v[0]); + return LengthVector (&dv); + } dv.Pos.X = (v[1]->Pos.X - v[0]->Pos.X) / (double) cuts; dv.Pos.Y = (v[1]->Pos.Y - v[0]->Pos.Y) / (double) cuts; double l = 0.0, posu, posv; - for (int i = 0; i < cuts; i++){ - posu = v[0]->Pos.X + dv.Pos.X * ((double) (i) + 0.5); - posv = v[0]->Pos.Y + dv.Pos.Y * ((double) (i) + 0.5); - setMetric (posu, posv, s); - l += LengthVector (&dv); - } + for (int i = 0; i < cuts; i++) + { + posu = v[0]->Pos.X + dv.Pos.X * ((double) (i) + 0.5); + posv = v[0]->Pos.Y + dv.Pos.Y * ((double) (i) + 0.5); + setMetric (posu, posv, s); + l += LengthVector (&dv); + } return l; } diff --git a/Mesh/Metric.h b/Mesh/Metric.h index af7c8f212862c191536483f95d0de5571b346196..e6cc68b1e64f192943695cefbe1a1d66924aa574 100644 --- a/Mesh/Metric.h +++ b/Mesh/Metric.h @@ -1,19 +1,18 @@ #ifndef _METRIC_H_ #define _METRIC_H_ -class GMSHMetric{ - -public: +#include "Matrix.h" +class GMSHMetric +{ + public: double m[3][3]; - double min_cos; - double max_dist; - bool apply_costest; - bool apply_disttest; double limite_aniso; + double min_cos; int quality_measure; List_T *Attractors; GMSHMetric(); void Identity (); + Matrix3x3 Intersect2Metrics (Matrix3x3 *M[2]); double EdgeLengthOnSurface (Surface *s , Vertex *v[2], int cuts); double LengthVector (Vertex *v); void setMetric (double u,double v ,Surface *s); @@ -26,10 +25,8 @@ public: double operator () (int i,int j); double * operator [] (int i); double Local_Metric_Of_Attractors (double X, double Y, double Z, - double metric[3][3]); + double metric[3][3]); double getWorstEdge (Simplex *s, Surface *surf, Vertex *v[2]); - } ; #endif - diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index e2c28019ab7e2b1018eb5f803b78f0225db59991..efe8fe7427491636920c9ae312b5b743bc570e04 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -175,7 +175,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.112 2001-09-04 08:05:47 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.113 2001-09-04 16:25:05 geuzaine Exp $ #include <stdarg.h> #ifndef _NOPLUGIN @@ -261,7 +261,7 @@ typedef union { -#define YYFINAL 1549 +#define YYFINAL 1620 #define YYFLAG -32768 #define YYNTBASE 188 @@ -343,13 +343,15 @@ static const short yyprhs[] = { 0, 1773, 1777, 1781, 1785, 1789, 1793, 1797, 1801, 1805, 1809, 1813, 1817, 1823, 1828, 1833, 1838, 1843, 1848, 1853, 1858, 1863, 1868, 1873, 1880, 1885, 1890, 1895, 1900, 1905, 1910, - 1917, 1924, 1931, 1936, 1938, 1940, 1942, 1944, 1946, 1951, - 1954, 1960, 1964, 1971, 1976, 1984, 1986, 1989, 1992, 1996, - 2000, 2012, 2022, 2030, 2038, 2039, 2043, 2045, 2049, 2050, - 2054, 2058, 2060, 2064, 2066, 2068, 2072, 2077, 2081, 2087, - 2091, 2096, 2103, 2111, 2113, 2115, 2119, 2123, 2133, 2141, - 2143, 2149, 2153, 2160, 2162, 2166, 2168, 2175, 2180, 2185, - 2192, 2199 + 1917, 1924, 1931, 1936, 1941, 1946, 1951, 1956, 1961, 1966, + 1971, 1976, 1981, 1986, 1993, 1998, 2003, 2008, 2013, 2018, + 2023, 2030, 2037, 2044, 2049, 2051, 2053, 2055, 2057, 2059, + 2064, 2067, 2073, 2077, 2084, 2089, 2097, 2099, 2102, 2105, + 2109, 2113, 2125, 2135, 2143, 2151, 2152, 2156, 2158, 2162, + 2163, 2167, 2171, 2173, 2177, 2179, 2181, 2185, 2190, 2194, + 2200, 2204, 2209, 2216, 2224, 2226, 2228, 2232, 2236, 2246, + 2254, 2256, 2262, 2266, 2273, 2275, 2279, 2281, 2288, 2293, + 2298, 2305, 2312 }; static const short yyrhs[] = { 191, @@ -546,34 +548,46 @@ static const short yyrhs[] = { 191, 180, 256, 181, 0, 29, 180, 256, 181, 0, 30, 180, 256, 185, 256, 181, 0, 31, 180, 256, 185, 256, 181, 0, 32, 180, 256, 185, 256, 181, 0, - 21, 180, 256, 181, 0, 3, 0, 9, 0, 10, - 0, 11, 0, 4, 0, 4, 182, 256, 183, 0, - 4, 238, 0, 4, 182, 256, 183, 238, 0, 4, - 184, 4, 0, 4, 182, 256, 183, 184, 4, 0, - 4, 184, 4, 238, 0, 4, 182, 256, 183, 184, - 4, 238, 0, 259, 0, 170, 258, 0, 169, 258, - 0, 258, 170, 258, 0, 258, 169, 258, 0, 186, - 256, 185, 256, 185, 256, 185, 256, 185, 256, 187, - 0, 186, 256, 185, 256, 185, 256, 185, 256, 187, - 0, 186, 256, 185, 256, 185, 256, 187, 0, 180, - 256, 185, 256, 185, 256, 181, 0, 0, 180, 261, - 181, 0, 5, 0, 261, 185, 5, 0, 0, 186, - 263, 187, 0, 180, 263, 181, 0, 264, 0, 263, - 185, 264, 0, 256, 0, 265, 0, 186, 266, 187, - 0, 170, 186, 266, 187, 0, 256, 8, 256, 0, - 256, 8, 256, 8, 256, 0, 4, 182, 183, 0, - 170, 4, 182, 183, 0, 4, 182, 186, 266, 187, - 183, 0, 170, 4, 182, 186, 266, 187, 183, 0, - 256, 0, 265, 0, 266, 185, 256, 0, 266, 185, - 265, 0, 186, 256, 185, 256, 185, 256, 185, 256, - 187, 0, 186, 256, 185, 256, 185, 256, 187, 0, - 4, 0, 4, 184, 90, 184, 4, 0, 186, 269, - 187, 0, 4, 182, 256, 183, 184, 91, 0, 267, - 0, 269, 185, 267, 0, 5, 0, 35, 180, 270, - 185, 270, 181, 0, 36, 180, 270, 181, 0, 34, - 180, 270, 181, 0, 34, 180, 270, 185, 266, 181, - 0, 34, 180, 4, 184, 4, 181, 0, 34, 180, - 4, 182, 256, 183, 184, 4, 181, 0 + 21, 180, 256, 181, 0, 12, 182, 256, 183, 0, + 13, 182, 256, 183, 0, 14, 182, 256, 183, 0, + 15, 182, 256, 183, 0, 16, 182, 256, 183, 0, + 17, 182, 256, 183, 0, 18, 182, 256, 183, 0, + 19, 182, 256, 183, 0, 20, 182, 256, 183, 0, + 22, 182, 256, 183, 0, 23, 182, 256, 185, 256, + 183, 0, 24, 182, 256, 183, 0, 25, 182, 256, + 183, 0, 26, 182, 256, 183, 0, 27, 182, 256, + 183, 0, 28, 182, 256, 183, 0, 29, 182, 256, + 183, 0, 30, 182, 256, 185, 256, 183, 0, 31, + 182, 256, 185, 256, 183, 0, 32, 182, 256, 185, + 256, 183, 0, 21, 182, 256, 183, 0, 3, 0, + 9, 0, 10, 0, 11, 0, 4, 0, 4, 182, + 256, 183, 0, 4, 238, 0, 4, 182, 256, 183, + 238, 0, 4, 184, 4, 0, 4, 182, 256, 183, + 184, 4, 0, 4, 184, 4, 238, 0, 4, 182, + 256, 183, 184, 4, 238, 0, 259, 0, 170, 258, + 0, 169, 258, 0, 258, 170, 258, 0, 258, 169, + 258, 0, 186, 256, 185, 256, 185, 256, 185, 256, + 185, 256, 187, 0, 186, 256, 185, 256, 185, 256, + 185, 256, 187, 0, 186, 256, 185, 256, 185, 256, + 187, 0, 180, 256, 185, 256, 185, 256, 181, 0, + 0, 180, 261, 181, 0, 5, 0, 261, 185, 5, + 0, 0, 186, 263, 187, 0, 180, 263, 181, 0, + 264, 0, 263, 185, 264, 0, 256, 0, 265, 0, + 186, 266, 187, 0, 170, 186, 266, 187, 0, 256, + 8, 256, 0, 256, 8, 256, 8, 256, 0, 4, + 182, 183, 0, 170, 4, 182, 183, 0, 4, 182, + 186, 266, 187, 183, 0, 170, 4, 182, 186, 266, + 187, 183, 0, 256, 0, 265, 0, 266, 185, 256, + 0, 266, 185, 265, 0, 186, 256, 185, 256, 185, + 256, 185, 256, 187, 0, 186, 256, 185, 256, 185, + 256, 187, 0, 4, 0, 4, 184, 90, 184, 4, + 0, 186, 269, 187, 0, 4, 182, 256, 183, 184, + 91, 0, 267, 0, 269, 185, 267, 0, 5, 0, + 35, 180, 270, 185, 270, 181, 0, 36, 180, 270, + 181, 0, 34, 180, 270, 181, 0, 34, 180, 270, + 185, 266, 181, 0, 34, 180, 4, 184, 4, 181, + 0, 34, 180, 4, 182, 256, 183, 184, 4, 181, + 0 }; #endif @@ -608,13 +622,15 @@ static const short yyrline[] = { 0, 2022, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, - 2058, 2059, 2060, 2065, 2070, 2071, 2072, 2076, 2087, 2104, - 2115, 2134, 2150, 2166, 2182, 2199, 2204, 2208, 2212, 2216, - 2221, 2226, 2230, 2234, 2240, 2244, 2249, 2253, 2258, 2262, - 2266, 2272, 2278, 2285, 2291, 2295, 2299, 2309, 2316, 2327, - 2341, 2357, 2377, 2401, 2407, 2411, 2415, 2426, 2431, 2442, - 2447, 2465, 2470, 2483, 2489, 2495, 2500, 2508, 2521, 2525, - 2550, 2564 + 2058, 2059, 2060, 2062, 2063, 2064, 2065, 2066, 2067, 2068, + 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, + 2079, 2080, 2081, 2082, 2087, 2092, 2093, 2094, 2098, 2109, + 2126, 2137, 2156, 2172, 2188, 2204, 2221, 2226, 2230, 2234, + 2238, 2243, 2248, 2252, 2256, 2262, 2266, 2271, 2275, 2280, + 2284, 2288, 2294, 2300, 2307, 2313, 2317, 2321, 2331, 2338, + 2349, 2363, 2379, 2399, 2423, 2429, 2433, 2437, 2448, 2453, + 2464, 2469, 2487, 2492, 2505, 2511, 2517, 2522, 2530, 2543, + 2547, 2572, 2586 }; #endif @@ -695,13 +711,15 @@ static const short yyr1[] = { 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 258, 258, 258, 258, 258, - 259, 259, 259, 259, 260, 260, 261, 261, 262, 262, - 262, 263, 263, 264, 264, 264, 264, 265, 265, 265, - 265, 265, 265, 266, 266, 266, 266, 267, 267, 267, - 267, 268, 268, 269, 269, 270, 270, 270, 270, 270, - 270, 270 + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 258, 258, 258, 258, + 258, 259, 259, 259, 259, 260, 260, 261, 261, 262, + 262, 262, 263, 263, 264, 264, 264, 264, 265, 265, + 265, 265, 265, 265, 266, 266, 266, 266, 267, 267, + 267, 267, 268, 268, 269, 269, 270, 270, 270, 270, + 270, 270, 270 }; static const short yyr2[] = { 0, @@ -733,13 +751,15 @@ static const short yyr2[] = { 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 6, - 6, 6, 4, 1, 1, 1, 1, 1, 4, 2, - 5, 3, 6, 4, 7, 1, 2, 2, 3, 3, - 11, 9, 7, 7, 0, 3, 1, 3, 0, 3, - 3, 1, 3, 1, 1, 3, 4, 3, 5, 3, - 4, 6, 7, 1, 1, 3, 3, 9, 7, 1, - 5, 3, 6, 1, 3, 1, 6, 4, 4, 6, - 6, 9 + 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, + 6, 6, 6, 4, 1, 1, 1, 1, 1, 4, + 2, 5, 3, 6, 4, 7, 1, 2, 2, 3, + 3, 11, 9, 7, 7, 0, 3, 1, 3, 0, + 3, 3, 1, 3, 1, 1, 3, 4, 3, 5, + 3, 4, 6, 7, 1, 1, 3, 3, 9, 7, + 1, 5, 3, 6, 1, 3, 1, 6, 4, 4, + 6, 6, 9 }; static const short yydefact[] = { 0, @@ -751,8 +771,8 @@ static const short yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 208, 0, 213, 0, 210, 0, 0, 0, 54, 56, 55, 57, 58, 59, 60, 61, 66, 65, 62, 63, 64, 5, 0, 0, - 0, 15, 16, 18, 17, 19, 305, 305, 0, 284, - 288, 336, 132, 285, 286, 287, 0, 0, 0, 0, + 0, 15, 16, 18, 17, 19, 326, 326, 0, 305, + 309, 357, 132, 306, 307, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 134, 135, 136, 0, 0, 0, 137, 138, 0, @@ -760,1239 +780,1339 @@ static const short yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 296, 0, 0, 0, 0, 0, 193, 0, 0, 0, + 317, 0, 0, 0, 0, 0, 193, 0, 0, 0, 193, 236, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 209, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 290, 0, 71, 0, 0, 0, + 0, 0, 0, 0, 311, 0, 71, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 246, 245, 247, 0, 0, 0, 0, 0, + 0, 0, 0, 143, 200, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 0, 0, 335, 0, 336, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 319, 318, 0, 0, 0, 0, 193, + 193, 0, 0, 0, 0, 0, 0, 0, 198, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 328, 0, 0, 0, 0, 0, 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 246, 245, 247, 0, 0, 0, 0, 0, 0, - 0, 0, 143, 200, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 288, 0, 0, 314, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 298, 297, 0, 0, 0, 0, 193, 193, - 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 357, 0, 0, 0, 244, + 0, 0, 345, 346, 0, 0, 132, 0, 0, 0, + 0, 139, 0, 261, 260, 258, 259, 254, 256, 255, + 257, 249, 248, 250, 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 307, 0, 0, 0, 0, 0, 292, 0, + 0, 0, 321, 320, 192, 0, 191, 190, 0, 0, + 0, 0, 0, 195, 194, 235, 0, 0, 196, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 0, 244, 0, 0, - 324, 325, 0, 0, 132, 0, 0, 0, 0, 139, - 0, 261, 260, 258, 259, 254, 256, 255, 257, 249, - 248, 250, 251, 252, 253, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 327, 0, 0, 21, 0, 310, 315, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 300, 299, 192, 0, 191, 190, 0, 0, 0, 0, - 0, 195, 194, 235, 0, 0, 196, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, + 0, 0, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 263, 284, 264, 285, 265, 286, + 266, 287, 267, 288, 268, 289, 269, 290, 270, 291, + 271, 292, 283, 304, 272, 293, 0, 0, 274, 295, + 275, 296, 276, 297, 277, 298, 278, 299, 279, 300, + 0, 0, 0, 0, 0, 0, 0, 0, 360, 0, + 0, 359, 0, 0, 0, 0, 0, 0, 0, 0, + 149, 0, 0, 0, 0, 0, 67, 0, 0, 161, + 0, 0, 0, 0, 174, 0, 182, 0, 0, 341, + 0, 0, 0, 337, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 186, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 306, - 0, 0, 21, 0, 289, 294, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 283, 272, 0, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 0, 0, 339, 0, 0, 338, 0, - 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, - 0, 0, 0, 67, 0, 0, 161, 0, 0, 0, - 0, 174, 0, 182, 0, 0, 320, 0, 0, 0, - 316, 318, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 329, 0, 326, 0, 312, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 308, 0, - 305, 0, 291, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, - 0, 0, 0, 0, 0, 142, 326, 327, 0, 0, - 0, 0, 0, 144, 145, 147, 0, 0, 330, 0, - 334, 0, 153, 262, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 321, 0, 317, 0, 160, 0, - 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 347, 348, 0, 0, 0, 0, 0, + 144, 145, 147, 0, 0, 351, 0, 355, 0, 153, + 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 342, 0, 338, 0, 160, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 234, 197, 0, + 0, 0, 0, 0, 330, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 234, 197, 0, 0, 0, 0, 0, 309, 0, 0, - 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, - 241, 242, 0, 0, 0, 0, 0, 0, 0, 20, - 0, 293, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 273, 280, 281, 282, 0, - 341, 340, 337, 0, 132, 0, 0, 0, 0, 140, - 0, 0, 0, 0, 0, 332, 68, 157, 165, 0, - 166, 0, 162, 0, 163, 184, 0, 0, 319, 0, + 0, 0, 0, 0, 238, 239, 240, 241, 242, 0, + 0, 0, 0, 0, 0, 0, 20, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 201, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 0, 220, 0, 0, 171, 172, 0, 0, + 0, 0, 273, 294, 280, 301, 281, 302, 282, 303, + 0, 362, 361, 358, 0, 132, 0, 0, 0, 0, + 140, 0, 0, 0, 0, 0, 353, 68, 157, 165, + 0, 166, 0, 162, 0, 163, 184, 0, 0, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 201, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 0, 220, 0, 0, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 305, 295, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 150, 0, 0, 151, - 0, 0, 0, 335, 0, 170, 181, 322, 0, 0, - 232, 175, 177, 0, 0, 231, 233, 183, 158, 169, - 180, 185, 0, 0, 0, 304, 0, 303, 0, 0, - 214, 0, 216, 0, 218, 0, 0, 0, 309, 0, - 312, 0, 0, 0, 0, 206, 205, 0, 0, 0, - 0, 0, 23, 0, 32, 0, 36, 0, 30, 0, - 0, 35, 0, 40, 38, 0, 0, 0, 0, 0, - 0, 47, 0, 0, 0, 0, 0, 52, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 326, 316, + 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, + 151, 0, 0, 0, 356, 0, 170, 181, 343, 0, + 0, 232, 175, 177, 0, 0, 231, 233, 183, 158, + 169, 180, 185, 0, 0, 0, 325, 0, 324, 0, + 0, 214, 0, 216, 0, 218, 0, 0, 0, 330, + 0, 333, 0, 0, 0, 0, 206, 205, 0, 0, + 0, 0, 0, 23, 0, 32, 0, 36, 0, 30, + 0, 0, 35, 0, 40, 38, 0, 0, 0, 0, + 0, 0, 47, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 141, 146, 148, 0, 154, 0, 0, - 0, 167, 323, 0, 230, 229, 155, 156, 193, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 311, 0, - 310, 0, 0, 0, 0, 0, 0, 309, 0, 0, + 0, 0, 0, 0, 141, 146, 148, 0, 154, 0, + 0, 0, 167, 344, 0, 230, 229, 155, 156, 193, + 0, 189, 0, 0, 0, 0, 0, 0, 0, 332, + 0, 331, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 342, 0, 333, 331, 0, 0, 0, 0, 302, 0, - 0, 0, 0, 0, 0, 224, 0, 0, 0, 313, - 0, 0, 207, 0, 0, 37, 0, 0, 0, 0, - 27, 0, 33, 0, 39, 28, 41, 0, 44, 0, - 48, 49, 0, 0, 51, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, - 0, 0, 187, 0, 0, 0, 222, 227, 0, 0, - 225, 0, 0, 0, 0, 173, 0, 0, 0, 0, + 0, 363, 0, 354, 352, 0, 0, 0, 0, 323, + 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, + 334, 0, 0, 207, 0, 0, 37, 0, 0, 0, + 0, 27, 0, 33, 0, 39, 28, 41, 0, 44, + 0, 48, 49, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, - 90, 94, 0, 329, 0, 301, 215, 217, 219, 0, - 0, 221, 159, 164, 0, 0, 176, 0, 0, 0, - 0, 0, 31, 34, 42, 0, 43, 50, 45, 0, + 152, 0, 0, 187, 0, 0, 0, 222, 227, 0, + 0, 225, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 90, 94, 0, 350, 0, 322, 215, 217, 219, + 0, 0, 221, 159, 164, 0, 0, 176, 0, 0, + 0, 0, 0, 31, 34, 42, 0, 43, 50, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 0, 88, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 223, 0, 0, 0, 0, 0, 0, 46, 22, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, - 87, 89, 91, 93, 95, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 98, 102, - 106, 226, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, + 0, 84, 0, 88, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 0, 100, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 178, 0, 24, 0, 0, 0, 0, 0, 0, - 97, 99, 101, 103, 105, 107, 0, 0, 0, 0, - 110, 114, 118, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 223, 0, 0, 0, 0, 0, 0, 46, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 85, 87, 89, 91, 93, 95, 168, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, + 102, 106, 226, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 108, 0, 112, 0, 116, 0, 0, 0, + 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 100, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 111, 113, 115, 117, 119, 0, 122, 126, - 130, 25, 0, 0, 0, 0, 0, 0, 0, 120, - 0, 124, 0, 128, 0, 0, 0, 0, 0, 0, - 121, 123, 125, 127, 129, 131, 0, 0, 0 + 0, 0, 178, 0, 24, 0, 0, 0, 0, 0, + 0, 97, 99, 101, 103, 105, 107, 0, 0, 0, + 0, 110, 114, 118, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 108, 0, 112, 0, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 109, 111, 113, 115, 117, 119, 0, 122, + 126, 130, 25, 0, 0, 0, 0, 0, 0, 0, + 120, 0, 124, 0, 128, 0, 0, 0, 0, 0, + 0, 121, 123, 125, 127, 129, 131, 0, 0, 0 }; -static const short yydefgoto[] = { 1547, +static const short yydefgoto[] = { 1618, 80, 5, 6, 19, 20, 21, 22, 7, 65, 66, - 67, 391, 1320, 561, 1270, 1322, 562, 1271, 1324, 563, - 1272, 1431, 564, 1404, 1433, 565, 1405, 1435, 566, 1406, - 1492, 567, 1478, 1494, 568, 1479, 1496, 569, 1480, 1529, - 570, 1523, 1531, 571, 1524, 1533, 572, 1525, 133, 235, - 68, 493, 483, 484, 485, 486, 72, 73, 74, 75, - 1006, 1240, 1145, 1146, 76, 77, 823, 306, 136, 170, - 171, 230, 384, 912, 1010, 1011, 308, 423, 741, 612, - 742, 137 + 67, 412, 1391, 603, 1341, 1393, 604, 1342, 1395, 605, + 1343, 1502, 606, 1475, 1504, 607, 1476, 1506, 608, 1477, + 1563, 609, 1549, 1565, 610, 1550, 1567, 611, 1551, 1600, + 612, 1594, 1602, 613, 1595, 1604, 614, 1596, 133, 235, + 68, 535, 525, 526, 527, 528, 72, 73, 74, 75, + 1077, 1311, 1216, 1217, 76, 77, 890, 327, 136, 170, + 171, 230, 405, 983, 1081, 1082, 329, 465, 808, 675, + 809, 137 }; -static const short yypact[] = { 1984, - 61,-32768,-32768, -44,-32768, 428, 2206,-32768, 11, 114, - 106, 142, 148, 156, 165, -105, 20, 99,-32768,-32768, --32768,-32768, 1591, 150, 179, -145, 184, 221, -39, -34, - 257, 268, 240, 275, 301, 380, 388, 236, 419, 285, - 295, 298, -56, -56, 299, 331, 319, 470, 0, 510, - 523, 263, 377, 379, -25, 9,-32768, 382,-32768, 536, --32768, 556, 559, 522,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 562, 11, - 2058,-32768,-32768,-32768,-32768,-32768, 386, 386, 567,-32768, - -108, 5,-32768,-32768,-32768,-32768, 387, 395, 396, 397, - 399, 400, 402, 403, 404, 405, 406, 408, 409, 411, - 412, 413, 415, 416, 417, 418, 420, 421, 423, 424, --32768,-32768,-32768,-32768, 33, 33, 33,-32768,-32768, 33, - 646, 66, 33, 611, 980,-32768, 612, 594,-32768, 33, - 33, 33, 33, 439, 33, 33, 440, 33, 33, 33, - 1514, 33, 436, 443, 447, 1514, 444, 445, 448, 449, - 452, 453, 454, 633, -56, -56, -56, 33, 33, -35, --32768, 81, -56, 456, 458, 459,-32768, 1514, 464, 632, --32768,-32768,-32768, 1514, 1514, 33, 33, -64, 33, 547, - 33, 33,-32768, 645,-32768, 473,-32768, 11, 499, 500, - 501, 514, 527, 529, 530, 531, 532, 533, 534, 538, - 539, 540, 541, 542, 543, 545, 546, 548, 549, 550, - 551, 552, 554, 570, 577, 589, 590, 591, 649, 588, - 535, 595, 33, 723,-32768, -56,-32768, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 170, 234, - 234, 557, 557, 557, 4972, 767, 68, 4847, 229, 622, - 768, 1014,-32768,-32768, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33,-32768, - -20, 4995, 2207, 5018, 5041, 33, 5064, 2230, 33, 2253, - 5087, 5110, 241, 1559, 68, 1180, 771,-32768, 5133, 33, - 33, 33, 772, 33, 33, 33, 33, 33, 33, 33, - 626, -27,-32768,-32768, 2055, 2621, -56, -56, 384, 384, - 105, 33, 33, 33, 2074, 239, 33,-32768, 2097, 801, - 802, 5156, 5179, 724, 33, 5202, 627, 1750, 5225,-32768, - 33, 663, 812, 813, 814, 815, 817, 818, 819, 820, - 822, 823, 825, 826, 829, 830, 831, 832, 833, 834, - 835, 837, 838, 839, 840, 708, 843, 844, 845, 846, - 849, 848,-32768, 132, 850, 851, 853, 4872, 198, 155, - 624, 5248, 5271, 5294, 5317, 5340, 5363, 5386, 5409, 5432, - 5455, 5478, 2642, 5501, 5524, 5547, 5570, 5593, 5616, 2663, - 2684, 2705, 8,-32768, 214, 671, 678,-32768, 1514, 1693, - 1180,-32768, 27, 163, 234, 33, 854, 860, 12,-32768, - 1774, 799, 593, 442, 442, 242, 242, 242, 242, -40, - -40, 557, 557, 557, 557, 859, 68, 861, 863, 866, - 868, 5639, 869, 871, 5662, 872, 873, 874, 773, 250, - 68, 159, 33, 33, 877, 2276, 5685, 5708, 33, 2299, - 2322, 5731, 5754, 5777, 5800, 5823, 682, -56, 33, 33, --32768,-32768,-32768, 680, 1329,-32768, 692, 33, 2726, 2747, - 2768,-32768,-32768,-32768, 33, 4897,-32768, 699, 700, 880, - 881, 709, 5846, 883, 33, 33,-32768, 5869, 739, 707, - 710, 712, 713, 714, 715, 716, 717, 718, 719, 720, - 722, 725, 726, 727, 731, 732, 733, 734, 736, 737, - 738, 740, 741, 742, 755, 756, 759, 760, 761,-32768, - 889, 728,-32768, 762, 65,-32768,-32768, 774, 775, 778, - 783, 793, 795, 796, 797, 804, 805, 811, 841, 902, +static const short yypact[] = { 2088, + 45,-32768,-32768, -75,-32768, 331, 2382,-32768, 20, 85, + 100, 105, 115, 122, 144, 1, 7, 13,-32768,-32768, +-32768,-32768, 1654, 17, 200, -45, 84, 121, -9, -10, + 131, 147, 250, 170, 314, 320, 353, 546, 368, 167, + 251, 248, 293, 293, 278, 225, 281, 401, 8, 469, + 475, 75, 323, 352, -18, 9,-32768, 378,-32768, 481, +-32768, 491, 504, 480,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 566, 20, + 2405,-32768,-32768,-32768,-32768,-32768, 409, 409, 588,-32768, + 116, 12,-32768,-32768,-32768,-32768, -40, 21, 160, 203, + 204, 351, 384, 414, 415, 436, 445, 456, 460, 463, + 466, 467, 490, 495, 496, 500, 501, 424, 437, 455, +-32768,-32768,-32768,-32768, 1587, 1587, 1587,-32768,-32768, 1587, + 16, 57, 1587, 633, 208,-32768, 646, 653,-32768, 1587, + 1587, 1587, 1587, 471, 1587, 1587, 511, 1587, 1587, 1587, + 1077, 1587, 485, 524, 528, 1077, 488, 531, 597, 606, + 610, 623, 636, 681, 293, 293, 293, 1587, 1587, -71, +-32768, 178, 293, 620, 631, 647,-32768, 1077, 561, 821, +-32768,-32768,-32768, 1077, 1077, 1587, 1587, -28, 1587, 751, + 1587, 1587,-32768, 839,-32768, 669,-32768, 20, 671, 696, + 700, 701, 703, 705, 706, 707, 708, 710, 711, 713, + 714, 716, 717, 718, 719, 720, 721, 722, 723, 725, + 726, 727, 728, 729, 730, 731, 733, 740, 877, 745, + 750, 753, 1587, 932,-32768, 293,-32768, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 96, + 55, 55, 760, 760, 760, 5602, 933, 1760, 1582, 181, + 762, 937, 954,-32768,-32768, 1587, 1587, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, +-32768, 255, 5625, 231, 5648, 5671, 1587, 5694, 871, 1587, + 1885, 5717, 5740, 253, 1197, 1760, 1279, 940,-32768, 5763, + 1587, 1587, 1587, 941, 1587, 1587, 1587, 1587, 1587, 1587, + 1587, 768, 301,-32768,-32768, 413, 600, 293, 293, 563, + 563, 307, 1587, 1587, 1587, 2211, 151, 1587,-32768, 2229, + 943, 944, 5786, 5809, 864, 1587, 5832, 769, 1790, 5855, +-32768, 1587, 805, 952, 953, 956, 957, 958, 960, 961, + 963, 964, 965, 966, 967, 968, 969, 970, 971, 973, + 974, 975, 976, 977, 978, 982, 850, 984, 985, 987, + 988, 991, 992,-32768, 257, 993, 990, 1006, 2234, 339, + 196, -8, 5878, 5002, 5901, 5027, 5924, 5052, 5947, 5077, + 5970, 5102, 5993, 5127, 6016, 5152, 6039, 5177, 6062, 5202, + 6085, 5227, 6108, 5252, 2713, 2734, 6131, 5277, 6154, 5302, + 6177, 5327, 6200, 5352, 6223, 5377, 6246, 5402, 2755, 2776, + 2797, 2818, 2839, 2860, 290,-32768, 280, 774, 833,-32768, + 1077, 1836, 1279,-32768, 499, 149, 55, 1587, 1009, 1013, + 14,-32768, 1811, 494, 626, 642, 642, 182, 182, 182, + 182, 347, 347, 760, 760, 760, 760, 1014, 1760, 1012, + 1016, 1017, 1018, 6269, 1020, 1029, 6292, 1040, 1041, 1042, + 709, 386, 1760, 505, 1587, 1587, 1045, 2324, 6315, 6338, + 1587, 2391, 2414, 6361, 6384, 6407, 6430, 6453, 863, 293, + 1587, 1587,-32768,-32768,-32768, 866, 2283,-32768, 867, 1587, + 2881, 2902, 2923,-32768,-32768,-32768, 1587, 5427,-32768, 869, + 873, 1050, 1053, 881, 6476, 1055, 1587, 1587,-32768, 6499, + 912, 880, 882, 883, 884, 885, 886, 887, 888, 889, + 890, 891, 894, 897, 898, 925, 926, 927, 951, 955, + 959, 962, 979, 981, 994, 995, 996, 997, 999, 1000, + 1002,-32768, 1061, 947,-32768, 1003, -17,-32768,-32768, 938, + 980, 983, 1010, 1011, 1015, 1019, 1022, 1023, 1024, 1069, + 1073, 1131,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 1587, 1587,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 33,-32768,-32768,-32768,-32768,-32768,-32768, - 33, 33, 33, 33, 947,-32768, 68, 234,-32768, 946, - 68, 810, 69, 33, 973, 976, 1052,-32768, 987, 842, - 15, 1013, 33,-32768, 215, -56,-32768, 1514, 1514, 1018, - 1514,-32768, 1020,-32768, 1514, 1514,-32768, 68, 986, 273, --32768, 1795, 1076, 847, 1021, 1022, 1023, 365, 1024, 1025, - 1027, 1028, 1029, 1030, 1031, 1035, 168, 2789, 2810,-32768, --32768, 2345, -56, -56, -56, 1270, 1036, 33, 33, 1514, - 1514, 33, 1037, 1514, 1810, 189, 1038, 895, 1045, 33, - 33, -56, 1046, 1047, 885, 1048, 1049, 1514, 1514, 1051, - -56, 1054, 1059, 1514, 1514, 1062, 1063, 1064, 1065, 1066, - 1514, 345, 1514, 1068, 1067, 1069, 1070, 1072,-32768, 1071, - 386, 1075,-32768, 667, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33,-32768, 5892, 5915, 5938, - 5961, 4922, 899, 235, 900,-32768, 1180,-32768, 22, 233, - 892, 1077, 1327,-32768,-32768,-32768, 15, 33, 903, 33, --32768, 274,-32768, 6467, 1082, 14, 60, 1083, 1514, 1084, - 1514, 1086, 1087, 279,-32768, 68,-32768, 33,-32768, 33, - 1514, 1514, 1514,-32768, 352, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 474, 33, 33, 33, 897, 24, 115, 146, --32768,-32768, 2831, 2852, 1089, 1102, 5984, -75, 1032, 33, - 33,-32768, 923, 11, 925, 2873, 2894, 102, 929, 935, - 932, 937, 934, 939, 941, 942, 223, 950, 955, 956, - 959, 969, 972, 975, 977, 978, 983,-32768,-32768,-32768, --32768,-32768, 982, 985, 1004, 1005, 1006, 984, 1007,-32768, - 1009, 198, 1116, 2915, 2936, 2957, 2978, 2999, 3020, 3041, - 3062, 3083, 3104, 3125, 3146,-32768,-32768,-32768,-32768, 974, --32768,-32768,-32768, 1514, 234, 33, 1162, 1167, 12,-32768, - 1189, 4947, 1106, 3167, 15,-32768,-32768,-32768,-32768, -56, --32768, 1191,-32768, 1201,-32768,-32768, 1026, 282, 6467, 3188, - 1202, 1220, 1221, 33, 33, 1222, 1223, 1224, 1226, 1227, - 1234, 1244,-32768, 1632, 2368, 6007, 1831, 384, -56, 1245, - -56, 1246, -56, 1247, 33, 33,-32768,-32768, 1249, 1514, - 1514, 1165, 1514, 327, 6030, 33, 11, 1254, 33, 1514, - 1252, 1256, 1271, 1091, 1272, 345, 1273, 1257, 33, 1274, - 1278, 1277, 1279, 1281, 345, 33, 33, 33, 1514, 1282, - 1284, 345, 33, 1286, 1287, 1285, 33, 386,-32768,-32768, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 1288, 1289, 1290, 1618,-32768, 1291, 1293,-32768, - 1109, 1110, 33,-32768, 18,-32768,-32768,-32768, 1114, 33, --32768,-32768,-32768, 1665, 1686,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1720, 1294, 1117,-32768, 33,-32768, 1115, 196, --32768, 209,-32768, 213,-32768, 1118, 3209, 3230, -75, 248, --32768, 283, 1119, 1225, 33,-32768,-32768, 3251, 11, 1125, - 3272, 1123,-32768, 1124,-32768, 1127,-32768, 1129,-32768, 1138, - 6053,-32768, 1140,-32768,-32768, 1146, 1147, 6076, 3293, 6099, - 1144,-32768, 1149, 1150, 3314, 1151, 1153,-32768, 3335, 1152, - 3356, 3377, 3398, 3419, 3440, 3461, 3482, 3503, 3524, 3545, - 3566, 3587, 1154,-32768,-32768,-32768, 15,-32768, 1241, 1334, - 3608,-32768,-32768, 3629,-32768,-32768,-32768,-32768, 384, 2148, --32768, 33, 33, 33, -31, 33, 33, 1255,-32768, 1514, --32768, 1514, 33, 2391, 1514, 1206, 1351, -75, 345, 1355, - 33, 1360, 345, 1369, 1374, 1377, 1379, 1380, 33, 1381, - 1514, 1382, 1393, 33, 1397, 1395, 33, 1375, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, --32768, 1396,-32768,-32768, 33, 1398, 1217, 33,-32768, 2414, - 2437, 2460, 1399, 1229, -38,-32768, 2483, 2506, 1230,-32768, - 1239, 1735,-32768, 1219, 11,-32768, 1243, 1259, 1263, 3650, --32768, 1228,-32768, 1253,-32768,-32768,-32768, 6122,-32768, 1265, --32768,-32768, 6145, 1275,-32768, 6168, 1266, 3671, 3692, 3713, - 3734, 3755, 3776, 3797, 3818, 3839, 6191, 6214, 6237,-32768, - 2177, 1268,-32768, 2529, 1401, 1402, 1404,-32768, 1514, 1405, --32768, 1420, 1449, 1514, 1514,-32768, 1452, 11, 345, 345, - 345, 345, 1459, 1460, 1461, 345, 1462, 1463, 1464, 1466, - 33, 33, 33, 33, 33, 33, 33, 33, 33,-32768, --32768,-32768, 33,-32768, 1467,-32768,-32768,-32768,-32768, 1296, - 1295,-32768,-32768,-32768, 1299, 1298,-32768, 11, 1306, 1316, - 1321, 1326,-32768,-32768,-32768, 1323,-32768,-32768,-32768, 1324, - 3860, 3881, 3902, 3923, 3944, 3965, 3986, 4007, 4028, 1325, - 1333, 1335, 2552, 1328, -31, 1514, 1514, 1389, 1362, 345, - 345, 1509, 1516, 345, 1515, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33,-32768, 1542, -37, - 1363, 1364, 1366, 11, 1365, 1368,-32768,-32768, 1373, 1376, - 4049, 4070, 4091, 4112, 4133, 4154, 4175, 4196, 4217, 286, - 6467, 289, 6467, 316, 6467, 1371, 1543, 1514, 1469, 33, - 11, 345, 1514, 1550, 1553, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 1554, 33, 1558, 33, 1586, - 1587,-32768, 1378, 1411, 4238, 11, 1414, 1443,-32768,-32768, - 4259, 4280, 4301, 4322, 4343, 4364, 6260, 6283, 6306, 6467, --32768, 6467,-32768, 6467,-32768,-32768, 1623, 33, 33, 1477, - 345, 1514, 33, 33, 33, 33, 33, 33,-32768,-32768, --32768,-32768, 4385, 2575, 1478, 1446, 1448, 4406, 4427, 4448, - 4469, 4490, 4511, 1454, 1479, 1483, 33, 1628,-32768, 1514, - 345, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 2598,-32768, 1485, 1491, 4532, 4553, 4574, 4595, 4616, 4637, - 317, 6467, 323, 6467, 324, 6467, 1667, 1514, 1668, 33, - 33, 33, 33, 33, 33, 33, 1669, 33, 1670, 33, - 1671,-32768, 1493,-32768, 4658, 4679, 4700, 6329, 6352, 6375, - 6467,-32768, 6467,-32768, 6467,-32768, 1514, 33, 33, 33, --32768,-32768,-32768, 1494, 4721, 4742, 4763, 1495, 1496, 1499, - 1514, 33, 33, 33, 33, 33, 33, 1501, 4784, 4805, - 4826, 330, 6467, 334, 6467, 335, 6467, 345, 33, 33, - 33, 33, 1674, 33, 1681, 33, 1682, 1510, 6398, 6421, - 6444, 6467,-32768, 6467,-32768, 6467,-32768, 1687,-32768,-32768, --32768,-32768, 1512, 1513, 1541, 33, 33, 33, 354, 6467, - 358, 6467, 371, 6467, 33, 1695, 33, 1724, 33, 1725, - 6467,-32768, 6467,-32768, 6467,-32768, 1732, 1733,-32768 + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1134,-32768, 1760, + 55,-32768, 1133, 1760, 972, 179, 1587, 1136, 1137, 1071, +-32768, 1138, 1007, 18, 1140, 1587,-32768, 308, 293,-32768, + 1077, 1077, 1141, 1077,-32768, 1146,-32768, 1077, 1077,-32768, + 1760, 843, 516,-32768, 1861, 1123, 1008, 1147, 1149, 1151, + 440, 1152, 1154, 1185, 1186, 1189, 1190, 1191, 1231, 315, + 2944, 2965,-32768,-32768, 2437, 293, 293, 293, 1144, 1145, + 1587, 1587, 1077, 1077, 1587, 1244, 1077, 1908, 756, 1247, + 1107, 1253, 1587, 1587, 293, 1255, 1256, 1089, 1258, 1259, + 1077, 1077, 1261, 293, 1262, 1263, 1077, 1077, 1264, 1265, + 1275, 1276, 1277, 1077, 300, 1077, 1294, 1293, 1295, 1296, + 1305,-32768, 1312, 409, 1315,-32768, 5, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,-32768, + 6522, 5452, 6545, 5477, 6568, 5502, 6591, 5527, 5552, 1139, + 328, 1143,-32768, 1279,-32768, 166, 292, 1142, 1314, 1242, +-32768,-32768,-32768, 18, 1587, 1148, 1587,-32768, 522,-32768, + 7097, 1316, 43, 56, 1319, 1077, 1321, 1077, 1323, 1324, + 529,-32768, 1760,-32768, 1587,-32768, 1587, 1077, 1077, 1077, +-32768, 702, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 690, + 1587, 1587, 1587, 1161, -73, -36, 159,-32768,-32768, 2986, + 3007, 1325, 1327, 6614, -25, 1260, 1587, 1587,-32768, 1162, + 20, 1165, 3028, 3049, -16, 1166, 1171, 1169, 1174, 1172, + 1175, 1173, 1177, 91, 1178, 1179, 1183, 1180, 1184, 1188, + 1194, 1195, 1196, 1187,-32768,-32768,-32768,-32768,-32768, 1209, + 1211, 1213, 1214, 1215, 1193, 1232,-32768, 1233, 339, 1353, + 3070, 3091, 3112, 3133, 3154, 3175, 3196, 3217, 3238, 3259, + 3280, 3301,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 1192,-32768,-32768,-32768, 1077, 55, 1587, 1364, 1367, 14, +-32768, 1369, 5577, 1292, 3322, 18,-32768,-32768,-32768,-32768, + 293,-32768, 1410,-32768, 1413,-32768,-32768, 1237, 557, 7097, + 3343, 1416, 1417, 1418, 1587, 1587, 1419, 1422, 1423, 1424, + 1431, 1437, 1447,-32768, 525, 2460, 6637, 1935, 563, 293, + 1448, 293, 1450, 293, 1451, 1587, 1587,-32768,-32768, 1452, + 1077, 1077, 1380, 1077, 254, 6660, 1587, 20, 1467, 1587, + 1077, 1465, 1469, 1468, 1302, 1470, 300, 1471, 1472, 1587, + 1473, 1475, 1474, 1476, 1478, 300, 1587, 1587, 1587, 1077, + 1477, 1481, 300, 1587, 1482, 1483, 1489, 1587, 409,-32768, +-32768, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, + 1587, 1587, 1587, 1493, 1498, 1508, 1340,-32768, 1480, 1509, +-32768, 1336, 1337, 1587,-32768, 89,-32768,-32768,-32768, 1339, + 1587,-32768,-32768,-32768, 1400, 1532,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 1634, 1517, 1338,-32768, 1587,-32768, 1341, + 327,-32768, 332,-32768, 336,-32768, 1343, 3364, 3385, -25, + 342,-32768, 589, 1350, 1439, 1587,-32768,-32768, 3406, 20, + 1345, 3427, 1342,-32768, 1352,-32768, 1354,-32768, 1359,-32768, + 1356, 6683,-32768, 1357,-32768,-32768, 1362, 1363, 6706, 3448, + 6729, 1360,-32768, 1365, 1370, 3469, 1368, 1374,-32768, 3490, + 1371, 3511, 3532, 3553, 3574, 3595, 3616, 3637, 3658, 3679, + 3700, 3721, 3742, 1376,-32768,-32768,-32768, 18,-32768, 1486, + 1554, 3763,-32768,-32768, 3784,-32768,-32768,-32768,-32768, 563, + 2057,-32768, 1587, 1587, 1587, 23, 1587, 1587, 1491,-32768, + 1077,-32768, 1077, 1587, 2483, 1077, 1430, 1558, -25, 300, + 1583, 1587, 1586, 300, 1588, 1590, 1589, 1614, 1615, 1587, + 1616, 1077, 1619, 1620, 1587, 1625, 1623, 1587, 1626, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, + 1587,-32768, 1624,-32768,-32768, 1587, 1627, 1446, 1587,-32768, + 2506, 2529, 2552, 1628, 1449, -13,-32768, 2575, 2598, 1453, +-32768, 1458, 1734,-32768, 1457, 20,-32768, 1460, 1461, 1464, + 3805,-32768, 1455,-32768, 1456,-32768,-32768,-32768, 6752,-32768, + 1466,-32768,-32768, 6775, 1479,-32768, 6798, 1502, 3826, 3847, + 3868, 3889, 3910, 3931, 3952, 3973, 3994, 6821, 6844, 6867, +-32768, 2178, 1511,-32768, 2621, 1632, 1644, 1646,-32768, 1077, + 1647,-32768, 1649, 1656, 1077, 1077,-32768, 1700, 20, 300, + 300, 300, 300, 1701, 1702, 1703, 300, 1704, 1706, 1707, + 1709, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, +-32768,-32768,-32768, 1587,-32768, 1710,-32768,-32768,-32768,-32768, + 1531, 1534,-32768,-32768,-32768, 1535, 1536,-32768, 20, 1537, + 1539, 1540, 1544,-32768,-32768,-32768, 1541,-32768,-32768,-32768, + 1542, 4015, 4036, 4057, 4078, 4099, 4120, 4141, 4162, 4183, + 1545, 1546, 1560, 2644, 1573, 23, 1077, 1077, 1673, 1612, + 300, 300, 1762, 1802, 300, 1761, 1587, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587,-32768, 1809, + -12, 1630, 1629, 1631, 20, 1633, 1635,-32768,-32768, 1640, + 1641, 4204, 4225, 4246, 4267, 4288, 4309, 4330, 4351, 4372, + 593, 7097, 596, 7097, 637, 7097, 1639, 1821, 1077, 1742, + 1587, 20, 300, 1077, 1826, 1827, 1587, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1829, 1587, 1831, 1587, + 1835, 1837,-32768, 1655, 1658, 4393, 20, 1685, 1686,-32768, +-32768, 4414, 4435, 4456, 4477, 4498, 4519, 6890, 6913, 6936, + 7097,-32768, 7097,-32768, 7097,-32768,-32768, 1866, 1587, 1587, + 1720, 300, 1077, 1587, 1587, 1587, 1587, 1587, 1587,-32768, +-32768,-32768,-32768, 4540, 2667, 1721, 1689, 1691, 4561, 4582, + 4603, 4624, 4645, 4666, 1692, 1693, 1694, 1587, 1871,-32768, + 1077, 300, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, + 1587, 2690,-32768, 1696, 1705, 4687, 4708, 4729, 4750, 4771, + 4792, 638, 7097, 641, 7097, 644, 7097, 1876, 1077, 1877, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1879, 1587, 1881, + 1587, 1882,-32768, 1713,-32768, 4813, 4834, 4855, 6959, 6982, + 7005, 7097,-32768, 7097,-32768, 7097,-32768, 1077, 1587, 1587, + 1587,-32768,-32768,-32768, 1723, 4876, 4897, 4918, 1725, 1726, + 1728, 1077, 1587, 1587, 1587, 1587, 1587, 1587, 1724, 4939, + 4960, 4981, 645, 7097, 651, 7097, 652, 7097, 300, 1587, + 1587, 1587, 1587, 1883, 1587, 1884, 1587, 1886, 1736, 7028, + 7051, 7074, 7097,-32768, 7097,-32768, 7097,-32768, 1909,-32768, +-32768,-32768,-32768, 1732, 1733, 1735, 1587, 1587, 1587, 655, + 7097, 656, 7097, 663, 7097, 1587, 1914, 1587, 1916, 1587, + 1917, 7097,-32768, 7097,-32768, 7097,-32768, 1924, 1925,-32768 }; static const short yypgoto[] = {-32768, - -70,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 1188,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -74,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 1344,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -251, -22, --32768, 1729, 1730, -325, 258, 1731,-32768,-32768,-32768,-32768, --32768,-32768, 465, -1124,-32768,-32768, -904, -23,-32768, -29, --32768, -85,-32768, -983, 852, 362, -265, -294, -725, 884, --32768, -253 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -286, -22, +-32768, 1919, 1920, -349, 390, 1921,-32768,-32768,-32768,-32768, +-32768,-32768, 585, -1199,-32768,-32768, -992, -23,-32768, -29, +-32768, -85,-32768, -1030, 950, 900, -232, -319, -793, 1004, +-32768, -272 }; -#define YYLAST 6646 +#define YYLAST 7276 static const short yytable[] = { 135, - 134, 422, 231, 179, 487, 415, 416, 417, 236, 198, - 462, 861, 190, 78, 172, 610, 188, 426, 739, 868, - 1201, 1028, 344, 1072, 144, 1088, 1143, 1143, 93, 147, - 1037, 1144, 1144, 1143, 140, 90, 91, 1044, 1144, 422, - 141, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 869, 8, 128, 129, 269, - 90, 303, 730, 233, 87, 234, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 180, 262, 263, 264, 910, 9, 265, 268, 870, 272, - 911, 82, 166, 167, 1157, 345, 292, 293, 294, 295, - 81, 297, 298, 168, 300, 301, 302, 352, 309, 169, - 286, 287, 288, 327, 328, 322, 323, 324, 289, 974, - 145, 327, 328, 331, 325, 326, 146, 83, 1200, 1327, - 329, 148, 615, 84, 189, 270, 271, 478, 731, 732, - 446, 85, 342, 343, 447, 346, 630, 348, 349, 93, - 86, 606, 604, 413, 414, 1201, 121, 122, 123, 124, - 79, 422, 327, 328, 139, 181, 327, 328, 191, 594, - 237, 595, 327, 328, 1158, 422, 791, 611, 1162, 88, - 740, 125, 126, 118, 119, 120, 390, 127, 899, 388, - 900, 601, 130, 602, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 425, 125, 420, 414, 855, - 128, 129, 127, 421, 494, 495, 427, 130, 702, 327, - 328, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 330, 118, 119, 120, - 327, 328, 452, 327, 328, 455, 156, 157, 89, 158, - 263, 421, 921, 327, 328, 151, 466, 467, 468, 488, - 470, 471, 472, 473, 474, 475, 476, 481, 482, 901, - 184, 902, 724, 185, 1249, 1250, 1251, 1252, 489, 490, - 491, 1256, 540, 496, 327, 328, 541, 121, 122, 123, - 124, 503, 160, 327, 328, 161, 162, 508, 163, 138, - 903, 422, 904, 754, 1015, 728, 327, 328, 128, 129, - 547, 1132, 153, 601, 725, 631, 603, 275, 276, 277, - 278, 279, 774, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 422, 142, 327, 328, 546, 289, 174, 792, - 764, 175, 176, 128, 129, 1305, 1306, 327, 328, 1309, - 1082, 327, 328, 121, 122, 123, 124, 121, 122, 123, - 124, 327, 328, 1083, 596, 745, 263, 1084, 597, 601, - 143, 605, 607, 930, 128, 129, 884, 885, 128, 129, - 284, 285, 286, 287, 288, 852, 128, 129, 765, 601, - 289, 154, 459, 421, 234, 128, 129, 1357, 1089, 155, - 10, 629, 1090, 234, 335, 388, 149, 421, 339, 632, - 633, 42, 43, 44, 45, 638, 47, 150, 647, 818, - 819, 820, 821, 822, 152, 648, 649, 601, 865, 757, - 866, 878, 159, 601, 652, 877, 601, 1090, 979, 1091, - 1345, 656, 1346, 1347, 164, 1348, 1396, 854, 856, 893, - 894, 665, 666, 165, 173, 275, 276, 277, 278, 279, - 422, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 1349, 1446, 1350, 1447, 177, 289, 1424, 1448, 1450, 1449, - 1451, 178, 307, 1016, 1502, 182, 1503, 313, 1504, 1506, - 1505, 1507, 703, 275, 276, 277, 278, 279, 183, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 1535, 336, - 1536, 193, 1537, 289, 1538, 340, 341, 11, 12, 13, - 14, 15, 16, 17, 18, 1539, 186, 1540, 187, 194, - 718, 192, 195, 196, 197, 229, 238, 719, 720, 721, - 722, 232, 999, 421, 239, 240, 241, 727, 242, 243, - 733, 244, 245, 246, 247, 248, 746, 249, 250, 744, - 251, 252, 253, 1508, 254, 255, 256, 257, 291, 258, - 259, 965, 260, 261, 421, 388, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 831, 273, 290, 296, 299, - 289, 310, 311, 778, 779, 780, 312, 316, 317, 314, - 315, 318, 319, 320, 783, 784, 321, 338, 787, 347, - 994, 332, 798, 333, 334, 337, 796, 797, 90, 91, - 350, 807, 351, 383, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 353, 354, - 355, 834, 835, 836, 837, 838, 839, 840, 841, 842, - 843, 844, 845, 356, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 357, 857, 358, 359, - 360, 361, 362, 363, 862, 386, 864, 364, 365, 366, - 367, 368, 369, 917, 370, 371, 389, 372, 373, 374, - 375, 376, 421, 377, 879, 289, 880, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 557, 558, 559, 378, - 895, 896, 897, 1137, 278, 279, 379, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 914, 915, 380, 381, - 382, 289, 385, 419, 429, 90, 91, 464, 469, 387, - 600, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 428, 477, 498, 499, 949, - 560, 502, 505, 509, 125, 126, 510, 511, 512, 513, - 127, 514, 515, 516, 517, 130, 518, 519, 266, 520, - 521, 267, 966, 522, 523, 524, 525, 526, 527, 528, - 975, 529, 530, 531, 532, 533, 1019, 534, 535, 536, - 537, 538, 539, 833, 542, 598, 543, 544, 599, 608, - 984, 985, 1050, 609, 614, 646, 650, 616, 617, 1000, - 993, 1002, 618, 1004, 619, 621, 622, 624, 651, 625, - 626, 1007, 1008, 634, 658, 659, 660, 661, 662, 664, - 668, 669, 1018, 699, 670, 1021, 671, 672, 673, 674, - 675, 676, 677, 678, 679, 1031, 680, 717, 700, 681, - 682, 683, 1038, 1039, 1040, 684, 685, 686, 687, 1045, - 688, 689, 690, 1049, 691, 692, 693, 1051, 1052, 1053, - 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 694, - 695, 125, 126, 696, 697, 698, 701, 127, 1096, 1071, - 723, 726, 130, 705, 706, 627, 1074, 707, 628, 277, - 278, 279, 708, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 709, 1080, 710, 711, 712, 289, 734, 747, - 748, 735, 750, 713, 714, 274, 752, 753, 90, 91, - 715, 1094, 729, 737, 94, 95, 96, 97, 98, 99, + 134, 529, 231, 468, 1099, 198, 504, 457, 458, 459, + 932, 179, 190, 1108, 172, 236, 1272, 673, 90, 91, + 1115, 806, 78, 188, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 743, 430, - 716, 785, 786, 738, 749, 789, 751, 761, 762, 763, - 766, 767, 760, 768, 769, 770, 771, 772, 773, 804, - 805, 782, 794, 788, 793, 810, 811, 795, 799, 800, - 802, 803, 817, 806, 824, 801, 808, 736, 1140, 1141, - 1142, 809, 1147, 1148, 812, 813, 814, 815, 816, 1152, - 825, 826, 828, 827, 829, 858, 830, 1160, 832, 851, - 853, 759, 898, 859, 1208, 1168, 863, 867, 871, 873, - 1173, 875, 876, 1176, 907, 1178, 1179, 1180, 1181, 1182, - 1183, 1184, 1185, 1186, 1187, 1188, 1189, 908, 916, 918, - 872, 1191, 874, 922, 1194, 923, 924, 925, 926, 927, - 913, 950, 881, 882, 883, 928, 929, 886, 887, 888, - 889, 890, 891, 892, 931, 932, 933, 1248, 275, 276, - 277, 278, 279, 934, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 935, 125, 126, 936, 963, 289, 937, - 127, 938, 939, 940, 946, 130, 941, 967, 755, 942, - 968, 756, 275, 276, 277, 278, 279, 1279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 463, 943, 944, - 945, 947, 289, 948, 970, 972, 976, 1261, 1262, 1263, - 1264, 1265, 1266, 1267, 1268, 1269, 977, 981, 978, 1273, - 275, 276, 277, 278, 279, 964, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 982, 983, 986, 987, 988, - 289, 989, 990, 1331, 275, 276, 277, 278, 279, 991, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 992, - 1001, 1003, 1005, 1013, 289, 1009, 1020, 1023, 1024, 1030, - 1356, 1026, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, - 1319, 1321, 1323, 1325, 1014, 781, 1025, 1027, 1029, 1032, - 1033, 1022, 1034, 1036, 1035, 1380, 1043, 1042, 1046, 1047, - 1048, 1063, 1069, 1070, 1064, 1065, 1073, 1067, 1068, 1078, - 1041, 1081, 1079, 1085, 1092, 1097, 1355, 1099, 1100, 1102, - 1093, 1101, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, - 1369, 1370, 1103, 1372, 1105, 1374, 1106, 1107, 1111, 1112, - 1113, 1133, 860, 1116, 1131, 1115, 1118, 1134, 275, 276, - 277, 278, 279, 1149, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 1155, 1393, 1394, 1156, 1159, 289, 1398, - 1399, 1400, 1401, 1402, 1403, 1161, 26, 27, 28, 29, - 30, 31, 32, 33, 1163, 34, 1164, 36, 37, 1177, - 39, 40, 1165, 1421, 1166, 1167, 1169, 1171, 1425, 1426, - 1427, 1428, 1429, 1430, 1432, 1434, 1436, 52, 1172, 1174, - 1175, 1190, 1192, 1193, 1198, 1207, 1237, 1238, 1213, 1239, - 1242, 53, 54, 55, 1199, 1204, 1455, 1456, 1457, 1458, - 1459, 1460, 1461, 1205, 1463, 1243, 1465, 1209, 275, 276, - 277, 278, 279, 1214, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 1210, 1475, 1476, 1477, 1211, 289, 1216, - 1220, 1150, 1235, 1151, 1244, 1218, 1154, 1247, 1489, 1490, - 1491, 1493, 1495, 1497, 1253, 1254, 1255, 1257, 1258, 1259, - 1260, 1274, 1170, 64, 1303, 1509, 1510, 1511, 1512, 1276, - 1514, 1275, 1516, 1277, 1278, 275, 276, 277, 278, 279, - 1280, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 1281, 1282, 1530, 1532, 1534, 289, 1283, 1284, 1285, 1304, - 1295, 1541, 1299, 1543, 1307, 1545, 90, 303, 1296, 1310, - 1297, 1308, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 1326, 1328, 1352, 1332, - 1329, 1330, 1333, 1334, 1354, 1359, 1335, 1351, 1360, 1371, - 1241, 90, 460, 1373, 1377, 1245, 1246, 94, 95, 96, + 110, 111, 112, 113, 114, 115, 116, 117, 939, 1159, + 8, 1214, 1214, 147, 144, 464, 1215, 1215, 365, 456, + 290, 940, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 9, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 1214, 118, 119, + 120, 81, 1215, 464, 1143, 348, 349, 348, 349, 455, + 456, 283, 284, 285, 941, 82, 286, 289, 180, 293, + 83, 970, 184, 971, 350, 185, 313, 314, 315, 316, + 84, 318, 319, 373, 321, 322, 323, 85, 330, 118, + 119, 120, 348, 349, 140, 343, 344, 345, 1228, 238, + 141, 239, 1045, 352, 346, 347, 291, 292, 972, 86, + 973, 366, 348, 349, 981, 93, 536, 537, 128, 129, + 982, 189, 363, 364, 992, 367, 765, 369, 370, 678, + 145, 1272, 93, 1271, 1398, 148, 146, 1229, 602, 667, + 87, 1233, 797, 693, 125, 126, 88, 467, 191, 79, + 127, 900, 89, 181, 669, 130, 138, 237, 287, 674, + 240, 288, 241, 807, 160, 139, 411, 161, 162, 409, + 163, 348, 349, 295, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 464, 348, 349, 348, + 349, 1086, 174, 142, 463, 175, 176, 469, 798, 799, + 464, 1001, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 1320, 1321, 1322, + 1323, 128, 129, 494, 1327, 151, 497, 233, 926, 234, + 143, 284, 463, 121, 122, 123, 124, 508, 509, 510, + 149, 512, 513, 514, 515, 516, 517, 518, 523, 524, + 121, 122, 123, 124, 128, 129, 150, 348, 349, 531, + 532, 533, 666, 10, 538, 121, 122, 123, 124, 242, + 791, 243, 545, 974, 1203, 975, 348, 349, 550, 152, + 305, 306, 307, 308, 309, 153, 128, 129, 1376, 1377, + 310, 154, 1380, 351, 348, 349, 296, 297, 298, 299, + 300, 821, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 589, 244, 246, 245, 247, 310, 588, 792, 296, + 297, 298, 299, 300, 155, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 885, 886, 887, 888, 889, 310, + 1428, 159, 296, 297, 298, 299, 300, 491, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 464, 128, 129, + 164, 795, 310, 165, 501, 488, 234, 582, 284, 489, + 1087, 583, 178, 668, 670, 831, 121, 122, 123, 124, + 11, 12, 13, 14, 15, 16, 17, 18, 464, 1467, + 659, 166, 167, 173, 660, 463, 177, 128, 129, 348, + 349, 657, 168, 658, 182, 348, 349, 409, 169, 463, + 183, 695, 696, 348, 349, 520, 193, 701, 812, 1495, + 710, 530, 664, 832, 194, 348, 349, 711, 712, 841, + 348, 349, 186, 949, 348, 349, 715, 195, 923, 925, + 927, 1153, 664, 719, 128, 129, 1154, 307, 308, 309, + 1155, 196, 1160, 728, 729, 310, 1161, 90, 91, 456, + 248, 187, 249, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 192, 118, 119, + 120, 128, 129, 250, 766, 251, 356, 692, 197, 234, + 360, 296, 297, 298, 299, 300, 1579, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 156, 157, 229, 158, + 464, 310, 232, 252, 254, 253, 255, 521, 296, 297, + 298, 299, 300, 280, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 781, 782, 256, 281, 257, 310, 1070, + 42, 43, 44, 45, 258, 47, 259, 783, 784, 785, + 786, 787, 788, 789, 282, 260, 463, 261, 294, 262, + 794, 263, 264, 800, 265, 266, 268, 267, 269, 813, + 317, 311, 811, 1036, 298, 299, 300, 312, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 463, 409, 270, + 331, 271, 310, 335, 272, 274, 273, 275, 898, 276, + 278, 277, 279, 664, 342, 665, 845, 846, 847, 664, + 320, 694, 1065, 125, 126, 964, 965, 850, 851, 127, + 664, 854, 824, 332, 130, 865, 936, 333, 937, 863, + 864, 90, 91, 664, 874, 948, 336, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 1375, 1376, 90, 91, 92, 1378, 93, 1381, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 1066, 118, 119, 120, 1382, 1392, 1395, - 1410, 1409, 1411, 1422, 90, 91, 414, 1301, 1302, 1418, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 1419, 118, 119, 120, 1420, 1438, - 1075, 1439, 1452, 1454, 1462, 1464, 1466, 1467, 1481, 1513, - 1485, 1486, 125, 304, 1487, 1498, 1515, 1517, 127, 1353, - 1518, 1076, 1522, 130, 1358, 90, 460, 1526, 1527, 305, - 1542, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 117, 664, 358, 1050, 901, 902, 903, 904, 905, 906, + 907, 908, 909, 910, 911, 912, 955, 956, 296, 297, + 298, 299, 300, 858, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 1161, 928, 1162, 337, 1416, 310, 1417, + 1418, 933, 1419, 935, 522, 338, 988, 299, 300, 339, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 463, + 1208, 950, 340, 951, 310, 353, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 341, 354, 966, 967, 968, + 310, 1420, 1517, 1421, 1518, 1519, 359, 1520, 1521, 1573, + 1522, 1574, 355, 985, 986, 1575, 1577, 1576, 1578, 1606, + 1608, 1607, 1609, 368, 371, 90, 91, 1610, 372, 1611, + 374, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 1077, 1528, 125, 126, 1544, - 1546, 1548, 1549, 127, 704, 69, 70, 71, 130, 1300, - 1206, 0, 969, 1397, 461, 121, 122, 123, 124, 0, - 0, 0, 0, 0, 0, 0, 0, 506, 0, 125, - 126, 0, 1012, 0, 0, 127, 128, 129, 0, 0, - 130, 1423, 131, 0, 132, 0, 275, 276, 277, 278, - 279, 613, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 0, 1453, - 125, 126, 758, 0, 0, 0, 127, 0, 0, 0, - 0, 130, 0, 0, 0, 0, 0, 790, 0, 0, - 0, 0, 0, 275, 276, 277, 278, 279, 1474, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 1488, 289, 275, 276, 277, 278, 279, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 125, 126, 0, 289, 0, 0, 127, 0, 0, - 0, 0, 130, 0, 0, 0, 0, 0, 275, 276, - 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 275, 276, 277, 278, 279, 289, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 275, 276, - 277, 278, 279, 289, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 0, - 0, 0, 275, 276, 277, 278, 279, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 275, 276, - 277, 278, 279, 289, 280, 281, 282, 283, 284, 285, - 286, 287, 288, -10, 1, 0, -10, -53, 289, 275, - 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 0, 0, 0, 0, 0, 997, -53, 998, 0, 0, - -53, -53, -53, -53, -53, -53, -53, -53, -53, 0, - -53, -53, -53, -53, -53, -53, -53, 0, 0, 0, - -53, -53, -53, -53, -53, -53, -53, 0, -53, -53, - -53, -53, -53, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -53, -53, -53, 0, - 0, 0, 0, 0, 0, -53, 0, -53, -53, -53, - -53, -53, -53, -53, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, - 0, 0, 0, -10, -10, -10, -10, -10, -10, -10, - -10, 26, 27, 28, 29, 30, 31, 32, 33, 0, - 34, 0, 36, 37, 0, 39, 40, 0, -53, 2, - 3, 0, 4, 0, 26, 27, 28, 29, 30, 31, - 32, 33, 52, 34, 0, 36, 37, 0, 39, 40, - 0, 0, 0, 0, 0, 0, 53, 54, 55, 200, - 201, 202, 0, 0, 0, 52, 0, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 0, 0, 53, - 54, 55, 0, 0, 0, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 0, 223, 224, 225, 226, - 227, 228, 0, 0, 0, 0, 0, 0, 0, 23, - 0, 0, 0, 275, 276, 277, 278, 279, 64, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 0, 0, 0, 24, 479, - 0, 64, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 0, 34, 35, 36, 37, 38, 39, 40, 0, - 492, 0, 41, 42, 43, 44, 45, 46, 47, 0, - 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, - 0, 0, 0, 497, 0, 0, 0, 0, 53, 54, - 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, - 58, 59, 60, 61, 62, 63, 275, 276, 277, 278, - 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 0, 0, - 0, 0, 1138, 0, 1139, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 64, 0, 0, 0, 0, 289, 0, 0, 0, 0, - 0, 1233, 0, 1234, 0, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 0, 275, 276, - 277, 278, 279, 449, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 0, - 0, 275, 276, 277, 278, 279, 454, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 0, 0, 275, 276, 277, 278, 279, 456, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 0, 0, 275, 276, 277, - 278, 279, 635, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 0, 0, - 275, 276, 277, 278, 279, 639, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 0, 275, 276, 277, 278, 279, 640, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 0, 275, 276, 277, 278, - 279, 777, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 0, 275, - 276, 277, 278, 279, 995, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 0, 0, 275, 276, 277, 278, 279, 1153, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 0, 0, 275, 276, 277, 278, 279, - 1195, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 0, 275, 276, - 277, 278, 279, 1196, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 0, - 0, 275, 276, 277, 278, 279, 1197, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 0, 0, 275, 276, 277, 278, 279, 1202, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 0, 0, 275, 276, 277, - 278, 279, 1203, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 0, 0, - 275, 276, 277, 278, 279, 1236, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 0, 275, 276, 277, 278, 279, 1298, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 0, 275, 276, 277, 278, - 279, 1408, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 0, 275, - 276, 277, 278, 279, 1437, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 480, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 584, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 591, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 592, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 593, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 653, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 654, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 655, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 775, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 776, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 905, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 906, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 919, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 920, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 951, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 952, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 953, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 954, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 955, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 956, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 957, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 958, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 959, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 960, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 961, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 962, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 973, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 980, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 1086, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 1087, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 1095, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 1098, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 1109, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 1114, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 1117, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 1119, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 1120, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 1121, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 1122, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 1123, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 1124, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 1125, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 1126, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 1127, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 1128, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 1129, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 1130, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 1135, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 1136, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 1212, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 1221, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 1222, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 1223, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 1224, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 1225, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 1226, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 1227, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 1228, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 1229, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 1286, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 1287, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 1288, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 1289, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 1290, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 1291, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 1292, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 1293, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 1294, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 1336, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 1337, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 1338, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 1339, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 1340, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 1341, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 1342, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 1343, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 1344, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 1379, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 1383, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 1384, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 1385, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 1386, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 1387, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 1388, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 1407, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 1412, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 1413, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 1414, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 1415, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 1416, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 1417, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 1440, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 1441, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 1442, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 1443, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 1444, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 275, 276, 277, 278, - 279, 1445, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 275, 276, 277, - 278, 279, 1468, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 275, 276, - 277, 278, 279, 1469, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 275, - 276, 277, 278, 279, 1470, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 275, 276, 277, 278, 279, 1482, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 275, 276, 277, 278, 279, 1483, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 275, 276, 277, 278, 279, 1484, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 275, 276, 277, 278, 279, 1499, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 275, 276, 277, 278, 279, 1500, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 275, 276, 277, 278, 279, - 1501, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 0, 0, 424, - 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 0, 0, 545, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 0, 0, 657, - 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 0, 0, 850, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 0, 0, 971, - 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 418, 275, 276, 277, 278, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 448, 275, 276, 277, 278, - 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 450, 275, - 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 0, 451, 275, 276, 277, 278, 279, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 0, 453, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 457, 275, 276, - 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 0, - 458, 275, 276, 277, 278, 279, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 0, 465, 275, 276, 277, 278, 279, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 0, 500, 275, 276, 277, - 278, 279, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 0, 501, - 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 504, 275, 276, 277, 278, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 507, 275, 276, 277, 278, - 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 573, 275, - 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 0, 574, 275, 276, 277, 278, 279, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 0, 575, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 576, 275, 276, - 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 0, - 577, 275, 276, 277, 278, 279, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 0, 578, 275, 276, 277, 278, 279, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 0, 579, 275, 276, 277, - 278, 279, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 0, 580, - 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 581, 275, 276, 277, 278, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 582, 275, 276, 277, 278, - 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 583, 275, - 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 0, 585, 275, 276, 277, 278, 279, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 0, 586, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 587, 275, 276, - 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 0, - 588, 275, 276, 277, 278, 279, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 0, 589, 275, 276, 277, 278, 279, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 0, 590, 275, 276, 277, - 278, 279, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 0, 620, - 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 623, 275, 276, 277, 278, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 636, 275, 276, 277, 278, - 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 637, 275, - 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 0, 641, 275, 276, 277, 278, 279, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 0, 642, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 643, 275, 276, - 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 0, - 644, 275, 276, 277, 278, 279, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 0, 645, 275, 276, 277, 278, 279, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 0, 663, 275, 276, 277, - 278, 279, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 0, 667, - 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 846, 275, 276, 277, 278, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 847, 275, 276, 277, 278, - 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 848, 275, - 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 0, 849, 275, 276, 277, 278, 279, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 0, 909, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 996, 275, 276, - 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 0, - 1017, 275, 276, 277, 278, 279, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 0, 1104, 275, 276, 277, 278, 279, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 0, 1108, 275, 276, 277, - 278, 279, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 0, 1110, - 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 1215, 275, 276, 277, 278, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 1217, 275, 276, 277, 278, - 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 1219, 275, - 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 0, 1230, 275, 276, 277, 278, 279, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 0, 1231, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289, 0, 1232, 275, 276, - 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 0, 0, 0, 289, 0, - 1389, 275, 276, 277, 278, 279, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 0, 0, 0, - 0, 289, 0, 1390, 275, 276, 277, 278, 279, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 0, 0, 0, 0, 289, 0, 1391, 275, 276, 277, - 278, 279, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 0, 0, 0, 0, 289, 0, 1471, - 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 0, 0, 0, - 289, 0, 1472, 275, 276, 277, 278, 279, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 0, - 0, 0, 0, 289, 0, 1473, 275, 276, 277, 278, - 279, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 0, 0, 0, 0, 289, 0, 1519, 275, - 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 0, 0, 0, 0, 289, - 0, 1520, 275, 276, 277, 278, 279, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 0, 0, - 0, 0, 289, 0, 1521, 275, 276, 277, 278, 279, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 0, 0, 0, 0, 289 + 113, 114, 115, 116, 117, 375, 1020, 125, 126, 376, + 377, 404, 378, 127, 379, 380, 381, 382, 130, 383, + 384, 690, 385, 386, 691, 387, 388, 389, 390, 391, + 392, 393, 394, 1037, 395, 396, 397, 398, 399, 400, + 401, 1046, 402, 1090, 296, 297, 298, 299, 300, 403, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 406, + 407, 1055, 1056, 1121, 310, 410, 859, 408, 310, 461, + 1071, 1064, 1073, 471, 1075, 470, 506, 511, 519, 540, + 541, 544, 1078, 1079, 547, 551, 552, 553, 661, 472, + 554, 555, 556, 1089, 557, 558, 1092, 559, 560, 561, + 562, 563, 564, 565, 566, 567, 1102, 568, 569, 570, + 571, 572, 573, 1109, 1110, 1111, 574, 575, 576, 577, + 1116, 578, 579, 580, 1120, 585, 581, 584, 1122, 1123, + 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, + 586, 125, 126, 662, 671, 1167, 672, 127, 679, 677, + 1142, 680, 130, 681, 682, 822, 684, 1145, 823, 296, + 297, 298, 299, 300, 685, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 1151, 687, 709, 688, 689, 310, + 328, 697, 713, 714, 721, 334, 723, 496, 722, 724, + 725, 727, 1165, 731, 732, 762, 733, 734, 735, 736, + 737, 738, 739, 740, 741, 742, 803, 357, 743, 90, + 324, 744, 745, 361, 362, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 746, + 747, 748, 296, 297, 298, 299, 300, 768, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 763, 826, 1211, + 1212, 1213, 310, 1218, 1219, 749, 780, 790, 793, 750, + 1223, 801, 802, 751, 804, 810, 752, 816, 1231, 848, + 849, 1279, 818, 828, 796, 829, 1239, 830, 833, 769, + 834, 1244, 770, 753, 1247, 754, 1249, 1250, 1251, 1252, + 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 755, 756, + 757, 758, 1262, 759, 760, 1265, 761, 764, 805, 771, + 772, 835, 836, 827, 773, 837, 838, 839, 774, 90, + 502, 775, 776, 777, 1319, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 296, + 297, 298, 299, 300, 840, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 1350, 125, 325, 931, 778, 310, + 855, 127, 779, 860, 861, 862, 130, 866, 867, 868, + 869, 870, 326, 873, 875, 876, 879, 880, 1332, 1333, + 1334, 1335, 1336, 1337, 1338, 1339, 1340, 881, 882, 883, + 1344, 296, 297, 298, 299, 300, 505, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 892, 893, 895, 894, + 1402, 310, 296, 297, 298, 299, 300, 896, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 897, 899, 922, + 930, 938, 310, 924, 942, 929, 944, 1427, 946, 947, + 978, 934, 979, 1382, 1383, 1384, 1385, 1386, 1387, 1388, + 1389, 1390, 1392, 1394, 1396, 1137, 969, 987, 984, 989, + 993, 994, 1451, 995, 996, 998, 997, 999, 1021, 1003, + 663, 1000, 1002, 1004, 1005, 125, 126, 1011, 1006, 1038, + 1039, 127, 1007, 1017, 1041, 1034, 130, 1426, 1008, 1009, + 1010, 1043, 503, 1432, 1433, 1434, 1435, 1436, 1437, 1438, + 1439, 1440, 1441, 1012, 1443, 1013, 1445, 1014, 1015, 1016, + 296, 297, 298, 299, 300, 1146, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 1047, 1018, 1019, 1048, 1049, + 310, 1052, 1053, 1054, 1057, 1464, 1465, 1058, 1059, 1060, + 1469, 1470, 1471, 1472, 1473, 1474, 1061, 296, 297, 298, + 299, 300, 1062, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 1063, 1072, 1492, 1074, 1076, 310, 1080, 1496, + 1497, 1498, 1499, 1500, 1501, 1503, 1505, 1507, 1084, 1091, + 1094, 1095, 1097, 1096, 1101, 1098, 1100, 1104, 1103, 1105, + 1107, 1106, 1113, 1114, 1117, 1118, 1138, 1526, 1527, 1528, + 1529, 1530, 1531, 1532, 1119, 1534, 1134, 1536, 296, 297, + 298, 299, 300, 1135, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 1136, 1139, 1546, 1547, 1548, 310, 1140, + 1141, 1144, 1149, 1150, 1164, 1168, 1170, 1152, 1156, 1560, + 1561, 1562, 1564, 1566, 1568, 1163, 1171, 1147, 1172, 1173, + 1174, 1176, 1177, 1178, 1182, 1183, 1580, 1581, 1582, 1583, + 1184, 1585, 1186, 1587, 1187, 1189, 1202, 1205, 296, 297, + 298, 299, 300, 1227, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 1601, 1603, 1605, 1204, 1226, 310, 1220, + 814, 815, 1612, 817, 1614, 1230, 1616, 819, 820, 90, + 91, 1232, 1235, 1234, 1236, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 1237, + 1238, 1240, 852, 853, 1242, 1243, 856, 1245, 1246, 1261, + 1248, 1263, 1264, 1269, 1270, 1284, 1285, 1308, 1275, 1148, + 871, 872, 1276, 1278, 1280, 1281, 877, 878, 1282, 1309, + 1287, 1310, 1313, 884, 1314, 891, 90, 91, 92, 1289, + 93, 1315, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 1291, 118, 119, 120, + 296, 297, 298, 299, 300, 1306, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 1318, 1324, 1325, 1326, 1328, + 310, 1329, 1330, 1331, 1345, 943, 1346, 945, 1347, 1348, + 1353, 1351, 1349, 1352, 1354, 1355, 1356, 952, 953, 954, + 1366, 1367, 957, 958, 959, 960, 961, 962, 963, 1277, + 296, 297, 298, 299, 300, 1368, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 125, 126, 1370, 1374, 1375, + 310, 127, 90, 324, 466, 1381, 130, 1378, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 296, 297, 298, 299, 300, 548, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 1379, 121, 122, + 123, 124, 310, 1397, 1399, 1400, 1401, 1403, 676, 1404, + 1405, 1406, 125, 126, 1035, 1422, 1423, 1425, 127, 128, + 129, 1430, 1431, 130, 1442, 131, 1444, 132, 90, 502, + 1446, 1448, 1447, 1449, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 825, 1452, + 1453, 1463, 1466, 1481, 1480, 1482, 1493, 1489, 1490, 1491, + 1509, 1523, 1525, 1085, 1533, 1510, 1535, 1537, 1584, 1586, + 1093, 1588, 296, 297, 298, 299, 300, 1538, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 1552, 1569, 1112, + 1556, 1557, 310, 1558, 1593, 857, 1589, 1597, 1598, 1613, + 1599, 1615, 1617, 1619, 1620, 69, 70, 71, 125, 462, + 1371, 1083, 767, 1040, 127, 0, 0, 0, 0, 130, + 0, 0, 0, 0, 0, 0, 0, 0, 296, 297, + 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 125, 126, 0, 0, 0, 0, + 127, 0, 0, 0, 0, 130, 0, 0, 0, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 0, 296, 297, 298, 299, 300, 0, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 1221, 0, 1222, 310, 0, 1225, 296, 297, 298, 299, + 300, 498, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 1241, 0, 0, 0, 0, 310, -10, 1, 0, + -10, -53, 0, 296, 297, 298, 299, 300, 0, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 0, 0, 0, 0, 0, 1068, + -53, 1069, 0, 0, -53, -53, -53, -53, -53, -53, + -53, -53, -53, 0, -53, -53, -53, -53, -53, -53, + -53, 0, 0, 0, -53, -53, -53, -53, -53, -53, + -53, 0, -53, -53, -53, -53, -53, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1312, + -53, -53, -53, 0, 1316, 1317, 0, 0, 0, -53, + 0, -53, -53, -53, -53, -53, -53, -53, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -10, -10, -10, + -10, -10, -10, -10, -10, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, -53, 2, 3, 310, 4, 0, 0, 0, + 0, 1209, 0, 1210, 0, 0, 1372, 1373, 26, 27, + 28, 29, 30, 31, 32, 33, 0, 34, 0, 36, + 37, 0, 39, 40, 0, 0, 26, 27, 28, 29, + 30, 31, 32, 33, 0, 34, 0, 36, 37, 52, + 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 53, 54, 55, 0, 52, 1424, 0, + 0, 0, 0, 1429, 0, 0, 0, 0, 0, 0, + 0, 53, 54, 55, 0, 0, 0, 0, 0, 0, + 26, 27, 28, 29, 30, 31, 32, 33, 0, 34, + 0, 36, 37, 0, 39, 40, 296, 297, 298, 299, + 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 52, 1468, 0, 0, 64, 310, 0, 0, 0, + 0, 0, 1304, 0, 1305, 53, 54, 55, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, + 1494, 0, 0, 0, 0, 23, 0, 0, 0, 0, + 0, 0, 296, 297, 298, 299, 300, 534, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 1524, 0, + 0, 0, 310, 0, 24, 539, 587, 0, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 64, 34, 35, + 36, 37, 38, 39, 40, 0, 0, 1545, 41, 42, + 43, 44, 45, 46, 47, 199, 48, 49, 50, 51, + 52, 1559, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 54, 55, 0, 0, 0, + 0, 0, 0, 56, 0, 57, 58, 59, 60, 61, + 62, 63, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 0, 0, 200, 201, 202, 0, + 698, 0, 0, 0, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 0, 0, 64, 0, 0, 0, + 0, 0, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 0, 223, 224, 225, 226, 227, 228, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 296, 297, 298, 299, 300, 702, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 0, 296, 297, 298, 299, 300, + 703, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 296, 297, + 298, 299, 300, 844, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, + 0, 296, 297, 298, 299, 300, 1066, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 0, 0, 296, 297, 298, 299, 300, 1224, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 0, 296, 297, 298, + 299, 300, 1266, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 0, + 296, 297, 298, 299, 300, 1267, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 296, 297, 298, 299, 300, 1268, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 0, 0, 296, 297, 298, 299, + 300, 1273, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 0, 0, 296, + 297, 298, 299, 300, 1274, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 0, 296, 297, 298, 299, 300, 1307, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 0, 296, 297, 298, 299, 300, + 1369, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 296, 297, + 298, 299, 300, 1479, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, + 0, 296, 297, 298, 299, 300, 1508, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 637, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 638, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 651, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 652, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 653, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 654, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 655, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 656, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 716, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 717, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 718, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 842, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 843, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 976, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 977, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 990, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 991, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1022, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1023, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 1024, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 1025, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 1026, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1027, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1028, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1029, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1030, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1031, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1032, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1033, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 1044, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 1051, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 1157, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1158, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1166, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1169, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1180, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1185, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1188, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1190, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 1191, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 1192, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 1193, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1194, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1195, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1196, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1197, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1198, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1199, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1200, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 1201, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 1206, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 1207, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1283, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1292, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1293, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1294, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1295, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1296, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1297, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 1298, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 1299, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 1300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1357, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1358, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1359, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1360, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1361, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1362, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1363, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 1364, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 1365, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 1407, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1408, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1409, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1410, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1411, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1412, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1413, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1414, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 1415, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 1450, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 1454, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1455, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1456, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1457, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1458, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1459, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1478, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1483, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 1484, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 1485, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 1486, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1487, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1488, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1511, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1512, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1513, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1514, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1515, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 296, 297, 298, 299, 300, 1516, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 296, 297, 298, 299, 300, 1539, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 296, 297, 298, 299, 300, 1540, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 296, 297, 298, 299, 300, 1541, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 296, 297, 298, 299, 300, + 1553, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 296, 297, 298, 299, + 300, 1554, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 296, 297, 298, + 299, 300, 1555, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 296, 297, + 298, 299, 300, 1570, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 296, + 297, 298, 299, 300, 1571, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 296, 297, 298, 299, 300, 1572, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 616, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 618, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 620, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 622, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 624, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 626, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 628, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 630, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 632, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 634, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 636, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 640, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 642, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 644, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 646, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 648, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 650, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 720, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 914, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 916, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 918, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 920, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 921, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 1042, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 460, 296, 297, 298, 299, 300, 0, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 0, 490, 296, 297, 298, 299, + 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 0, 492, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 493, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 495, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 499, 296, 297, + 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, + 500, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 0, 507, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 542, 296, 297, 298, + 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 543, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 546, 296, 297, 298, 299, 300, 0, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 0, 549, 296, 297, 298, 299, + 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 0, 615, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 617, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 619, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 621, 296, 297, + 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, + 623, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 0, 625, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 627, 296, 297, 298, + 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 629, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 631, 296, 297, 298, 299, 300, 0, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 0, 633, 296, 297, 298, 299, + 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 0, 635, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 639, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 641, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 643, 296, 297, + 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, + 645, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 0, 647, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 649, 296, 297, 298, + 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 683, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 686, 296, 297, 298, 299, 300, 0, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 0, 699, 296, 297, 298, 299, + 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 0, 700, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 704, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 705, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 706, 296, 297, + 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, + 707, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 0, 708, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 726, 296, 297, 298, + 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 730, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 913, 296, 297, 298, 299, 300, 0, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 0, 915, 296, 297, 298, 299, + 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 0, 917, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 919, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 980, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 1067, 296, 297, + 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, + 1088, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 0, 1175, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 1179, 296, 297, 298, + 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 1181, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 1286, 296, 297, 298, 299, 300, 0, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 0, 1288, 296, 297, 298, 299, + 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 0, 1290, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 1301, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 1302, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310, 0, 1303, 296, 297, + 298, 299, 300, 0, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 0, 0, 0, 0, 0, 310, 0, + 1460, 296, 297, 298, 299, 300, 0, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 310, 0, 1461, 296, 297, 298, 299, 300, 0, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 0, + 0, 0, 0, 0, 310, 0, 1462, 296, 297, 298, + 299, 300, 0, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 310, 0, 1542, + 296, 297, 298, 299, 300, 0, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 0, 0, 0, 0, 0, + 310, 0, 1543, 296, 297, 298, 299, 300, 0, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 310, 0, 1544, 296, 297, 298, 299, + 300, 0, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 0, 0, 0, 0, 0, 310, 0, 1590, 296, + 297, 298, 299, 300, 0, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 310, + 0, 1591, 296, 297, 298, 299, 300, 0, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 0, 0, 0, + 0, 0, 310, 0, 1592, 296, 297, 298, 299, 300, + 0, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 310 }; static const short yycheck[] = { 23, - 23, 267, 88, 4, 330, 259, 260, 261, 4, 80, - 305, 737, 4, 3, 44, 4, 42, 269, 4, 6, - 1145, 926, 87, 6, 64, 1009, 65, 65, 7, 64, - 935, 70, 70, 65, 180, 3, 4, 942, 70, 305, - 186, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 6, 6, 176, 177, 4, - 3, 4, 4, 182, 180, 184, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 101, 125, 126, 127, 180, 150, 130, 131, 49, 133, - 186, 6, 169, 170, 1098, 180, 140, 141, 142, 143, - 7, 145, 146, 180, 148, 149, 150, 198, 152, 186, - 171, 172, 173, 169, 170, 165, 166, 167, 179, 865, - 180, 169, 170, 173, 168, 169, 186, 6, 187, 187, - 186, 186, 447, 6, 180, 90, 91, 185, 90, 91, - 181, 6, 186, 187, 185, 189, 461, 191, 192, 7, - 6, 425, 424, 4, 5, 1300, 155, 156, 157, 158, - 170, 447, 169, 170, 6, 186, 169, 170, 180, 182, - 186, 184, 169, 170, 1099, 461, 8, 186, 1103, 180, - 186, 169, 170, 34, 35, 36, 236, 175, 185, 233, - 187, 185, 180, 187, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 7, 169, 170, 5, 7, - 176, 177, 175, 267, 6, 7, 269, 180, 184, 169, - 170, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 186, 34, 35, 36, - 169, 170, 296, 169, 170, 299, 41, 42, 180, 44, - 304, 305, 181, 169, 170, 46, 310, 311, 312, 185, - 314, 315, 316, 317, 318, 319, 320, 327, 328, 185, - 38, 187, 597, 41, 1209, 1210, 1211, 1212, 332, 333, - 334, 1216, 181, 337, 169, 170, 185, 155, 156, 157, - 158, 345, 38, 169, 170, 41, 42, 351, 44, 180, - 185, 597, 187, 628, 8, 601, 169, 170, 176, 177, - 186, 1067, 42, 185, 598, 187, 184, 159, 160, 161, - 162, 163, 185, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 628, 180, 169, 170, 389, 179, 38, 181, - 6, 41, 42, 176, 177, 1280, 1281, 169, 170, 1284, - 185, 169, 170, 155, 156, 157, 158, 155, 156, 157, - 158, 169, 170, 185, 181, 181, 420, 185, 185, 185, - 180, 424, 426, 181, 176, 177, 55, 56, 176, 177, - 169, 170, 171, 172, 173, 181, 176, 177, 54, 185, - 179, 42, 182, 447, 184, 176, 177, 1332, 181, 42, - 3, 182, 185, 184, 177, 459, 180, 461, 181, 463, - 464, 58, 59, 60, 61, 469, 63, 180, 478, 105, - 106, 107, 108, 109, 180, 479, 480, 185, 185, 187, - 187, 756, 44, 185, 488, 187, 185, 185, 187, 187, - 185, 495, 187, 185, 180, 187, 1381, 729, 730, 6, - 7, 505, 506, 186, 186, 159, 160, 161, 162, 163, - 756, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 185, 185, 187, 187, 186, 179, 1411, 185, 185, 187, - 187, 42, 151, 187, 185, 6, 187, 156, 185, 185, - 187, 187, 545, 159, 160, 161, 162, 163, 6, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 185, 178, - 187, 6, 185, 179, 187, 184, 185, 120, 121, 122, - 123, 124, 125, 126, 127, 185, 180, 187, 180, 4, - 584, 180, 4, 42, 3, 180, 180, 591, 592, 593, - 594, 5, 898, 597, 180, 180, 180, 601, 180, 180, - 604, 180, 180, 180, 180, 180, 616, 180, 180, 613, - 180, 180, 180, 1498, 180, 180, 180, 180, 5, 180, - 180, 855, 180, 180, 628, 629, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 701, 6, 6, 180, 180, - 179, 186, 180, 653, 654, 655, 180, 180, 180, 186, - 186, 180, 180, 180, 658, 659, 4, 6, 662, 93, - 894, 186, 672, 186, 186, 182, 670, 671, 3, 4, - 6, 681, 180, 5, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 180, 180, - 180, 705, 706, 707, 708, 709, 710, 711, 712, 713, - 714, 715, 716, 180, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 180, 730, 180, 180, - 180, 180, 180, 180, 738, 181, 740, 180, 180, 180, - 180, 180, 180, 794, 180, 180, 4, 180, 180, 180, - 180, 180, 756, 180, 758, 179, 760, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 180, - 774, 775, 776, 1079, 162, 163, 180, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 790, 791, 180, 180, - 180, 179, 185, 7, 7, 3, 4, 7, 7, 185, - 419, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 184, 181, 7, 7, 832, - 187, 88, 186, 151, 169, 170, 5, 5, 5, 5, - 175, 5, 5, 5, 5, 180, 5, 5, 183, 5, - 5, 186, 856, 5, 5, 5, 5, 5, 5, 5, - 870, 5, 5, 5, 5, 138, 917, 5, 5, 5, - 5, 3, 5, 187, 5, 185, 6, 5, 181, 6, - 884, 885, 948, 4, 6, 184, 187, 7, 6, 899, - 894, 901, 7, 903, 7, 7, 6, 6, 187, 7, - 7, 905, 906, 7, 186, 186, 7, 7, 180, 7, - 152, 185, 916, 5, 185, 919, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 929, 185, 6, 181, 185, - 185, 185, 936, 937, 938, 185, 185, 185, 185, 943, - 185, 185, 185, 947, 185, 185, 185, 951, 952, 953, - 954, 955, 956, 957, 958, 959, 960, 961, 962, 185, - 185, 169, 170, 185, 185, 185, 185, 175, 1019, 973, - 4, 6, 180, 180, 180, 183, 980, 180, 186, 161, - 162, 163, 180, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 180, 997, 180, 180, 180, 179, 6, 618, - 619, 6, 621, 180, 180, 6, 625, 626, 3, 4, - 180, 1015, 183, 7, 9, 10, 11, 12, 13, 14, + 23, 351, 88, 290, 997, 80, 326, 280, 281, 282, + 804, 4, 4, 1006, 44, 4, 1216, 4, 3, 4, + 1013, 4, 3, 42, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 6, 6, - 180, 660, 661, 182, 7, 664, 7, 7, 7, 7, - 7, 7, 186, 7, 7, 7, 7, 7, 4, 678, - 679, 6, 148, 7, 7, 684, 685, 3, 3, 3, - 3, 3, 691, 3, 693, 171, 3, 6, 1082, 1083, - 1084, 3, 1086, 1087, 3, 3, 3, 3, 3, 1093, - 3, 5, 3, 5, 3, 184, 6, 1101, 4, 181, - 181, 6, 186, 7, 1155, 1109, 184, 6, 6, 6, - 1114, 6, 6, 1117, 6, 1119, 1120, 1121, 1122, 1123, - 1124, 1125, 1126, 1127, 1128, 1129, 1130, 6, 186, 185, - 749, 1135, 751, 185, 1138, 181, 185, 181, 185, 181, - 89, 6, 761, 762, 763, 185, 185, 766, 767, 768, - 769, 770, 771, 772, 185, 181, 181, 1208, 159, 160, - 161, 162, 163, 185, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 185, 169, 170, 185, 184, 179, 185, - 175, 185, 185, 181, 181, 180, 185, 6, 183, 185, - 4, 186, 159, 160, 161, 162, 163, 1248, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 8, 185, 185, - 185, 185, 179, 185, 6, 90, 6, 1221, 1222, 1223, - 1224, 1225, 1226, 1227, 1228, 1229, 6, 6, 183, 1233, - 159, 160, 161, 162, 163, 854, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 6, 6, 6, 6, 6, - 179, 6, 6, 1304, 159, 160, 161, 162, 163, 6, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 6, - 6, 6, 6, 89, 179, 7, 3, 6, 3, 3, - 1331, 171, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, - 1294, 1295, 1296, 1297, 913, 6, 6, 6, 6, 6, - 3, 920, 6, 3, 6, 1356, 3, 6, 3, 3, - 6, 4, 184, 184, 6, 6, 183, 7, 6, 6, - 939, 187, 186, 186, 186, 181, 1330, 185, 185, 181, - 86, 185, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, - 1344, 1345, 185, 1347, 185, 1349, 181, 181, 185, 181, - 181, 91, 6, 181, 181, 185, 185, 4, 159, 160, - 161, 162, 163, 89, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 148, 1378, 1379, 6, 3, 179, 1383, - 1384, 1385, 1386, 1387, 1388, 6, 38, 39, 40, 41, - 42, 43, 44, 45, 6, 47, 3, 49, 50, 5, - 52, 53, 6, 1407, 6, 6, 6, 6, 1412, 1413, - 1414, 1415, 1416, 1417, 1418, 1419, 1420, 69, 6, 3, - 6, 6, 5, 187, 6, 187, 6, 6, 181, 6, - 6, 83, 84, 85, 186, 186, 1440, 1441, 1442, 1443, - 1444, 1445, 1446, 185, 1448, 6, 1450, 185, 159, 160, - 161, 162, 163, 181, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 185, 1468, 1469, 1470, 185, 179, 185, - 185, 1090, 185, 1092, 6, 181, 1095, 6, 1482, 1483, - 1484, 1485, 1486, 1487, 6, 6, 6, 6, 6, 6, - 5, 5, 1111, 145, 86, 1499, 1500, 1501, 1502, 185, - 1504, 186, 1506, 185, 187, 159, 160, 161, 162, 163, - 185, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 185, 181, 1526, 1527, 1528, 179, 181, 185, 185, 148, - 186, 1535, 185, 1537, 6, 1539, 3, 4, 186, 5, - 186, 6, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 5, 185, 6, 185, - 187, 186, 185, 181, 86, 6, 181, 187, 6, 6, - 1199, 3, 4, 6, 187, 1204, 1205, 9, 10, 11, + 25, 26, 27, 28, 29, 30, 31, 32, 6, 1080, + 6, 65, 65, 64, 64, 288, 70, 70, 87, 5, + 4, 6, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 150, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 65, 34, 35, + 36, 7, 70, 326, 6, 169, 170, 169, 170, 4, + 5, 125, 126, 127, 49, 6, 130, 131, 101, 133, + 6, 185, 38, 187, 186, 41, 140, 141, 142, 143, + 6, 145, 146, 198, 148, 149, 150, 6, 152, 34, + 35, 36, 169, 170, 180, 165, 166, 167, 1169, 180, + 186, 182, 936, 173, 168, 169, 90, 91, 185, 6, + 187, 180, 169, 170, 180, 7, 6, 7, 176, 177, + 186, 180, 186, 187, 181, 189, 184, 191, 192, 489, + 180, 1371, 7, 187, 187, 186, 186, 1170, 187, 466, + 180, 1174, 4, 503, 169, 170, 180, 7, 180, 170, + 175, 187, 180, 186, 467, 180, 180, 186, 183, 186, + 180, 186, 182, 186, 38, 6, 236, 41, 42, 233, + 44, 169, 170, 6, 238, 239, 240, 241, 242, 243, + 244, 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, 489, 169, 170, 169, + 170, 8, 38, 180, 288, 41, 42, 290, 90, 91, + 503, 181, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 1280, 1281, 1282, + 1283, 176, 177, 317, 1287, 46, 320, 182, 7, 184, + 180, 325, 326, 155, 156, 157, 158, 331, 332, 333, + 180, 335, 336, 337, 338, 339, 340, 341, 348, 349, + 155, 156, 157, 158, 176, 177, 180, 169, 170, 353, + 354, 355, 184, 3, 358, 155, 156, 157, 158, 180, + 660, 182, 366, 185, 1138, 187, 169, 170, 372, 180, + 169, 170, 171, 172, 173, 42, 176, 177, 1351, 1352, + 179, 42, 1355, 186, 169, 170, 159, 160, 161, 162, + 163, 691, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 186, 180, 180, 182, 182, 179, 410, 661, 159, + 160, 161, 162, 163, 42, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 105, 106, 107, 108, 109, 179, + 1403, 44, 159, 160, 161, 162, 163, 187, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 660, 176, 177, + 180, 664, 179, 186, 182, 181, 184, 181, 462, 185, + 187, 185, 42, 466, 468, 6, 155, 156, 157, 158, + 120, 121, 122, 123, 124, 125, 126, 127, 691, 1452, + 181, 169, 170, 186, 185, 489, 186, 176, 177, 169, + 170, 182, 180, 184, 6, 169, 170, 501, 186, 503, + 6, 505, 506, 169, 170, 185, 6, 511, 181, 1482, + 520, 185, 185, 54, 4, 169, 170, 521, 522, 185, + 169, 170, 180, 823, 169, 170, 530, 4, 181, 796, + 797, 185, 185, 537, 176, 177, 185, 171, 172, 173, + 185, 42, 181, 547, 548, 179, 185, 3, 4, 5, + 180, 180, 182, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 180, 34, 35, + 36, 176, 177, 180, 587, 182, 177, 182, 3, 184, + 181, 159, 160, 161, 162, 163, 1569, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 41, 42, 180, 44, + 823, 179, 5, 180, 180, 182, 182, 185, 159, 160, + 161, 162, 163, 180, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 637, 638, 180, 180, 182, 179, 969, + 58, 59, 60, 61, 180, 63, 182, 651, 652, 653, + 654, 655, 656, 657, 180, 180, 660, 182, 6, 180, + 664, 182, 180, 667, 182, 180, 180, 182, 182, 679, + 180, 6, 676, 926, 161, 162, 163, 5, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 691, 692, 180, + 186, 182, 179, 186, 180, 180, 182, 182, 764, 180, + 180, 182, 182, 185, 4, 187, 716, 717, 718, 185, + 180, 187, 965, 169, 170, 6, 7, 721, 722, 175, + 185, 725, 187, 180, 180, 735, 185, 180, 187, 733, + 734, 3, 4, 185, 744, 187, 186, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 6, 6, 3, 4, 5, 186, 7, 185, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 6, 34, 35, 36, 185, 6, 153, - 185, 154, 185, 6, 3, 4, 5, 1276, 1277, 186, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 186, 34, 35, 36, 186, 185, - 6, 181, 6, 6, 6, 6, 6, 185, 185, 6, - 186, 186, 169, 170, 186, 185, 6, 6, 175, 1328, - 181, 6, 6, 180, 1333, 3, 4, 186, 186, 186, - 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 32, 185, 182, 187, 768, 769, 770, 771, 772, 773, + 774, 775, 776, 777, 778, 779, 55, 56, 159, 160, + 161, 162, 163, 8, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 185, 797, 187, 180, 185, 179, 187, + 185, 805, 187, 807, 185, 180, 861, 162, 163, 180, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 823, + 1150, 825, 180, 827, 179, 186, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 180, 186, 841, 842, 843, + 179, 185, 185, 187, 187, 185, 6, 187, 185, 185, + 187, 187, 186, 857, 858, 185, 185, 187, 187, 185, + 185, 187, 187, 93, 6, 3, 4, 185, 180, 187, + 180, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 6, 186, 169, 170, 6, - 6, 0, 0, 175, 547, 7, 7, 7, 180, 1275, - 6, -1, 859, 1382, 186, 155, 156, 157, 158, -1, - -1, -1, -1, -1, -1, -1, -1, 8, -1, 169, - 170, -1, 911, -1, -1, 175, 176, 177, -1, -1, - 180, 1410, 182, -1, 184, -1, 159, 160, 161, 162, - 163, 8, 165, 166, 167, 168, 169, 170, 171, 172, - 173, -1, -1, -1, -1, -1, 179, -1, -1, 1438, - 169, 170, 8, -1, -1, -1, 175, -1, -1, -1, - -1, 180, -1, -1, -1, -1, -1, 8, -1, -1, - -1, -1, -1, 159, 160, 161, 162, 163, 1467, 165, - 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, - -1, -1, 1481, 179, 159, 160, 161, 162, 163, -1, - 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, - -1, 169, 170, -1, 179, -1, -1, 175, -1, -1, - -1, -1, 180, -1, -1, -1, -1, -1, 159, 160, + 28, 29, 30, 31, 32, 180, 899, 169, 170, 180, + 180, 5, 180, 175, 180, 180, 180, 180, 180, 180, + 180, 183, 180, 180, 186, 180, 180, 180, 180, 180, + 180, 180, 180, 927, 180, 180, 180, 180, 180, 180, + 180, 941, 180, 988, 159, 160, 161, 162, 163, 180, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 185, + 181, 955, 956, 1019, 179, 4, 181, 185, 179, 7, + 970, 965, 972, 7, 974, 184, 7, 7, 181, 7, + 7, 88, 976, 977, 186, 151, 5, 5, 185, 6, + 5, 5, 5, 987, 5, 5, 990, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 1000, 5, 5, 5, + 5, 5, 5, 1007, 1008, 1009, 5, 138, 5, 5, + 1014, 5, 5, 3, 1018, 6, 5, 5, 1022, 1023, + 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, + 5, 169, 170, 181, 6, 1090, 4, 175, 7, 6, + 1044, 6, 180, 7, 7, 183, 7, 1051, 186, 159, + 160, 161, 162, 163, 6, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 1068, 6, 184, 7, 7, 179, + 151, 7, 187, 187, 186, 156, 7, 187, 186, 7, + 180, 7, 1086, 152, 185, 5, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 6, 178, 185, 3, + 4, 185, 185, 184, 185, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 185, + 185, 185, 159, 160, 161, 162, 163, 180, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 181, 6, 1153, + 1154, 1155, 179, 1157, 1158, 185, 6, 4, 6, 185, + 1164, 6, 6, 185, 7, 6, 185, 7, 1172, 6, + 6, 1226, 7, 7, 183, 7, 1180, 7, 7, 180, + 7, 1185, 180, 185, 1188, 185, 1190, 1191, 1192, 1193, + 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 185, 185, + 185, 185, 1206, 185, 185, 1209, 185, 185, 182, 180, + 180, 7, 7, 186, 180, 7, 7, 7, 180, 3, + 4, 180, 180, 180, 1279, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 159, + 160, 161, 162, 163, 4, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 1319, 169, 170, 6, 180, 179, + 7, 175, 180, 7, 148, 3, 180, 3, 3, 171, + 3, 3, 186, 3, 3, 3, 3, 3, 1292, 1293, + 1294, 1295, 1296, 1297, 1298, 1299, 1300, 3, 3, 3, + 1304, 159, 160, 161, 162, 163, 8, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 3, 5, 3, 5, + 1375, 179, 159, 160, 161, 162, 163, 3, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 6, 4, 181, + 7, 6, 179, 181, 6, 184, 6, 1402, 6, 6, + 6, 184, 6, 1357, 1358, 1359, 1360, 1361, 1362, 1363, + 1364, 1365, 1366, 1367, 1368, 6, 186, 186, 89, 185, + 185, 181, 1427, 185, 181, 181, 185, 185, 6, 181, + 461, 185, 185, 181, 185, 169, 170, 181, 185, 6, + 4, 175, 185, 181, 6, 184, 180, 1401, 185, 185, + 185, 90, 186, 1407, 1408, 1409, 1410, 1411, 1412, 1413, + 1414, 1415, 1416, 185, 1418, 185, 1420, 185, 185, 185, + 159, 160, 161, 162, 163, 6, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 6, 185, 185, 6, 183, + 179, 6, 6, 6, 6, 1449, 1450, 6, 6, 6, + 1454, 1455, 1456, 1457, 1458, 1459, 6, 159, 160, 161, + 162, 163, 6, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 6, 6, 1478, 6, 6, 179, 7, 1483, + 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 89, 3, + 6, 3, 171, 6, 3, 6, 6, 3, 6, 6, + 3, 6, 6, 3, 3, 3, 7, 1511, 1512, 1513, + 1514, 1515, 1516, 1517, 6, 1519, 4, 1521, 159, 160, + 161, 162, 163, 6, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 6, 6, 1539, 1540, 1541, 179, 184, + 184, 183, 6, 186, 86, 181, 185, 187, 186, 1553, + 1554, 1555, 1556, 1557, 1558, 186, 185, 6, 185, 181, + 185, 185, 181, 181, 185, 181, 1570, 1571, 1572, 1573, + 181, 1575, 185, 1577, 181, 185, 181, 4, 159, 160, + 161, 162, 163, 6, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 1597, 1598, 1599, 91, 148, 179, 89, + 681, 682, 1606, 684, 1608, 3, 1610, 688, 689, 3, + 4, 6, 3, 6, 6, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 6, + 6, 6, 723, 724, 6, 6, 727, 3, 6, 6, + 5, 5, 187, 6, 186, 181, 181, 6, 186, 6, + 741, 742, 185, 187, 185, 185, 747, 748, 185, 6, + 185, 6, 6, 754, 6, 756, 3, 4, 5, 181, + 7, 6, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 185, 34, 35, 36, + 159, 160, 161, 162, 163, 185, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 6, 6, 6, 6, 6, + 179, 6, 6, 5, 5, 816, 186, 818, 185, 185, + 181, 185, 187, 185, 181, 185, 185, 828, 829, 830, + 186, 186, 833, 834, 835, 836, 837, 838, 839, 6, + 159, 160, 161, 162, 163, 186, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 169, 170, 185, 86, 148, + 179, 175, 3, 4, 183, 5, 180, 6, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 159, 160, 161, 162, 163, 8, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 6, 155, 156, + 157, 158, 179, 5, 185, 187, 186, 185, 8, 185, + 181, 181, 169, 170, 925, 187, 6, 86, 175, 176, + 177, 6, 6, 180, 6, 182, 6, 184, 3, 4, + 6, 187, 6, 186, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 8, 185, + 185, 6, 153, 185, 154, 185, 6, 186, 186, 186, + 185, 6, 6, 984, 6, 181, 6, 6, 6, 6, + 991, 6, 159, 160, 161, 162, 163, 185, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 185, 185, 1010, + 186, 186, 179, 186, 6, 8, 181, 186, 186, 6, + 186, 6, 6, 0, 0, 7, 7, 7, 169, 170, + 1346, 982, 589, 930, 175, -1, -1, -1, -1, 180, + -1, -1, -1, -1, -1, -1, -1, -1, 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 159, 160, 161, 162, 163, 179, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 159, 160, - 161, 162, 163, 179, 165, 166, 167, 168, 169, 170, - 171, 172, 173, -1, -1, -1, -1, -1, 179, -1, - -1, -1, 159, 160, 161, 162, 163, -1, 165, 166, - 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, - -1, -1, 179, 159, 160, 161, 162, 163, -1, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 159, 160, - 161, 162, 163, 179, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 0, 1, -1, 3, 4, 179, 159, + 171, 172, 173, -1, -1, -1, -1, -1, 179, 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, - -1, -1, -1, -1, -1, 185, 33, 187, -1, -1, - 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, - 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, - 57, 58, 59, 60, 61, 62, 63, -1, 65, 66, - 67, 68, 69, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 83, 84, 85, -1, - -1, -1, -1, -1, -1, 92, -1, 94, 95, 96, - 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, - -1, -1, -1, 120, 121, 122, 123, 124, 125, 126, - 127, 38, 39, 40, 41, 42, 43, 44, 45, -1, - 47, -1, 49, 50, -1, 52, 53, -1, 145, 146, - 147, -1, 149, -1, 38, 39, 40, 41, 42, 43, - 44, 45, 69, 47, -1, 49, 50, -1, 52, 53, - -1, -1, -1, -1, -1, -1, 83, 84, 85, 102, - 103, 104, -1, -1, -1, 69, -1, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, -1, -1, 83, - 84, 85, -1, -1, -1, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, -1, 139, 140, 141, 142, - 143, 144, -1, -1, -1, -1, -1, -1, -1, 4, - -1, -1, -1, 159, 160, 161, 162, 163, 145, 165, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 169, 170, -1, -1, -1, -1, + 175, -1, -1, -1, -1, 180, -1, -1, -1, 159, + 160, 161, 162, 163, -1, 165, 166, 167, 168, 169, + 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, + -1, -1, -1, 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, - -1, -1, -1, 179, -1, -1, -1, -1, 33, 185, - -1, 145, 37, 38, 39, 40, 41, 42, 43, 44, - 45, -1, 47, 48, 49, 50, 51, 52, 53, -1, - 187, -1, 57, 58, 59, 60, 61, 62, 63, -1, - 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, - -1, -1, -1, 187, -1, -1, -1, -1, 83, 84, - 85, -1, -1, -1, -1, -1, -1, 92, -1, 94, - 95, 96, 97, 98, 99, 100, 159, 160, 161, 162, - 163, -1, 165, 166, 167, 168, 169, 170, 171, 172, - 173, -1, -1, -1, -1, -1, 179, -1, -1, -1, - -1, -1, 185, -1, 187, 159, 160, 161, 162, 163, - -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 145, -1, -1, -1, -1, 179, -1, -1, -1, -1, - -1, 185, -1, 187, -1, 159, 160, 161, 162, 163, + 1161, -1, 1163, 179, -1, 1166, 159, 160, 161, 162, + 163, 187, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 1182, -1, -1, -1, -1, 179, 0, 1, -1, + 3, 4, -1, 159, 160, 161, 162, 163, -1, 165, + 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, + -1, -1, -1, 179, -1, -1, -1, -1, -1, 185, + 33, 187, -1, -1, 37, 38, 39, 40, 41, 42, + 43, 44, 45, -1, 47, 48, 49, 50, 51, 52, + 53, -1, -1, -1, 57, 58, 59, 60, 61, 62, + 63, -1, 65, 66, 67, 68, 69, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1270, + 83, 84, 85, -1, 1275, 1276, -1, -1, -1, 92, + -1, 94, 95, 96, 97, 98, 99, 100, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, 122, + 123, 124, 125, 126, 127, 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, 145, 146, 147, 179, 149, -1, -1, -1, + -1, 185, -1, 187, -1, -1, 1347, 1348, 38, 39, + 40, 41, 42, 43, 44, 45, -1, 47, -1, 49, + 50, -1, 52, 53, -1, -1, 38, 39, 40, 41, + 42, 43, 44, 45, -1, 47, -1, 49, 50, 69, + 52, 53, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 83, 84, 85, -1, 69, 1399, -1, + -1, -1, -1, 1404, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, -1, -1, -1, -1, -1, -1, + 38, 39, 40, 41, 42, 43, 44, 45, -1, 47, + -1, 49, 50, -1, 52, 53, 159, 160, 161, 162, + 163, -1, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 69, 1453, -1, -1, 145, 179, -1, -1, -1, + -1, -1, 185, -1, 187, 83, 84, 85, -1, -1, + -1, -1, -1, 145, -1, -1, -1, -1, -1, -1, + 1481, -1, -1, -1, -1, 4, -1, -1, -1, -1, + -1, -1, 159, 160, 161, 162, 163, 187, 165, 166, + 167, 168, 169, 170, 171, 172, 173, -1, 1509, -1, + -1, -1, 179, -1, 33, 187, 183, -1, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 145, 47, 48, + 49, 50, 51, 52, 53, -1, -1, 1538, 57, 58, + 59, 60, 61, 62, 63, 41, 65, 66, 67, 68, + 69, 1552, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 83, 84, 85, -1, -1, -1, + -1, -1, -1, 92, -1, 94, 95, 96, 97, 98, + 99, 100, 159, 160, 161, 162, 163, -1, 165, 166, + 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, + -1, -1, 179, -1, -1, -1, 102, 103, 104, -1, + 187, -1, -1, -1, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, -1, -1, 145, -1, -1, -1, + -1, -1, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, -1, 139, 140, 141, 142, 143, 144, 159, + 160, 161, 162, 163, -1, 165, 166, 167, 168, 169, + 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, + -1, -1, 159, 160, 161, 162, 163, 187, 165, 166, + 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, + -1, -1, 179, -1, -1, 159, 160, 161, 162, 163, + 187, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, -1, -1, 159, 160, 161, 162, 163, 187, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, -1, @@ -2020,24 +2140,6 @@ static const short yycheck[] = { 23, 161, 162, 163, 187, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, -1, -1, 159, 160, 161, 162, 163, 187, 165, 166, 167, - 168, 169, 170, 171, 172, 173, -1, -1, -1, -1, - -1, 179, -1, -1, 159, 160, 161, 162, 163, 187, - 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, - -1, -1, -1, -1, 179, -1, -1, 159, 160, 161, - 162, 163, 187, 165, 166, 167, 168, 169, 170, 171, - 172, 173, -1, -1, -1, -1, -1, 179, -1, -1, - 159, 160, 161, 162, 163, 187, 165, 166, 167, 168, - 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, - 179, -1, -1, 159, 160, 161, 162, 163, 187, 165, - 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, - -1, -1, -1, 179, -1, -1, 159, 160, 161, 162, - 163, 187, 165, 166, 167, 168, 169, 170, 171, 172, - 173, -1, -1, -1, -1, -1, 179, -1, -1, 159, - 160, 161, 162, 163, 187, 165, 166, 167, 168, 169, - 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, - 159, 160, 161, 162, 163, 185, 165, 166, 167, 168, - 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, - 179, 159, 160, 161, 162, 163, 185, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, 159, 160, 161, 162, 163, 185, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, @@ -2257,6 +2359,64 @@ static const short yycheck[] = { 23, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, 159, 160, 161, 162, 163, 185, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, 159, 160, 161, 162, + 163, 185, 165, 166, 167, 168, 169, 170, 171, 172, + 173, -1, -1, -1, -1, -1, 179, 159, 160, 161, + 162, 163, 185, 165, 166, 167, 168, 169, 170, 171, + 172, 173, -1, -1, -1, -1, -1, 179, 159, 160, + 161, 162, 163, 185, 165, 166, 167, 168, 169, 170, + 171, 172, 173, -1, -1, -1, -1, -1, 179, 159, + 160, 161, 162, 163, 185, 165, 166, 167, 168, 169, + 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, + 159, 160, 161, 162, 163, 185, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, + 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, + 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, + 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, + 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, + 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, + 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, + 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, + 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, + 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, + 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, 179, -1, -1, -1, 183, 159, 160, 161, 162, 163, -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, -1, -1, -1, -1, -1, @@ -5138,23 +5298,107 @@ case 283: { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 284: -#line 2069 "Gmsh.y" -{ yyval.d = yyvsp[0].d; ; +#line 2062 "Gmsh.y" +{ yyval.d = exp(yyvsp[-1].d); ; break;} case 285: -#line 2070 "Gmsh.y" -{ yyval.d = 3.141592653589793; ; +#line 2063 "Gmsh.y" +{ yyval.d = log(yyvsp[-1].d); ; break;} case 286: -#line 2071 "Gmsh.y" -{ yyval.d = ParUtil::Instance()->rank(); ; +#line 2064 "Gmsh.y" +{ yyval.d = log10(yyvsp[-1].d); ; break;} case 287: -#line 2072 "Gmsh.y" -{ yyval.d = ParUtil::Instance()->size(); ; +#line 2065 "Gmsh.y" +{ yyval.d = sqrt(yyvsp[-1].d); ; break;} case 288: +#line 2066 "Gmsh.y" +{ yyval.d = sin(yyvsp[-1].d); ; + break;} +case 289: +#line 2067 "Gmsh.y" +{ yyval.d = asin(yyvsp[-1].d); ; + break;} +case 290: +#line 2068 "Gmsh.y" +{ yyval.d = cos(yyvsp[-1].d); ; + break;} +case 291: +#line 2069 "Gmsh.y" +{ yyval.d = acos(yyvsp[-1].d); ; + break;} +case 292: +#line 2070 "Gmsh.y" +{ yyval.d = tan(yyvsp[-1].d); ; + break;} +case 293: +#line 2071 "Gmsh.y" +{ yyval.d = atan(yyvsp[-1].d); ; + break;} +case 294: +#line 2072 "Gmsh.y" +{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; + break;} +case 295: +#line 2073 "Gmsh.y" +{ yyval.d = sinh(yyvsp[-1].d); ; + break;} +case 296: +#line 2074 "Gmsh.y" +{ yyval.d = cosh(yyvsp[-1].d); ; + break;} +case 297: +#line 2075 "Gmsh.y" +{ yyval.d = tanh(yyvsp[-1].d); ; + break;} +case 298: +#line 2076 "Gmsh.y" +{ yyval.d = fabs(yyvsp[-1].d); ; + break;} +case 299: #line 2077 "Gmsh.y" +{ yyval.d = floor(yyvsp[-1].d); ; + break;} +case 300: +#line 2078 "Gmsh.y" +{ yyval.d = ceil(yyvsp[-1].d); ; + break;} +case 301: +#line 2079 "Gmsh.y" +{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; + break;} +case 302: +#line 2080 "Gmsh.y" +{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; + break;} +case 303: +#line 2081 "Gmsh.y" +{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; + break;} +case 304: +#line 2082 "Gmsh.y" +{ yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; + break;} +case 305: +#line 2091 "Gmsh.y" +{ yyval.d = yyvsp[0].d; ; + break;} +case 306: +#line 2092 "Gmsh.y" +{ yyval.d = 3.141592653589793; ; + break;} +case 307: +#line 2093 "Gmsh.y" +{ yyval.d = ParUtil::Instance()->rank(); ; + break;} +case 308: +#line 2094 "Gmsh.y" +{ yyval.d = ParUtil::Instance()->size(); ; + break;} +case 309: +#line 2099 "Gmsh.y" { TheSymbol.Name = yyvsp[0].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5165,8 +5409,8 @@ case 288: yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0) ; ; break;} -case 289: -#line 2088 "Gmsh.y" +case 310: +#line 2110 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5183,8 +5427,8 @@ case 289: } ; break;} -case 290: -#line 2105 "Gmsh.y" +case 311: +#line 2127 "Gmsh.y" { TheSymbol.Name = yyvsp[-1].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5195,8 +5439,8 @@ case 290: yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i) ; ; break;} -case 291: -#line 2116 "Gmsh.y" +case 312: +#line 2138 "Gmsh.y" { TheSymbol.Name = yyvsp[-4].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5213,8 +5457,8 @@ case 291: } ; break;} -case 292: -#line 2135 "Gmsh.y" +case 313: +#line 2157 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-2].c); @@ -5230,8 +5474,8 @@ case 292: } ; break;} -case 293: -#line 2151 "Gmsh.y" +case 314: +#line 2173 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c); @@ -5247,8 +5491,8 @@ case 293: } ; break;} -case 294: -#line 2167 "Gmsh.y" +case 315: +#line 2189 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-3].c); @@ -5264,8 +5508,8 @@ case 294: } ; break;} -case 295: -#line 2183 "Gmsh.y" +case 316: +#line 2205 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-6].c); @@ -5281,131 +5525,131 @@ case 295: } ; break;} -case 296: -#line 2201 "Gmsh.y" +case 317: +#line 2223 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ; ; break;} -case 297: -#line 2205 "Gmsh.y" +case 318: +#line 2227 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ; ; break;} -case 298: -#line 2209 "Gmsh.y" +case 319: +#line 2231 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} -case 299: -#line 2213 "Gmsh.y" +case 320: +#line 2235 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ; ; break;} -case 300: -#line 2217 "Gmsh.y" +case 321: +#line 2239 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ; ; break;} -case 301: -#line 2223 "Gmsh.y" +case 322: +#line 2245 "Gmsh.y" { yyval.v[0]=yyvsp[-9].d; yyval.v[1]=yyvsp[-7].d; yyval.v[2]=yyvsp[-5].d; yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d; ; break;} -case 302: -#line 2227 "Gmsh.y" +case 323: +#line 2249 "Gmsh.y" { yyval.v[0]=yyvsp[-7].d; yyval.v[1]=yyvsp[-5].d; yyval.v[2]=yyvsp[-3].d; yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0; ; break;} -case 303: -#line 2231 "Gmsh.y" +case 324: +#line 2253 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} -case 304: -#line 2235 "Gmsh.y" +case 325: +#line 2257 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} -case 305: -#line 2242 "Gmsh.y" +case 326: +#line 2264 "Gmsh.y" { ; break;} -case 306: -#line 2245 "Gmsh.y" +case 327: +#line 2267 "Gmsh.y" { ; break;} -case 307: -#line 2251 "Gmsh.y" +case 328: +#line 2273 "Gmsh.y" { ; break;} -case 308: -#line 2254 "Gmsh.y" +case 329: +#line 2276 "Gmsh.y" { ; break;} -case 309: -#line 2260 "Gmsh.y" +case 330: +#line 2282 "Gmsh.y" { ; break;} -case 310: -#line 2263 "Gmsh.y" +case 331: +#line 2285 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} -case 311: -#line 2267 "Gmsh.y" +case 332: +#line 2289 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} -case 312: -#line 2274 "Gmsh.y" +case 333: +#line 2296 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(List_T*)) ; List_Add(yyval.l, &(yyvsp[0].l)) ; ; break;} -case 313: -#line 2279 "Gmsh.y" +case 334: +#line 2301 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)) ; ; break;} -case 314: -#line 2287 "Gmsh.y" +case 335: +#line 2309 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} -case 315: -#line 2292 "Gmsh.y" +case 336: +#line 2314 "Gmsh.y" { yyval.l = yyvsp[0].l ; ; break;} -case 316: -#line 2296 "Gmsh.y" +case 337: +#line 2318 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} -case 317: -#line 2300 "Gmsh.y" +case 338: +#line 2322 "Gmsh.y" { yyval.l=yyvsp[-1].l; for(i=0 ; i<List_Nbr(yyval.l) ; i++){ @@ -5414,16 +5658,16 @@ case 317: } ; break;} -case 318: -#line 2311 "Gmsh.y" +case 339: +#line 2333 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; for(d=yyvsp[-2].d ; (yyvsp[-2].d<yyvsp[0].d)?(d<=yyvsp[0].d):(d>=yyvsp[0].d) ; (yyvsp[-2].d<yyvsp[0].d)?(d+=1.):(d-=1.)) List_Add(yyval.l, &d) ; ; break;} -case 319: -#line 2317 "Gmsh.y" +case 340: +#line 2339 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){ @@ -5435,8 +5679,8 @@ case 319: List_Add(yyval.l, &d) ; ; break;} -case 320: -#line 2328 "Gmsh.y" +case 341: +#line 2350 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5451,8 +5695,8 @@ case 320: } ; break;} -case 321: -#line 2342 "Gmsh.y" +case 342: +#line 2364 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5469,8 +5713,8 @@ case 321: } ; break;} -case 322: -#line 2358 "Gmsh.y" +case 343: +#line 2380 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; @@ -5491,8 +5735,8 @@ case 322: List_Delete(yyvsp[-2].l); ; break;} -case 323: -#line 2378 "Gmsh.y" +case 344: +#line 2400 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; @@ -5515,27 +5759,27 @@ case 323: List_Delete(yyvsp[-2].l); ; break;} -case 324: -#line 2403 "Gmsh.y" +case 345: +#line 2425 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} -case 325: -#line 2408 "Gmsh.y" +case 346: +#line 2430 "Gmsh.y" { yyval.l = yyvsp[0].l ; ; break;} -case 326: -#line 2412 "Gmsh.y" +case 347: +#line 2434 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} -case 327: -#line 2416 "Gmsh.y" +case 348: +#line 2438 "Gmsh.y" { for(i=0 ; i<List_Nbr(yyvsp[0].l) ; i++){ List_Read(yyvsp[0].l, i, &d) ; @@ -5544,27 +5788,27 @@ case 327: List_Delete(yyvsp[0].l); ; break;} -case 328: -#line 2428 "Gmsh.y" +case 349: +#line 2450 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} -case 329: -#line 2432 "Gmsh.y" +case 350: +#line 2454 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} -case 330: -#line 2443 "Gmsh.y" +case 351: +#line 2465 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); if(flag) vyyerror("Unknown color '%s'", yyvsp[0].c); ; break;} -case 331: -#line 2448 "Gmsh.y" +case 352: +#line 2470 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){ vyyerror("Unknown color option class '%s'", yyvsp[-4].c); @@ -5581,14 +5825,14 @@ case 331: } ; break;} -case 332: -#line 2467 "Gmsh.y" +case 353: +#line 2489 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 333: -#line 2471 "Gmsh.y" +case 354: +#line 2493 "Gmsh.y" { yyval.l = List_Create(256,10,sizeof(unsigned int)) ; ColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -5600,27 +5844,27 @@ case 333: } ; break;} -case 334: -#line 2485 "Gmsh.y" +case 355: +#line 2507 "Gmsh.y" { yyval.l = List_Create(256,10,sizeof(unsigned int)) ; List_Add(yyval.l, &(yyvsp[0].u)) ; ; break;} -case 335: -#line 2490 "Gmsh.y" +case 356: +#line 2512 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)) ; ; break;} -case 336: -#line 2497 "Gmsh.y" +case 357: +#line 2519 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} -case 337: -#line 2501 "Gmsh.y" +case 358: +#line 2523 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)) ; strcpy(yyval.c, yyvsp[-3].c) ; @@ -5629,8 +5873,8 @@ case 337: Free(yyvsp[-1].c); ; break;} -case 338: -#line 2509 "Gmsh.y" +case 359: +#line 2531 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)) ; for(i=strlen(yyvsp[-1].c)-1; i>=0; i--){ @@ -5644,14 +5888,14 @@ case 338: Free(yyvsp[-1].c); ; break;} -case 339: -#line 2522 "Gmsh.y" +case 360: +#line 2544 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} -case 340: -#line 2526 "Gmsh.y" +case 361: +#line 2548 "Gmsh.y" { for(i = 0 ; i<List_Nbr(yyvsp[-1].l) ; i++){ if(!i){ @@ -5677,8 +5921,8 @@ case 340: Free(yyvsp[-3].c); ; break;} -case 341: -#line 2551 "Gmsh.y" +case 362: +#line 2573 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-3].c))) vyyerror("Unknown string option class '%s'", yyvsp[-3].c); @@ -5693,8 +5937,8 @@ case 341: } ; break;} -case 342: -#line 2565 "Gmsh.y" +case 363: +#line 2587 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-6].c))) vyyerror("Unknown string option class '%s'", yyvsp[-6].c); @@ -5931,7 +6175,7 @@ yyerrhandle: } return 1; } -#line 2580 "Gmsh.y" +#line 2602 "Gmsh.y" void InitSymbols(void){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 57de2056af318cd18b7dde9e0bada58e7dff8586..0b468c6818b3a4f4ee2d5f3bfacdda841e7cf41a 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,6 +1,6 @@ %{ -// $Id: Gmsh.y,v 1.98 2001-09-04 08:05:47 geuzaine Exp $ +// $Id: Gmsh.y,v 1.99 2001-09-04 16:25:05 geuzaine Exp $ #include <stdarg.h> #ifndef _NOPLUGIN @@ -2058,6 +2058,28 @@ FExpr : | tModulo '(' FExpr ',' FExpr ')' { $$ = fmod($3,$5); } | tHypot '(' FExpr ',' FExpr ')' { $$ = sqrt($3*$3+$5*$5); } | tRand '(' FExpr ')' { $$ = $3*(double)rand()/(double)RAND_MAX; } + /* for GetDP compatibility */ + | tExp '[' FExpr ']' { $$ = exp($3); } + | tLog '[' FExpr ']' { $$ = log($3); } + | tLog10 '[' FExpr ']' { $$ = log10($3); } + | tSqrt '[' FExpr ']' { $$ = sqrt($3); } + | tSin '[' FExpr ']' { $$ = sin($3); } + | tAsin '[' FExpr ']' { $$ = asin($3); } + | tCos '[' FExpr ']' { $$ = cos($3); } + | tAcos '[' FExpr ']' { $$ = acos($3); } + | tTan '[' FExpr ']' { $$ = tan($3); } + | tAtan '[' FExpr ']' { $$ = atan($3); } + | tAtan2 '[' FExpr ',' FExpr ']' { $$ = atan2($3,$5); } + | tSinh '[' FExpr ']' { $$ = sinh($3); } + | tCosh '[' FExpr ']' { $$ = cosh($3); } + | tTanh '[' FExpr ']' { $$ = tanh($3); } + | tFabs '[' FExpr ']' { $$ = fabs($3); } + | tFloor '[' FExpr ']' { $$ = floor($3); } + | tCeil '[' FExpr ']' { $$ = ceil($3); } + | tFmod '[' FExpr ',' FExpr ']' { $$ = fmod($3,$5); } + | tModulo '[' FExpr ',' FExpr ']' { $$ = fmod($3,$5); } + | tHypot '[' FExpr ',' FExpr ']' { $$ = sqrt($3*$3+$5*$5); } + | tRand '[' FExpr ']' { $$ = $3*(double)rand()/(double)RAND_MAX; } ; /* Pour etre vraiment complet, il faudrait encore ajouter +=, -=, *= et /= */ diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index a501e998fa722f1f94dfe200b4b2fd1212975365..7a55250a59d0b933f3a53fcca9a9bf7a52c7e8a9 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.112 2001-09-04 08:05:47 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.113 2001-09-04 16:25:06 geuzaine Exp $ */ #define FLEX_SCANNER @@ -998,7 +998,7 @@ char *yytext; #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.112 2001-09-04 08:05:47 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.113 2001-09-04 16:25:06 geuzaine Exp $ #include <stdio.h> #include <stdlib.h> diff --git a/benchmarks/2d/wing.geo b/benchmarks/2d/wing.geo index a255c6694556f2e7a807cafc69810dd82695b0f0..0546a05d4e7d25e4c01a9eb050f2882bbf054d86 100644 --- a/benchmarks/2d/wing.geo +++ b/benchmarks/2d/wing.geo @@ -1079,3 +1079,5 @@ Line Loop(532) = {316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,33 Line Loop(533) = {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,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445}; Line Loop(534) = {41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40}; Plane Surface(535) = {531,532,534,533}; + +//Attractor Point{3846} = {0.1,0.1,10}; diff --git a/doc/VERSIONS b/doc/VERSIONS index 276118cb256689b7b73f3d76e299c758d2005e6b..9d7ed791719341efdadf432fb051ddc3ead04d1b 100644 --- a/doc/VERSIONS +++ b/doc/VERSIONS @@ -1,4 +1,8 @@ -$Id: VERSIONS,v 1.66 2001-09-01 16:22:37 geuzaine Exp $ +$Id: VERSIONS,v 1.67 2001-09-04 16:25:06 geuzaine Exp $ + +New in 1.26: Enhanced 2D anisotropic mesh generator (metric +intersections); fixed (yet another) bug in 3D initial mesh; +alternative syntax for built-in functions (for GetDP compatibility); New in 1.25: Fixed bug with mixed recombined/non-recombined extruded meshes; Linux versions are now build with no optimization, due to bugs diff --git a/tutorial/t7.geo b/tutorial/t7.geo index fba2dadcd7e5c0499f10577274682895b02e3ee6..a4f0c9a91185a203febe76affceb53da8d8d3730 100644 --- a/tutorial/t7.geo +++ b/tutorial/t7.geo @@ -17,7 +17,7 @@ Mesh.Smoothing = 4 ; lc = .1; Point(1) = {0.0,0.0,0,lc}; -Point(2) = {1,0.0,0,lc}; +Point(2) = {1.2,-0.2,0,lc}; Point(3) = {1,1,0,lc}; Point(4) = {0,1,0,lc}; @@ -31,12 +31,17 @@ Plane Surface(6) = {5}; Point(5) = {0.1,0.2,0,lc}; Point(11) = {0.5,0.5,-1,lc}; +Point(12) = {0.5,0.5,0,lc}; Point(22) = {0.6,0.6,1,lc}; Line(5) = {11,22}; +Spline(7) = {4,5,12,2}; + // Anisotropic attractors can be defined on points and lines: Attractor Line{5} = {.1, 0.01, 17}; Attractor Line{1,2} = {0.1, 0.005, 3}; +Attractor Line{7} = {0.1, 0.05, 3}; +