C ALGORITHM 764, COLLECTED ALGORITHMS FROM ACM. C THIS WORK PUBLISHED IN TRANSACTIONS ON MATHEMATICAL SOFTWARE, C VOL. 23, NO. 1, March, 1997, P. 1--15. C #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # Src # Doc # This archive created: Sat Apr 19 22:37:40 1997 export PATH; PATH=/bin:$PATH if test ! -d 'Src' then mkdir 'Src' fi cd 'Src' if test ! -d 'Cubpack++' then mkdir 'Cubpack++' fi cd 'Cubpack++' if test ! -d 'Drivers' then mkdir 'Drivers' fi cd 'Drivers' if test -f 'CONTENTS' then echo shar: will not over-write existing file "'CONTENTS'" else cat << \SHAR_EOF > 'CONTENTS' What you find in the current directory -------------------------------------- CONTENTS : this file Small examples of main programs illustrating the use of different geometries. You can start playing with Cubpack++ by modifying these. ---------------------- ------------------------------ source region output ------ ------ ------ vb1.c : TRIANGLE : vb1.out vb2.c : CIRCLE : vb2.out vb3.c : PLANE_SECTOR (wedge) : vb3.out vb4.c : GENERALIZED_RECTANGLE (parabola) : vb4.out vb5.c : GENERALIZED_RECTANGLE (lemniscate) : vb5.out vb6.c : SEMI_INFINITE_STRIP : vb6.out vb7.c : SEMI_INFINITE_STRIP : vb7.out vb8.c : INFINITE_STRIP : vb8.out vb9.c : RECTANGLE : vb9.out vb10.c : TRIANGLE : vb10.out vb11.c : PLANE_SECTOR (half plane) : vb11.out vb12.c : PLANE_SECTOR (quadrant) : vb12.out vb13.c : House = TRIANGLE + RECTANGLE : vb13.out vb14.c : SEMI_INFINITE_STRIP (see vb6) : vb14.out vb15.c : House (see vb13) : vb15.out vb16.c : House (see vb13) : vb16.out vb17.c : GENERALIZED_RECTANGLE (see vb4) : vb17.out vb18.c : PLANE_SECTOR (Bivariate normal distribution) vb_hankel.c: call of Fortran function from C++, see User Manual. The output files where generated using the xlC compiler on an IBM RS6000 running AIX version 3.2.5 SHAR_EOF fi # end of overwriting check if test -f 'EXAMPLES' then echo shar: will not over-write existing file "'EXAMPLES'" else cat << \SHAR_EOF > 'EXAMPLES' Nr File Integration region -- ----- ---------------------------------- 0 interactive choice 1 vb1.c TRIANGLE 2 vb2.c CIRCLE 3 vb3.c PLANE_SECTOR (wedge) 4 vb4.c GENERALIZED_RECTANGLE (parabola) 5 vb5.c GENERALIZED_RECTANGLE (lemniscate) 6 vb6.c SEMI_INFINITE_STRIP 7 vb7.c SEMI_INFINITE_STRIP 8 vb8.c INFINITE_STRIP 9 vb9.c RECTANGLE 10 vb10.c TRIANGLE 11 vb11.c PLANE_SECTOR (half plane) 12 vb12.c PLANE_SECTOR (quadrant) 13 vb13.c House = TRIANGLE + RECTANGLE 14 vb14.c SEMI_INFINITE_STRIP (variant of vb6) 15 vb15.c House (variant of vb13) 16 vb16.c House (variant of vb13) 17 vb17.c GENERALIZED_RECTANGLE (variant of vb4) 18 vb18.c PLANE_SECTOR (Bivariate normal distribution) SHAR_EOF fi # end of overwriting check if test -f 'vb1.c' then echo shar: will not over-write existing file "'vb1.c'" else cat << \SHAR_EOF > 'vb1.c' #include #include real f(const Point& p) { real x=p.X(); return x*x; } int main() { Point p1(0,0), p2(1,1), p3(2,0); TRIANGLE T(p1,p2,p3); cout << "The integral is " << Integrate(f,T) << endl; return 0; } SHAR_EOF fi # end of overwriting check if test -f 'vb10.c' then echo shar: will not over-write existing file "'vb10.c'" else cat << \SHAR_EOF > 'vb10.c' // Example 20 from ditamo // exact value = 4/15 #include #include real f(const Point& p) { real x=p.X() , y=p.Y() ; return sqrt(1-x-y); } int main () { Point origin(0,0),p1(1,0),p2(0,1); TRIANGLE ditamo20(origin,p1,p2); EvaluationCounter count; count.Start(); cout <<"The integral is " << Integrate(f,ditamo20,0,0.5e-4,10000); cout <<" with absolute error " << ditamo20.AbsoluteError() << endl; count.Stop(); cout << count.Read() << " function evaluations were used." << endl; return 0; } SHAR_EOF fi # end of overwriting check if test -f 'vb11.c' then echo shar: will not over-write existing file "'vb11.c'" else cat << \SHAR_EOF > 'vb11.c' // This example assumes that math.h contains the function erfc. // The erfc function is only used to compute the exact value. // Problem posted in sci.math.num-analysis on 9 Feb 1995 // by N. Sukumar (E-mail: n-sukumar@nwu.edu), // Theoretical & Applied Mechanics, Northwestern U, Evanston IL 60208. // Exact value = 1/2 - (1/2) * erf (h/sqrt(2)) // where h = b / sqrt (1 + a^2) #include #include real f(const Point& p) { real x=p.X() , y=p.Y(); return exp(-(x*x+y*y)/2.0)/(2*M_PI); } int main () { real a=1,b=1,h=b/sqrt(1.0+a*a),t=h/sqrt(2.0); Point A(0,b),B(1,a+b),D=2*A-B; PLANE_SECTOR halfplane(A,B,D); EvaluationCounter count; count.Start(); cout <<"The estimated integral is " << Integrate(f,halfplane,0,0.5e-6)< 'vb12.c' // Example 34 from DITAMO // The function is rescaled such that the solution is 1. #include #include real f(const Point& p) { real x=p.X() , y=p.Y(),z , a=1.0/3.0 , b=2.0/3.0 ; if (x*y < 1e-15) return 0.0; z = x + y + 1/(x*y); if ((z > 100) || (z < -100)) { return 0.0;} else { return exp(-z) / (pow(x,b)*pow(y,a)*0.1806075059054343159);} } int main () { // Using the first constructor: Point origin(0,0),p1(1,0),p2(0,1); PLANE_SECTOR quadrant(origin,p1,p2); // Using the second constructor: // Point origin(0,0); // PLANE_SECTOR quadrant(origin,0.0, 0.0, M_PI/2); EvaluationCounter count; count.Start(); cout <<"The integral is " << Integrate(f,quadrant,0,0.5e-4); cout <<" with absolute error " << quadrant.AbsoluteError() << endl; count.Stop(); cout << count.Read() << " function evaluations were used." << endl; return 0; } SHAR_EOF fi # end of overwriting check if test -f 'vb13.c' then echo shar: will not over-write existing file "'vb13.c'" else cat << \SHAR_EOF > 'vb13.c' // Example suggested by a referee, who called this `reasonable'. // One can easily see, e.g. by substituting y=1, that this // integral involves severe difficulties such as fast oscillations // in the neighbourhood of the line x+y=2, and discontinuous derivatives. #include #include #define sqr(x) ((x)*(x)) static const real sqrt_PI = sqrt(M_PI), p35_PI = pow(M_PI,0.35e0); real f(const Point& p) { real x=p.X() , y=p.Y() ; return ( sqrt( sqr(x-sqrt_PI) + sqr(y-1) + 0.00001) + pow(pow(y-p35_PI,4) + sqr(x-1) + 0.00002,1.0/3.0) ) * sin( (x-y-sqrt_PI+p35_PI)/(sqr(x+y-2) + 0.01) ); } int main () { TRIANGLE Roof( Point(0,1), Point(2,1), Point(1,2)); RECTANGLE Walls( Point(0,0), Point(0,1), Point(2,0)); REGION_COLLECTION House = Walls + Roof; EvaluationCounter count; count.Start(); cout <<"The integral is " << Integrate(f,House,0,0.5e-1,1000000); cout <<" with absolute error " << House.AbsoluteError() << endl; count.Stop(); cout << count.Read() << " function evaluations were used." << endl; return 0; } SHAR_EOF fi # end of overwriting check if test -f 'vb14.c' then echo shar: will not over-write existing file "'vb14.c'" else cat << \SHAR_EOF > 'vb14.c' // Example 28 from ditamo #include #include real f(const Point& p) { real y=p.Y(); return 1/(y*y); } int main () { Point A(2,-1), B(1,-1); SEMI_INFINITE_STRIP langelat(A,B); real Integral_est, Error_est; Boolean Success; EvaluationCounter TikTak; TikTak.Start(); cout.setf(ios::scientific,ios::floatfield); do { Integrate(f,langelat,Integral_est,Error_est,Success,0,0.5e-7,10000); cout <<"The integral is " << Integral_est; cout <<" with estimated absolute error " << Error_est << endl; cout <<"The real error is " << Integral_est - 1 < 'vb15.c' // The `House' example with on each subregion a different integrand. #include #include real f1(const Point& p) { return ( p.X()*p.X() ); } real f2(const Point& p) { return ( p.Y()*p.Y() ); } int main () { TRIANGLE Roof( Point(0,1), Point(2,1), Point(1,2)); RECTANGLE Walls( Point(0,0), Point(0,1), Point(2,0)); REGION_COLLECTION House = Walls + Roof; Roof.LocalIntegrand(f1); Walls.LocalIntegrand(f2); EvaluationCounter count; count.Start(); cout <<"The integral is " << Integrate(House); cout <<" with estimated absolute error " << House.AbsoluteError() << endl; cout <<"The contributions of the subregions are:"< 'vb16.c' // Example suggested by a referee, who called this `reasonable'. // One can easily see, e.g. by substituting y=1, that this // integral involves severe difficulties such as fast oscillations // in the neighbourhood of the line x+y=2, and discontinuous derivatives. #include #include #define sqr(x) ((x)*(x)) static const real sqrt_PI = sqrt(M_PI), p35_PI = pow(M_PI,0.35e0); real f(const Point& p) { real x=p.X() , y=p.Y() ; return ( sqrt( sqr(x-sqrt_PI) + sqr(y-1) + 0.00001) + pow(pow(y-p35_PI,4) + sqr(x-1) + 0.00002,1.0/3.0) ) * sin( (x-y-sqrt_PI+p35_PI)/(sqr(x+y-2) + 0.01) ); } int main () { TRIANGLE T1( Point(0,0), Point(1,0), Point(0,1)), T2( Point(1,0), Point(2,0), Point(1.5,0.5)), T3( Point(2,0), Point(2,1), Point(1.5,0.5)); RECTANGLE R1( Point(1,0), Point(0,1), Point(2,1)); REGION_COLLECTION House1 = T1 + T2 + T3 + R1; RECTANGLE R3( Point(1,0), Point(0,1), Point(2,1)), R2( Point(1.8,0), Point(1.4,0.4), Point(2,0.2)); TRIANGLE T4( Point(1,0), Point(1.8,0), Point(1.4,0.4)), T7( Point(0,0), Point(1,0), Point(0,1)), T5( Point(1.8,0), Point(2,0), Point(2,0.2)), T6( Point(2,0.2), Point(2,1), Point(1.6,0.6)); REGION_COLLECTION House2 = T7 + R3 + R2 + T4 + T5 + T6; EvaluationCounter count; count.Start(); cout <<"The integral is " << Integrate(f,House1,0,0.5e-1,1000000); cout <<" with absolute error " << House1.AbsoluteError() << endl; count.Stop(); cout << count.Read() << " function evaluations were used." << endl; cout << "Contribution of the different parts:" << endl; cout << "R1: integral and error are " << R1.Integral() << " and " << R1.AbsoluteError() < 'vb17.c' // Example 23 from ditamo // The function is rescaled such that the solution is 1. #include #include real f(const Point& p) { real x=p.X() , y=p.Y(); return 0.25/sqrt(x*(2.0-x)); } real Height(const Point& p) { return sqrt(4-2*p.X()); } int main () { real Integral_est, Error_est; Boolean Success; Point A(0,0), B(2,0); GENERALIZED_RECTANGLE parabola(Height,A,B); do { Integrate(f,parabola,Integral_est,Error_est,Success,0,0.5e-1,10000); cout <<"The integral is " << Integral_est < 'vb18.c' // Bivariate normal distribution // Note that special purpose methods exist for this type of integral. #include #include // The integral depends on the following 3 parameters: real rho, a, b; real N; // This is used to save work real f(const Point& p) { real x=p.X() , y=p.Y(); return exp(N*(-x*x+2*rho*x*y-y*y)) ; } int main () { EvaluationCounter count; real c; // Read the 3 parameters from standard input: cout << "Give a,b and rho ( |rho| < 1 ): "; cin >> a >> b >> rho; // Define the region of integration: Point Center(a,b); PLANE_SECTOR quadrant(Center,0.0, M_PI , 3*M_PI/2); c = 1.0/(2.0*M_PI*sqrt(1.0 - rho*rho)); N = 1.0/(2.0 - 2.0*rho*rho); count.Start(); cout <<"The integral is " << Integrate(f,quadrant,0,0.5e-6)*c; cout <<" with absolute error " << quadrant.AbsoluteError()*c << endl; count.Stop(); cout << count.Read() << " function evaluations were used." << endl; return 0; } SHAR_EOF fi # end of overwriting check if test -f 'vb2.c' then echo shar: will not over-write existing file "'vb2.c'" else cat << \SHAR_EOF > 'vb2.c' #include #include real f(const Point& p) { real r=p.Length(); return 1.0/(1.0+r*r*r*r); } int main () { Point origin(0,0); real radius=1; CIRCLE cir(origin,radius); cout <<"The integral is " << Integrate(f, cir, 0, 1.0e-6, 10000); cout <<" with absolute error " << cir.AbsoluteError() << endl; return 0; } SHAR_EOF fi # end of overwriting check if test -f 'vb3.c' then echo shar: will not over-write existing file "'vb3.c'" else cat << \SHAR_EOF > 'vb3.c' // Example 33 from ditamo // Exact value = arctan(2) // Note that the "exact" value in the original paper is wrong. #include #include #include real f(const Point& p) { real x=p.X() , y=p.Y(); return exp(0.5*(-x*x -y*y)); } int main () { Point origin(0,0); real innerradius=0, alfa=0, beta=atan(2.0); PLANE_SECTOR wedge(origin,innerradius,alfa,beta); EvaluationCounter count; cout.setf(ios::scientific,ios::floatfield); cout<<"req. rel. error est integral est error abs error evaluations" <1e-12; req_err/=10) { cout << setprecision(1) << " <" << req_err <<" " << setprecision(10) << Integrate(f,wedge,0,req_err) << " "; cout << setprecision(1) << wedge.AbsoluteError() << " " << fabs(wedge.Integral() - atan(2.0)) << " " << count.Read() << endl; } count.Stop(); return 0; } SHAR_EOF fi # end of overwriting check if test -f 'vb4.c' then echo shar: will not over-write existing file "'vb4.c'" else cat << \SHAR_EOF > 'vb4.c' // Example 23 from ditamo // The function is rescaled such that the solution is 1. #include #include real f(const Point& p) { real x=p.X() , y=p.Y(); return 0.25/sqrt(x*(2.0-x)); } real Height(const Point& p) { return sqrt(4-2*p.X()); } int main () { Point A(0,0), B(2,0); GENERALIZED_RECTANGLE parabola(Height,A,B); Chrono TikTak; TikTak.Start(); cout <<"The integral is " << Integrate(f,parabola,0,0.5e-4); TikTak.Stop(); cout <<" with absolute error " << parabola.AbsoluteError() << endl; cout <<"Elapsed Time: " << TikTak.Read()/1000<<" seconds" << endl; return 0; } SHAR_EOF fi # end of overwriting check if test -f 'vb5.c' then echo shar: will not over-write existing file "'vb5.c'" else cat << \SHAR_EOF > 'vb5.c' // Example 5 from ditamo #include #include real f(const Point& p) { real x=p.X() , y=p.Y(); return p.Y(); } real Height(const Point& p) { real x=p.X(); return sqrt(4*cos(x)*cos(x)/9 - 16*sin(x)*sin(x)/25); } int main () { Point A(0,0), B(atan(5.0/6.0),0); GENERALIZED_RECTANGLE lemniscate(Height,A,B); EvaluationCounter TikTak; TikTak.Start(); // cout.setf(ios::left,ios::adjustfield); cout.setf(ios::scientific,ios::floatfield); cout <<"The integral is " << Integrate(f,lemniscate,0,0.5e-7,10000); cout <<" with estimated absolute error " << lemniscate.AbsoluteError() << endl; cout <<"The real error is " << lemniscate.Integral() - (2-11*atan(5.0/6.0)/15)/15 < 'vb6.c' // Example 28 from ditamo #include #include real f(const Point& p) { real y=p.Y(); return 1/(y*y); } int main () { Point A(2,-1), B(1,-1); SEMI_INFINITE_STRIP langelat(A,B); EvaluationCounter TikTak; TikTak.Start(); // cout.setf(ios::left,ios::adjustfield); cout.setf(ios::scientific,ios::floatfield); cout <<"The integral is " << Integrate(f,langelat,0,0.5e-7,20000); cout <<" with estimated absolute error " << langelat.AbsoluteError() << endl; cout <<"The real error is " << langelat.Integral() - 1 < 'vb7.c' // Example 29 from ditamo #include #include real f(const Point& p) { return fabs(p.Y())*exp(-p.Y()*p.Y()/2); } int main () { Point A(0,0), B(1.107148717794090503,0); SEMI_INFINITE_STRIP langelat(A,B); EvaluationCounter TikTak; TikTak.Start(); // cout.setf(ios::left,ios::adjustfield); cout.setf(ios::scientific,ios::floatfield); cout <<"The integral is " << Integrate(f,langelat,0,0.5e-4,10000); cout <<" with estimated absolute error " << langelat.AbsoluteError() << endl; TikTak.Stop(); cout<<"Number of evaluations = "< 'vb8.c' // Example #include #include #include real f(const Point& p) { return exp(-p.Y()*p.Y()); } int main () { Point A(0,0), B(1,0); INFINITE_STRIP langelat(A,B); EvaluationCounter TikTak; TikTak.Start(); // cout.setf(ios::left,ios::adjustfield); cout.setf(ios::scientific,ios::floatfield); cout <<"The integral is " << Integrate(f,langelat,0,0.5e-3,10000); cout <<" with estimated absolute error " << langelat.AbsoluteError() << endl; cout <<"The real error is " << langelat.Integral() - sqrt(M_PI) < 'vb9.c' // This example comes from Problem 94-7 by D.E. Loper // Siam Review, Vol. 36 (1994) page 277 #include #include #include static real q; real A(const Point& p) { real m=p.X() , f=p.Y(); real t=(1-m*m)*(1-m*m), s = sin(f); s = s*s; return (t*s)/(t*s*s+q*q*m*m); } real B(const Point& p) { real m=p.X() , f=p.Y(); real t=(1-m*m), s = sin(f); s = s*s; return (t*s*(t*s+m*m))/(t*t*s*s+q*q*m*m); } int main () { Point Origin(0,0), mu(1,0),phi(0,M_PI/2); cout<<"q A(q) B(q) A(q)/B(q)"< 'vb_hankel.c' #include #include extern "C" {void zbesh_ (real&, real&, real&, int&, int&, int&, real[], real[], int&, int&);} real AbsHankel1 ( const Point& z) { real x=z.X(), y=z.Y(), cr[10], ci[10], fnu=0; int kode=1, m=1, n=1, nz, ierr; zbesh_(x,y,fnu,kode,m,n,cr,ci,nz,ierr); return sqrt(cr[0]*cr[0]+ci[0]*ci[0]); } real AbsHankel2 ( const Point& z) { real x=(z.X()*0.8+z.Y()*0.6), y=(0.8*z.Y()-z.X()*0.6), cr[10], ci[10], fnu=0; int kode=1, m=1, n=1, nz, ierr; zbesh_(x,y,fnu,kode,m,n,cr,ci,nz,ierr); return sqrt(cr[0]*cr[0]+ci[0]*ci[0]); } int main() { Point O(0,0), A(-1,0),B(-0.8,-0.6); EvaluationCounter count; cout << " Omega = 1"< 'vb1.out' The integral is 1.16667 SHAR_EOF fi # end of overwriting check if test -f 'vb10.out' then echo shar: will not over-write existing file "'vb10.out'" else cat << \SHAR_EOF > 'vb10.out' The integral is 0.266677 with absolute error 1.16825e-05 925 function evaluations were used. SHAR_EOF fi # end of overwriting check if test -f 'vb11.out' then echo shar: will not over-write existing file "'vb11.out'" else cat << \SHAR_EOF > 'vb11.out' The estimated integral is 0.23975 The exact value is 0.23975 17620 function evaluations were used. SHAR_EOF fi # end of overwriting check if test -f 'vb12.out' then echo shar: will not over-write existing file "'vb12.out'" else cat << \SHAR_EOF > 'vb12.out' The integral is 1 with absolute error 4.27146e-05 5091 function evaluations were used. SHAR_EOF fi # end of overwriting check if test -f 'vb13.out' then echo shar: will not over-write existing file "'vb13.out'" else cat << \SHAR_EOF > 'vb13.out' The integral is -0.40791 with absolute error 0.0203924 266548 function evaluations were used. SHAR_EOF fi # end of overwriting check if test -f 'vb14.out' then echo shar: will not over-write existing file "'vb14.out'" else cat << \SHAR_EOF > 'vb14.out' The integral is 1.000000e+00 with estimated absolute error 3.035122e-05 The real error is 1.779739e-07 ------------------------------------------------- The integral is 1.000000e+00 with estimated absolute error 4.073745e-07 The real error is 5.862995e-10 ------------------------------------------------- The integral is 1.000000e+00 with estimated absolute error 6.832923e-08 The real error is 2.741229e-11 ------------------------------------------------- The integral is 1.000000e+00 with estimated absolute error 4.986300e-08 The real error is 2.816547e-11 ------------------------------------------------- Total number of evaluations = 32067 SHAR_EOF fi # end of overwriting check if test -f 'vb15.out' then echo shar: will not over-write existing file "'vb15.out'" else cat << \SHAR_EOF > 'vb15.out' The integral is 1.83333 with estimated absolute error 2.03541e-14 The contributions of the subregions are: Walls: integral = 0.666667, error = 7.40149e-15 Roof: integral = 1.16667, error = 1.29526e-14 The exact value is 2/3 + 7/6 = 11/6 74 function evaluations were used. SHAR_EOF fi # end of overwriting check if test -f 'vb16.out' then echo shar: will not over-write existing file "'vb16.out'" else cat << \SHAR_EOF > 'vb16.out' The integral is -0.407393 with absolute error 0.0203507 105968 function evaluations were used. Contribution of the different parts: R1: integral and error are -0.283031 and 0.00816722 T1: integral and error are -0.221416 and 1.09496e-06 T2: integral and error are 0.068406 and 0.0055473 T3: integral and error are 0.0286485 and 0.00663513 The integral is -0.407853 with absolute error 0.0203784 94572 function evaluations were used. SHAR_EOF fi # end of overwriting check if test -f 'vb17.out' then echo shar: will not over-write existing file "'vb17.out'" else cat << \SHAR_EOF > 'vb17.out' The integral is 0.996521 with estimated absolute error 0.151082 ------------------------------------------------- The integral is 0.997535 with estimated absolute error 0.107081 ------------------------------------------------- The integral is 0.997926 with estimated absolute error 0.0900689 ------------------------------------------------- The integral is 0.998255 with estimated absolute error 0.0758062 ------------------------------------------------- The integral is 0.998393 with estimated absolute error 0.0697915 ------------------------------------------------- The integral is 0.998532 with estimated absolute error 0.0637768 ------------------------------------------------- The integral is 0.99867 with estimated absolute error 0.0577621 ------------------------------------------------- The integral is 0.998765 with estimated absolute error 0.0536343 ------------------------------------------------- The integral is 0.998814 with estimated absolute error 0.0515078 ------------------------------------------------- The integral is 0.998851 with estimated absolute error 0.0499129 ------------------------------------------------- SHAR_EOF fi # end of overwriting check if test -f 'vb18.out' then echo shar: will not over-write existing file "'vb18.out'" else cat << \SHAR_EOF > 'vb18.out' Give a,b and rho ( |rho| < 1 ): 1.0 1.0 0.5 The integral is 0.745204 with absolute error 3.68313e-07 17194 function evaluations were used. SHAR_EOF fi # end of overwriting check if test -f 'vb2.out' then echo shar: will not over-write existing file "'vb2.out'" else cat << \SHAR_EOF > 'vb2.out' The integral is 2.4674 with absolute error 5.77166e-08 SHAR_EOF fi # end of overwriting check if test -f 'vb3.out' then echo shar: will not over-write existing file "'vb3.out'" else cat << \SHAR_EOF > 'vb3.out' req. rel. error est integral est error abs error evaluations <5.0e-02 1.1096504402e+00 3.4e-02 2.5e-03 292 <5.0e-03 1.1071935478e+00 4.1e-03 4.5e-05 1181 <5.0e-04 1.1071470438e+00 5.1e-04 1.7e-06 3105 <5.0e-05 1.1071488562e+00 5.3e-05 1.4e-07 5657 <5.0e-06 1.1071486939e+00 5.3e-06 2.4e-08 11239 <5.0e-07 1.1071487183e+00 5.3e-07 5.5e-10 16377 <5.0e-08 1.1071487178e+00 5.5e-08 1.0e-12 25553 <5.0e-09 1.1071487178e+00 5.5e-09 1.1e-11 38577 <5.0e-10 1.1071487178e+00 5.4e-10 5.2e-13 53081 <5.0e-11 1.1071487178e+00 5.5e-11 2.6e-13 73949 <5.0e-12 1.1071487178e+00 5.5e-12 1.8e-15 117794 SHAR_EOF fi # end of overwriting check if test -f 'vb4.out' then echo shar: will not over-write existing file "'vb4.out'" else cat << \SHAR_EOF > 'vb4.out' The integral is 0.99886 with absolute error 0.0495064 Elapsed Time: 0 seconds SHAR_EOF fi # end of overwriting check if test -f 'vb5.out' then echo shar: will not over-write existing file "'vb5.out'" else cat << \SHAR_EOF > 'vb5.out' The integral is 9.936835e-02 with estimated absolute error 7.230197e-14 The real error is 1.387779e-17 Number of evaluations = 37 SHAR_EOF fi # end of overwriting check if test -f 'vb6.out' then echo shar: will not over-write existing file "'vb6.out'" else cat << \SHAR_EOF > 'vb6.out' The integral is 1.000000e+00 with estimated absolute error 4.173926e-07 The real error is 5.863554e-10 Number of evaluations = 20079 SHAR_EOF fi # end of overwriting check if test -f 'vb7.out' then echo shar: will not over-write existing file "'vb7.out'" else cat << \SHAR_EOF > 'vb7.out' The integral is 1.107149e+00 with estimated absolute error 5.263967e-05 Number of evaluations = 5657 SHAR_EOF fi # end of overwriting check if test -f 'vb8.out' then echo shar: will not over-write existing file "'vb8.out'" else cat << \SHAR_EOF > 'vb8.out' The integral is 1.772455e+00 with estimated absolute error 6.976425e-04 The real error is 1.067348e-06 Number of evaluations = 1183 SHAR_EOF fi # end of overwriting check if test -f 'vb9.out' then echo shar: will not over-write existing file "'vb9.out'" else cat << \SHAR_EOF > 'vb9.out' q A(q) B(q) A(q)/B(q) 1 1.513682 0.7568409 2 2 0.9107223 0.4553611 2 3 0.6587322 0.3293661 2 4 0.5176153 0.2588077 2 5 0.4268288 0.2134144 2 6 0.3633539 0.181677 2 7 0.3164155 0.1582078 2 8 0.2802695 0.1401347 2 9 0.2515646 0.1257823 2 10 0.2282109 0.1141055 2 11 0.2088359 0.104418 2 12 0.1925005 0.09625026 2 13 0.1785401 0.08927006 2 14 0.166471 0.08323551 2 15 0.1559327 0.07796635 2 16 0.1466509 0.07332547 2 17 0.1384134 0.06920668 2 18 0.131053 0.06552649 2 19 0.1244366 0.06221831 2 SHAR_EOF fi # end of overwriting check cd .. if test ! -d 'Documentation' then mkdir 'Documentation' fi cd 'Documentation' if test -f 'CONTENTS' then echo shar: will not over-write existing file "'CONTENTS'" else cat << \SHAR_EOF > 'CONTENTS' What you find in the current directory -------------------------------------- CONTENTS : this file COMPILERS : overview of compilers used to test Cubpack++ MACHINE_DEPEND : list of machine dependable source files paper.dvi : copy of submitted paper in dvi format paper.ps : copy of submitted paper in Postscript format userman.dvi : copy of User Manual in dvi format userman.ps : copy of User Manual in Postscript format SHAR_EOF fi # end of overwriting check if test -f 'COMPILERS' then echo shar: will not over-write existing file "'COMPILERS'" else cat << \SHAR_EOF > 'COMPILERS' Systems for which Cubpack++ has proven it works =============================================== Compiler Version Operating System Machine type -------------------------------------------------------------- g++/gcc 2.5.8 Ultrix 4.4 DECstation 5000 SunOS 5.3 Sparcenter 1000 Linux 1.0 i586 2.6.0 HP-UX 2.6.2 SunOS 5.3 Sparcenter 1000 2.6.3* MSDOS 2.7.2 Ultrix 4.4 DECstation 5000 Solaris2.3 Sparcenter 1000 -------------------------------------------------------------- xlC AIX Version 3.2 IBM RS6000 -------------------------------------------------------------- cxx OSF/1 V1.3 DECalpha -------------------------------------------------------------- CC SC3.0.1 SunOS 5.3 Sparcenter 1000 -------------------------------------------------------------- Borland C++ 4.0 Windows -------------------------------------------------------------- Turbo C++ 3.0 MSDOS 5.0 386SX -------------------------------------------------------------- *) DJGPP 1.12m4 Systems for which a workaround is provided ========================================== Compiler Version Operating System Machine type -------------------------------------------------------------- CC SC3.0 SunOS 5.3 Sparcenter 1000 (15 Dec 1993) Workaround activated with compiler option -DSOLARIS Note that this bug was removed from CC in version SC3.0.1. -------------------------------------------------------------- Systems for which Cubpack++ is too complex ========================================== Compiler Version Operating System Machine type -------------------------------------------------------------- CC SC2.0.1 SunOS 4. Sun4 -------------------------------------------------------------- The answer from vendors to these problems is: upgrade. SHAR_EOF fi # end of overwriting check if test -f 'MACHINE_DEPEND' then echo shar: will not over-write existing file "'MACHINE_DEPEND'" else cat << \SHAR_EOF > 'MACHINE_DEPEND' MACHINE DEPENDENT FILES: ------------------------ chrono.c real.h templist.h -> For details we refer to the User Manual, section 11. Users might need to change these. deccxxtp.c -> This file is only used by the cxx compiler on DECalpha OSF/1 V1.3 Users should not change this. gnu262tp.c -> This file is only used by the gnu compiler version at least 2.6.2 Users should not change this. SHAR_EOF fi # end of overwriting check cd .. if test ! -d 'Tools' then mkdir 'Tools' fi cd 'Tools' if test -f 'CONTENTS' then echo shar: will not over-write existing file "'CONTENTS'" else cat << \SHAR_EOF > 'CONTENTS' What you find in the current directory -------------------------------------- CONTENTS : this file c2C : change from suffix .c to .C c2cpp : change from suffix .c to .cpp The following makefile-s are used by quick_install and quick_run. mkfile.decalpha : makefile for cxx compiler on DECalpha OSF mkfile.gn1 : makefile for gnu compiler at most v2.6.0 mkfile.gn2 : makefile for gnu compiler v2.6.2 mkfile.gn3 : makefile for gnu compiler v2.7.0 mkfile.rs6000 : makefile for xlC compiler on RS6000 AIX mkfile.solaris : makefile for CC compiler on Solaris 2.* mkfile.tc : makefile for Turbo C++ under MS-DOS The following Makefile-s are models which can be modified by users. Mk.decalpha : makefile for cxx compiler on DECalpha OSF Mk.gn1 : makefile for gnu compiler at most v2.6.0 Mk.gn2 : makefile for gnu compiler v2.6.2 Mk.gn3 : makefile for gnu compiler v2.7.0 Mk.solaris : makefile for CC compiler on Solaris 2.* Mk.tc : makefile for Turbo C++ under MS-DOS SHAR_EOF fi # end of overwriting check if test -f 'c2C' then echo shar: will not over-write existing file "'c2C'" else cat << \SHAR_EOF > 'c2C' #!/bin/sh SRC_DIR=Src cd ../$SRC_DIR for i in s_adapt.h set.h stack.h vector.h vstack.h heap.h atomic.h div.h passbuck.h pointer.h regproc.h rule.h samediv.h userint.h do cat $i | sed 's/\.c>/.C>/' > tmp mv tmp $i done # for i in `ls *.c` do a=`echo $i | sed "s/\.c$/.C/"` mv $i $a done SHAR_EOF chmod +x 'c2C' fi # end of overwriting check if test -f 'c2cpp' then echo shar: will not over-write existing file "'c2cpp'" else cat << \SHAR_EOF > 'c2cpp' #!/bin/sh SRC_DIR=Src cd ../$SRC_DIR for i in s_adapt.h set.h stack.h vector.h vstack.h heap.h atomic.h div.h passbuck.h pointer.h regproc.h rule.h samediv.h userint.h do cat $i | sed 's/\.c>/.cpp>/' > tmp mv tmp $i done # for i in `ls *.c` do a=`echo $i | sed "s/\.c$/.cpp/"` mv $i $a done SHAR_EOF chmod +x 'c2cpp' fi # end of overwriting check if test -f 'mkfile.decalpha' then echo shar: will not over-write existing file "'mkfile.decalpha'" else cat << \SHAR_EOF > 'mkfile.decalpha' .SUFFIXES: .o .C .C.o: ; $(CC) $(CFLAGS) -c $*.C CC = cxx CFLAGS = -I. libdir = -L. libs = -lcubpack -lm MYTESTPROG = main.o OBJS = \ deccxxtp.o \ point2D.o \ C2.o \ C2dv2.o \ C2dv4.o \ C2interf.o \ C2prc.o \ C2rule13.o \ C2toS2.o \ C2togr.o \ E2tostrp.o \ E2.o \ E2adapt.o \ E2interf.o \ E2sec.o \ E2secitf.o \ E2secprc.o \ S2.o \ S2adapt.o \ S2interf.o \ S2rule13.o \ T2.o \ T2dv4.o \ T2interf.o \ T2rule13.o \ T2tops.o \ atomreg.o \ boolean.o \ chrono.o \ compreg.o \ eval_ctr.o \ geometry.o \ gr.o \ gritf.o \ gs.o \ gsitf.o \ gsprc.o \ integran.o \ integrat.o \ invert.o \ outS2.o \ outS2itf.o \ polC2.o \ polC2itf.o \ polC2prc.o \ ps.o \ psitf.o \ refcount.o \ regcoll.o \ reginfo.o \ region.o \ semstitf.o \ semistrp.o \ sttosmst.o \ strip.o \ stripitf.o \ translat.o \ trnsfrm.o all:: libcubpack.a libcubpack.a: $(OBJS) ar rus libcubpack.a $(OBJS) tst: $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o tst clean: /bin/rm -f *.o tst core SHAR_EOF fi # end of overwriting check if test -f 'mkfile.gn1' then echo shar: will not over-write existing file "'mkfile.gn1'" else cat << \SHAR_EOF > 'mkfile.gn1' CC = gcc CFLAGS = -x c++ -I. # COPTIONS = -DEGTRUSAGE COPTIONS = libdir = -L. libs = -lcubpack -lm -lg++ MYTESTPROG = main.o .c.o: ; $(CC) $(CFLAGS) -c $*.c chrono.o: chrono.c $(CC) $(CFLAGS) $(COPTIONS) -c chrono.c OBJS = \ point2D.o \ C2.o \ C2dv2.o \ C2dv4.o \ C2interf.o \ C2prc.o \ C2rule13.o \ C2toS2.o \ C2togr.o \ E2tostrp.o \ E2.o \ E2adapt.o \ E2interf.o \ E2sec.o \ E2secitf.o \ E2secprc.o \ S2.o \ S2adapt.o \ S2interf.o \ S2rule13.o \ T2.o \ T2dv4.o \ T2interf.o \ T2rule13.o \ T2tops.o \ atomreg.o \ boolean.o \ chrono.o \ compreg.o \ eval_ctr.o \ geometry.o \ gr.o \ gritf.o \ gs.o \ gsitf.o \ gsprc.o \ integran.o \ integrat.o \ invert.o \ outS2.o \ outS2itf.o \ polC2.o \ polC2itf.o \ polC2prc.o \ ps.o \ psitf.o \ refcount.o \ regcoll.o \ reginfo.o \ region.o \ semstitf.o \ semistrp.o \ sttosmst.o \ strip.o \ stripitf.o \ translat.o \ trnsfrm.o all:: libcubpack.a libcubpack.a: $(OBJS) ar ru libcubpack.a $(OBJS) ranlib libcubpack.a tst: $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o tst clean: /bin/rm -f *.o tst core SHAR_EOF fi # end of overwriting check if test -f 'mkfile.gn2' then echo shar: will not over-write existing file "'mkfile.gn2'" else cat << \SHAR_EOF > 'mkfile.gn2' CC = gcc CFLAGS = -x c++ -I. -fno-implicit-templates # COPTIONS = -DEGTRUSAGE COPTIONS = libdir = -L. libs = -lcubpack -lm -lg++ MYTESTPROG = main.o .c.o: ; $(CC) $(CFLAGS) -c $*.c chrono.o: chrono.c $(CC) $(CFLAGS) $(COPTIONS) -c chrono.c OBJS = \ point2D.o \ C2.o \ C2dv2.o \ C2dv4.o \ C2interf.o \ C2prc.o \ C2rule13.o \ C2toS2.o \ C2togr.o \ E2tostrp.o \ E2.o \ E2adapt.o \ E2interf.o \ E2sec.o \ E2secitf.o \ E2secprc.o \ S2.o \ S2adapt.o \ S2interf.o \ S2rule13.o \ T2.o \ T2dv4.o \ T2interf.o \ T2rule13.o \ T2tops.o \ atomreg.o \ boolean.o \ chrono.o \ compreg.o \ eval_ctr.o \ geometry.o \ gr.o \ gritf.o \ gs.o \ gsitf.o \ gsprc.o \ integran.o \ integrat.o \ invert.o \ outS2.o \ outS2itf.o \ polC2.o \ polC2itf.o \ polC2prc.o \ ps.o \ psitf.o \ refcount.o \ regcoll.o \ reginfo.o \ region.o \ semstitf.o \ semistrp.o \ sttosmst.o \ strip.o \ stripitf.o \ translat.o \ trnsfrm.o \ gnu262tp.o all:: libcubpack.a libcubpack.a: $(OBJS) ar rus libcubpack.a $(OBJS) tst: $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o tst clean: /bin/rm -f *.o tst core SHAR_EOF fi # end of overwriting check if test -f 'mkfile.gn3' then echo shar: will not over-write existing file "'mkfile.gn3'" else cat << \SHAR_EOF > 'mkfile.gn3' CC = g++ CFLAGS = -I. -fno-implicit-templates # COPTIONS = -DEGTRUSAGE COPTIONS = libdir = -L. libs = -lcubpack -lm MYTESTPROG = main.o .c.o: ; $(CC) $(CFLAGS) -c $*.c chrono.o: chrono.c $(CC) $(CFLAGS) $(COPTIONS) -c chrono.c OBJS = \ point2D.o \ C2.o \ C2dv2.o \ C2dv4.o \ C2interf.o \ C2prc.o \ C2rule13.o \ C2toS2.o \ C2togr.o \ E2tostrp.o \ E2.o \ E2adapt.o \ E2interf.o \ E2sec.o \ E2secitf.o \ E2secprc.o \ S2.o \ S2adapt.o \ S2interf.o \ S2rule13.o \ T2.o \ T2dv4.o \ T2interf.o \ T2rule13.o \ T2tops.o \ atomreg.o \ boolean.o \ chrono.o \ compreg.o \ eval_ctr.o \ geometry.o \ gr.o \ gritf.o \ gs.o \ gsitf.o \ gsprc.o \ integran.o \ integrat.o \ invert.o \ outS2.o \ outS2itf.o \ polC2.o \ polC2itf.o \ polC2prc.o \ ps.o \ psitf.o \ refcount.o \ regcoll.o \ reginfo.o \ region.o \ semstitf.o \ semistrp.o \ sttosmst.o \ strip.o \ stripitf.o \ translat.o \ trnsfrm.o \ gnu262tp.o all:: libcubpack.a libcubpack.a: $(OBJS) ar rus libcubpack.a $(OBJS) tst: $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o tst clean: /bin/rm -f *.o tst core SHAR_EOF fi # end of overwriting check if test -f 'mkfile.rs6000' then echo shar: will not over-write existing file "'mkfile.rs6000'" else cat << \SHAR_EOF > 'mkfile.rs6000' CC = xlC -+ #CFLAGS = -O CFLAGS = -I. libdir = libs = -lm MYTESTPROG = main.o .c.o: ; $(CC) $(CFLAGS) -c $*.c OBJS = \ point2D.o \ C2.o \ C2dv2.o \ C2dv4.o \ C2interf.o \ C2prc.o \ C2rule13.o \ C2toS2.o \ C2togr.o \ E2tostrp.o \ E2.o \ E2adapt.o \ E2interf.o \ E2sec.o \ E2secitf.o \ E2secprc.o \ S2.o \ S2adapt.o \ S2interf.o \ S2rule13.o \ T2.o \ T2dv4.o \ T2interf.o \ T2rule13.o \ T2tops.o \ atomreg.o \ boolean.o \ chrono.o \ compreg.o \ eval_ctr.o \ geometry.o \ gr.o \ gritf.o \ gs.o \ gsitf.o \ gsprc.o \ integran.o \ integrat.o \ invert.o \ outS2.o \ outS2itf.o \ polC2.o \ polC2itf.o \ polC2prc.o \ ps.o \ psitf.o \ refcount.o \ regcoll.o \ reginfo.o \ region.o \ semstitf.o \ semistrp.o \ sttosmst.o \ strip.o \ stripitf.o \ translat.o \ trnsfrm.o all:: $(OBJS) tst: $(MYTESTPROG) $(CC) $(CFLAGS) $(MYTESTPROG) $(OBJS) $(libdir) $(libs) -o tst clean: /bin/rm -f *.o run tst core SHAR_EOF fi # end of overwriting check if test -f 'mkfile.solaris' then echo shar: will not over-write existing file "'mkfile.solaris'" else cat << \SHAR_EOF > 'mkfile.solaris' CC = CC # If you have CC version SC3.0 of 15 Dec 1993, then use the following # to activated the workaround # CFLAGS = -I. -DSOLARIS # If you have CC version SC3.0.1 of 13 Jul 1994, then use CFLAGS = -I. libdir = -L. libs = -lcubpack -lm MYTESTPROG = main.o .c.o: ; $(CC) $(CFLAGS) -c $*.c OBJS = \ point2D.o \ C2.o \ C2dv2.o \ C2dv4.o \ C2interf.o \ C2prc.o \ C2rule13.o \ C2toS2.o \ C2togr.o \ E2tostrp.o \ E2.o \ E2adapt.o \ E2interf.o \ E2sec.o \ E2secitf.o \ E2secprc.o \ S2.o \ S2adapt.o \ S2interf.o \ S2rule13.o \ T2.o \ T2dv4.o \ T2interf.o \ T2rule13.o \ T2tops.o \ atomreg.o \ boolean.o \ chrono.o \ compreg.o \ eval_ctr.o \ geometry.o \ gr.o \ gritf.o \ gs.o \ gsitf.o \ gsprc.o \ integran.o \ integrat.o \ invert.o \ outS2.o \ outS2itf.o \ polC2.o \ polC2itf.o \ polC2prc.o \ ps.o \ psitf.o \ refcount.o \ regcoll.o \ reginfo.o \ region.o \ semstitf.o \ semistrp.o \ sttosmst.o \ strip.o \ stripitf.o \ translat.o \ trnsfrm.o all:: libcubpack.a libcubpack.a: $(OBJS) $(CC) -xar -o libcubpack.a $(OBJS) tst: $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o tst clean: /bin/rm -f *.o run tst core /bin/rm -r -f Templates.DB SHAR_EOF fi # end of overwriting check if test -f 'mkfile.tc' then echo shar: will not over-write existing file "'mkfile.tc'" else cat << \SHAR_EOF > 'mkfile.tc' # Makefile for Cubpack++ installation using Turbo C++ under MS-DOS # File suffixes C = .c # C++ code H = .h # C++ header O = .obj # Compiled code X = .exe # Executable # File delete utility RM = del # Compiler name and flags CC = tcc # Must be 3.0 or later CFLAGS = -v -P -I. -ml # This combination works. Many others don't. # COPTIONS = -DEGTRUSAGE COPTIONS = MYTESTPROG = main$(O) $(C)$(O): $(CC) $(CFLAGS) -c $*$(C) chrono$(O): chrono$(C) $(CC) $(CFLAGS) $(COPTIONS) -c chrono$(C) main$(O): main$(C) $(CC) $(CFLAGS) -c main$(C) OBJS = \ point2D$(O) \ C2$(O) \ C2dv2$(O) \ C2dv4$(O) \ C2interf$(O) \ C2prc$(O) \ C2rule13$(O) \ C2toS2$(O) \ C2togr$(O) \ E2tostrp$(O) \ E2$(O) \ E2adapt$(O) \ E2interf$(O) \ E2sec$(O) \ E2secitf$(O) \ E2secprc$(O) \ S2$(O) \ S2adapt$(O) \ S2interf$(O) \ S2rule13$(O) \ T2$(O) \ T2dv4$(O) \ T2interf$(O) \ T2rule13$(O) \ T2tops$(O) \ atomreg$(O) \ boolean$(O) \ chrono$(O) \ compreg$(O) \ eval_ctr$(O) \ geometry$(O) \ gr$(O) \ gritf$(O) \ gs$(O) \ gsitf$(O) \ gsprc$(O) \ integran$(O) \ integrat$(O) \ invert$(O) \ outS2$(O) \ outS2itf$(O) \ polC2$(O) \ polC2itf$(O) \ polC2prc$(O) \ ps$(O) \ psitf$(O) \ refcount$(O) \ regcoll$(O) \ reginfo$(O) \ region$(O) \ semstitf$(O) \ semistrp$(O) \ sttosmst$(O) \ strip$(O) \ stripitf$(O) \ translat$(O) \ trnsfrm$(O) all: cubpack.lib cubpack.lib: $(OBJS) tlib.rsp tlib cubpack @tlib.rsp tst$(X): $(MYTESTPROG) $(CC) $(CFLAGS) -etst$(X) cubpack.lib $(MYTESTPROG) tst.out: tst$(X) tst > tst.out type tst.out clean: $(RM) *$(O) $(RM) tst$(X) $(RM) cubpack.lib $(RM) tlib.rsp $(RM) *.out tlib.rsp: # TLIB response file copy &&| /C & /P64 & +point2D$(O) & +C2$(O) & +C2dv2$(O) & +C2dv4$(O) & +C2interf$(O) & +C2prc$(O) & +C2rule13$(O) & +C2toS2$(O) & +C2togr$(O) & +E2tostrp$(O) & +E2$(O) & +E2adapt$(O) & +E2interf$(O) & +E2sec$(O) & +E2secitf$(O) & +E2secprc$(O) & +S2$(O) & +S2adapt$(O) & +S2interf$(O) & +S2rule13$(O) & +T2$(O) & +T2dv4$(O) & +T2interf$(O) & +T2rule13$(O) & +T2tops$(O) & +atomreg$(O) & +boolean$(O) & +chrono$(O) & +compreg$(O) & +eval_ctr$(O) & +geometry$(O) & +gr$(O) & +gritf$(O) & +gs$(O) & +gsitf$(O) & +gsprc$(O) & +integran$(O) & +integrat$(O) & +invert$(O) & +outS2$(O) & +outS2itf$(O) & +polC2$(O) & +polC2itf$(O) & +polC2prc$(O) & +ps$(O) & +psitf$(O) & +refcount$(O) & +regcoll$(O) & +reginfo$(O) & +region$(O) & +semstitf$(O) & +semistrp$(O) & +sttosmst$(O) & +strip$(O) & +stripitf$(O) & +translat$(O) & +trnsfrm$(O) | tlib.rsp SHAR_EOF fi # end of overwriting check if test -f 'Mk.decalpha' then echo shar: will not over-write existing file "'Mk.decalpha'" else cat << \SHAR_EOF > 'Mk.decalpha' CUBPACK = /home/ronald/Research/Cubpack++ MYTESTPROG = tmp.o TARGET = tst ######################################################### LIB_DIR=$(CUBPACK)/Src INCLUDE_DIR=$(CUBPACK)/Src CC = cxx CFLAGS = -I$(INCLUDE_DIR) libdir = -L$(LIB_DIR) libs = -lcubpack -lm .SUFFIXES: .o .C .C.o: ; $(CC) $(CFLAGS) -c $*.C $(TARGET): $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o $(TARGET) clean: /bin/rm -f *.o $(TARGET) core SHAR_EOF fi # end of overwriting check if test -f 'Mk.gn1' then echo shar: will not over-write existing file "'Mk.gn1'" else cat << \SHAR_EOF > 'Mk.gn1' CUBPACK = /home/ronald/Research/Cubpack++ MYTESTPROG = vb5.o TARGET = tst ######################################################### LIB_DIR=$(CUBPACK)/Src INCLUDE_DIR=$(CUBPACK)/Src CC = gcc CFLAGS = -x c++ -I$(INCLUDE_DIR) libdir = -L$(LIB_DIR) libs = -lcubpack -lm -lg++ .c.o: ; $(CC) $(CFLAGS) -c $*.c $(TARGET): $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o $(TARGET) clean: /bin/rm -f *.o $(TARGET) core SHAR_EOF fi # end of overwriting check if test -f 'Mk.gn2' then echo shar: will not over-write existing file "'Mk.gn2'" else cat << \SHAR_EOF > 'Mk.gn2' CUBPACK = /home/ronald/Research/Cubpack++ MYTESTPROG = vb5.o TARGET = tst ######################################################### LIB_DIR=$(CUBPACK)/Src INCLUDE_DIR=$(CUBPACK)/Src CC = gcc CFLAGS = -x c++ -I$(INCLUDE_DIR) -fno-implicit-templates libdir = -L$(LIB_DIR) libs = -lcubpack -lm -lg++ .c.o: ; $(CC) $(CFLAGS) -c $*.c $(TARGET): $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o $(TARGET) clean: /bin/rm -f *.o $(TARGET) core SHAR_EOF fi # end of overwriting check if test -f 'Mk.gn3' then echo shar: will not over-write existing file "'Mk.gn3'" else cat << \SHAR_EOF > 'Mk.gn3' CUBPACK = /home/ronald/Research/Cubpack++ MYTESTPROG = vb5.o TARGET = tst ######################################################### LIB_DIR=$(CUBPACK)/Src INCLUDE_DIR=$(CUBPACK)/Src CC = g++ CFLAGS = -I$(INCLUDE_DIR) -fno-implicit-templates libdir = -L$(LIB_DIR) libs = -lcubpack -lm .c.o: ; $(CC) $(CFLAGS) -c $*.c $(TARGET): $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o $(TARGET) clean: /bin/rm -f *.o $(TARGET) core SHAR_EOF fi # end of overwriting check if test -f 'Mk.solaris' then echo shar: will not over-write existing file "'Mk.solaris'" else cat << \SHAR_EOF > 'Mk.solaris' CUBPACK = /home/ronald/Cubpack++ MYTESTPROG = vb7.o TARGET = tst ######################################################### LIB_DIR=$(CUBPACK)/Src INCLUDE_DIR=$(CUBPACK)/Src CC = CC CFLAGS = -I$(INCLUDE_DIR) libdir = -L$(LIB_DIR) libs = -lcubpack -lm .c.o: ; $(CC) $(CFLAGS) -c $*.c $(TARGET): $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o $(TARGET) clean: /bin/rm -f *.o $(TARGET) core SHAR_EOF fi # end of overwriting check if test -f 'Mk.tc' then echo shar: will not over-write existing file "'Mk.tc'" else cat << \SHAR_EOF > 'Mk.tc' # Makefile for running Cubpack++ applications using Turbo C++ under MS-DOS CUBPACK = D:\CUBPACK MYTESTPROG = C2toquad.obj quadril.obj quadritf.obj testquad.obj TARGET = tst.exe # You should not need to change anything after this ############################################################################# LIB_DIR=$(CUBPACK)/Src INCLUDE_DIR=$(CUBPACK)/Src # File suffixes C = .c # C++ code H = .h # C++ header O = .obj # Compiled code X = .exe # Executable # File delete utility RM = del # Compiler name and flags. The given compiler options work with # Turbo C++ 3.0. Many others don't. CC = tcc CFLAGS = -v -P -I$(INCLUDE_DIR) -ml libdir = -L$(LIB_DIR) $(C)$(O): $(CC) $(CFLAGS) -c $*$(C) >> compiler.log $(TARGET): $(MYTESTPROG) $(CC) $(CFLAGS) -e$(TARGET) $(libdir) cubpack.lib $(MYTESTPROG) clean: $(RM) *.$(O) $(TARGET) SHAR_EOF fi # end of overwriting check cd .. if test -f 'README.1st' then echo shar: will not over-write existing file "'README.1st'" else cat << \SHAR_EOF > 'README.1st' ////////////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools (ronald@cs.kuleuven.ac.be) // // Dirk Laurie (dirk@calvyn.puk.ac.za) // // Luc Pluym // // // ////////////////////////////////////////////////////////////// // // // Last modification of source code: April 4, 1996 // // Last modification of text : May 23, 1996 // // // ////////////////////////////////////////////////////////////// This version is available by anonymous ftp from ftp.cs.kuleuven.ac.be in /pub/NumAnal-ApplMath/Cubpack/all.tar.gz or /pub/NumAnal-ApplMath/Cubpack/all.zip and also by using a World Wide Web browser such as xmosaic via "http://www.cs.kuleuven.ac.be/~ronald/". If you tell us who you are, we promise to keep you informed about corrections, updates and extensions. If you need assistance, please always mention the two dates above. The next file to read is named INSTALL. Enjoy Cubpack++ ! SHAR_EOF fi # end of overwriting check if test -f 'README.DOS' then echo shar: will not over-write existing file "'README.DOS'" else cat << \SHAR_EOF > 'README.DOS' [ If you are using UNIX, read the file README instead of this one. ] 23 May 1996 The current version of Cubpack++ is Version 0.1h = 1.0 ====================================================== |The complete Cubpack++ distribution is in the file all.zip . | |Switch your ftp to binary mode before you get this file. | |Once you have this file on your machine, you have to execute | unzip -aL all.zip |You now have a directory named CUBPACK . --------------------------------------------------------------------- Start by reading CUBPACK\DOCUMENT\PAPER.* and CUBPACK\DOCUMENT\USERMAN.* and CUBPACK\README.1ST Enjoy Cubpack++! SHAR_EOF fi # end of overwriting check if test -f 'README' then echo shar: will not over-write existing file "'README'" else cat << \SHAR_EOF > 'README' [ If you are using MSDOS, read the file README.DOS instead of this one. ] 23 May 1996 The current version of Cubpack++ is Version 0.1h = 1.0 ====================================================== First check which decompression program is available on your machine. IF you have gunzip and tar THEN |The complete Cubpack++ distribution is in the file all.tar.gz . |(Yes, all patches are already included in this.) | |Switch your ftp to binary mode before you get this file. | |Once you have this file on your machine, you have to execute | gunzip all.tar.gz | tar xf all.tar |You now have a directory named Cubpack++ . --------------------------------------------------------------------- IF you have unzip THEN |The complete Cubpack++ distribution is in the file all.zip . | |Switch your ftp to binary mode before you get this file. | |Once you have this file on your machine, you have to execute | unzip all.zip |You now have a directory named Cubpack . --------------------------------------------------------------------- Start by reading Cubpack{++}/Documentation/paper.* and Cubpack{++}/Documentation/userman.* and Cubpack{++}/README.1st Enjoy Cubpack++! SHAR_EOF fi # end of overwriting check if test -f 'CONTENTS' then echo shar: will not over-write existing file "'CONTENTS'" else cat << \SHAR_EOF > 'CONTENTS' What you find in the current directory -------------------------------------- README.1st : information you should first look at CONTENTS : this file INSTALL : hints to get Cubpack++ up and running Makefile : primitive Makefile for unix systems INSTALL.BAT : installation for MS-DOS systems TESTCASE.BAT : running test cases on MS-DOS systems quick_install : script invoked by `make install' quick_run : script invoked by `make run' Src : directory with all source code Documentation : directory with documentation See Documentation/CONTENTS for details. Drivers : directory with example programs See Documentation/CONTENTS for details. Tools : directory with unix tools to change suffixes and makefiles for several systems See Documentation/CONTENTS for details. Note that on MSDOS systems, the file names are all in the same case and truncated to conform to the 8.3 naming restriction. We have taken care to ensure that no conflicts arise. SHAR_EOF fi # end of overwriting check if test -f 'INSTALL' then echo shar: will not over-write existing file "'INSTALL'" else cat << \SHAR_EOF > 'INSTALL' How to get Cubpack++ up and running? ------------------------------------ 1) Getting the suffix right --------------------------- At this stage of C++, a uniform installation procedure is impossible (one of the reasons is that templates are treated differently by different systems). With this file we provide some help. At the moment all source code is located in one directory, named `Src'. All C++ source files have suffix .c on the distribution. Start with verifying what suffix your compiler expects. - If this is .c, you have nothing to change. (This is the case with e.g. gcc (gnu), xlC (IBM), CC (Sun). With some other compilers (e.g. Turbo C++) this is not the default, but you can specify it with a compiler option.) - If there is absolutely no way to persuade your compiler to accept .c files as C++ code, you have to change not only the suffixes of the files itself but also inside the header files of template classes where .c files are included. For those working on Unix systems, we provided some shell scripts to do this. These are located in the directory `Tools'. Change your current working directory to `Tools', learn from the file `CONTENTS' which script you need and execute if from where you are. Other users can learn from these scripts (e.g. c2C) which files they have to modify. 2) Compile the package ---------------------- Those working on a Unix system can now try to execute make install in the parent directory. Then you can choose between the several compilers we used. Those working on MSDOS can now try to execute INSTALL in the parent directory, and choose a compiler. Now you can go for coffee or lunch, depending on your platform. Some timings to give you an idea: IBM RS6000 AIX 3.2.5, xlC compiler - 181.0u 34.0s 6:09 58% i586 90 MHz Linux1.2.4, g++ compiler (gcc v2.7.2) - 208.79u 36.69s 4:29.19 91% DECalpha OSF/1 V1.3, cxx compiler - 272.08u 62.45s 13:00 42% Sparccenter 1000, SunOS 5.3, g++ compiler ( gcc v2.7.2) - 296.0u 49.0s 7:28 76% DECstation 5000/240 ULTRIX V4.4 , g++ compiler (gcc v2.7.2) - 366.3u 85.6s 15:31 48% Sparccenter 1000, SunOS 5.3, CC compiler - 286.0u 186.0s 28:49 27% i486 33MHz MS-DOS Turbo C++ 3.0 compiler - 7min38s elapsed time HP, HP-UX, g++ compiler (gcc v2.6.0) - 499.2u 41.3s 10:36 84% DECstation 5000/120 ULTRIX V4.4 , g++ compiler (gcc v2.7.2) - 747.8u 148.6s 19:45 75% --------------- | If you use one of the platforms on which we tested Cubpack++ no | problem should occur. If it does, please let us know. | | If you use another Unix platform, writing a specific makefile (by | modifying one of those we provided in the directory Tools) and | extending the script quick_install, should be straitforward. If | you are not feeling that familiar with makefiles, please ask and | we will help. | | If you are not using a Unix platform, we hope you know enough | about your system to get Cubpack++ at work. Probably you can | still find useful information in the makefiles we provided in the | directory Tools. --------------- This was the time consuming part which never has to be done again if you continue to use the same platform. 3) Trying some examples ----------------------- Those working on a Unix system can now try to execute make run in the parent directory. You are requested to select a main program. You can choose among the examples we provided or enter the name of your own main program. When the compilation finished successfully, an executable named `tst' is available in the parent directory. Those working on MSDOS can now try to execute TESTCASE n in the parent directory, where n is a number in the range 1 to 11. (Executing TESTCASE without a number will give a menu.) The corresponding main program will be copied into the CODE directory, compiled, linked and executed. The output will be written to the file CODE\VBn.OUT and may be compared with EXAMPLES\VBn.OUT. --------------- | If you have problems linking with libcubpack.a you can replace | this with $(OBJS) in the lines that define tst. --------------- 4) Using Cubpack++ ------------------ It is of course far from ideal that the user program has to be copied into the directory where the Cubpack++ source code is located. Because templates are treated differently on different platforms, we cannot (yet) provide a good alternative for all platforms. The ideal solution we have in mind can be realized for those using the gnu gcc compiler, the cxx compiler on DECalpha OSF or the CC compiler on Solaris. In the directory Tools we provided a Makefile which a user can copy into his working directory. He should modify the values of the constants CUBPACK, MYTESTPROG and TARGET in the beginning of these files, depending on his situation and wishes. 5) Cleaning up -------------- To remove all object files, archive, the template data base, execute make clean in the parent directory. 6) In case of problems ---------------------- In case of installation problems, please don't wait to contact one of the authors: ----------------------------------------------------------------------------- | Name : Ronald Cools | | Email : ronald.cools@cs.kuleuven.ac.be Katholieke Universiteit Leuven | | ronald@cs.kuleuven.ac.be Department of Computer Science | | Celestijnenlaan 200 A | | Fax : +(32) 16 32 79 96 B-3001 HEVERLEE | | Phone : +(32) 16 32 75 62 BELGIUM | ----------------------------------------------------------------------------- For MSDOS installation, contact: ----------------------------------------------------------------------------- | Name : Dirk Laurie | | Email : dirk@calvyn.puk.ac.za Potchefstroomse Universiteit vir CHO | | na.dlaurie@na-net.ornl.gov Department of Mathematics | | P.O.Box 1174 | | Fax : +(27) 16 807 3614 1900 VANDERBIJLPARK | | Phone : +(27) 16 807 3600 South Africa | ----------------------------------------------------------------------------- SHAR_EOF fi # end of overwriting check if test -f 'INSTALL.BAT' then echo shar: will not over-write existing file "'INSTALL.BAT'" else cat << \SHAR_EOF > 'INSTALL.BAT' @echo off if "%1"=="" goto 1 rem Quick installation on MS-DOS systems using Turbo C++ copy tools\mkfile.%1 code\makefile echo --------------------------------------------------- echo Compilation will now start. This will take a while. echo --------------------------------------------------- chdir code make clean rem The REM'd lines below record start/finish times, and require an rem empty file called CR in the root directory rem type ..\cr|time>time make all rem type ..\cr|time>>time chdir .. goto 2 :1 echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ echo ³ Available makefiles under MSDOS ³ echo ³ ³ echo ³ tc Turbo C++ version 3.00 and later ³ echo ³ gnu Gnu C++ version 2.6.0 and earlier ³ echo ³ gn2 Gnu C++ version 2.6.2 and later ³ echo ³ ³ echo ³ Type 'install OPTION' at the DOS prompt to install ³ echo ³ the chosen OPTION; e.g. 'install tc'. ³ echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ :2 SHAR_EOF fi # end of overwriting check if test -f 'TESTCASE.BAT' then echo shar: will not over-write existing file "'TESTCASE.BAT'" else cat << \SHAR_EOF > 'TESTCASE.BAT' @echo off if "%1"=="" goto 1 copy examples\vb%1.c code\main.c chdir code del main.obj del tst.* make tst.out rename tst.out vb%1.out chdir .. goto 2 :1 echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ echo ³ Available examples for Cubpack++ ³ echo ³ ³ echo ³ vb1 CIRCLE ³ echo ³ vb2 PLANE_SECTOR (quadrant) ³ echo ³ vb3 PLANE_SECTOR (wedge) ³ echo ³ vb4 GENERALIZED_RECTANGLE (parabola) ³ echo ³ vb5 GENERALIZED_RECTANGLE (lemniscate) ³ echo ³ vb6 SEMI_INFINITE_STRIP ³ echo ³ vb7 SEMI_INFINITE_STRIP ³ echo ³ vb8 INFINITE_STRIP ³ echo ³ vb9 RECTANGLE ³ echo ³ vb10 TRIANGLE ³ echo ³ vb10 TRIANGLE ³ echo ³ vb11 PLANE_SECTOR (wedge) ³ echo ³ ³ echo ³ Type 'testcase 1' etc. at the DOS ³ echo ³ prompt to activate one of these options. ³ echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ :2 SHAR_EOF fi # end of overwriting check if test -f 'quick_install' then echo shar: will not over-write existing file "'quick_install'" else cat << \SHAR_EOF > 'quick_install' #!/bin/sh # # Constants that must be adjusted # SRC_DIR=Src TOOL_DIR=Tools # ####################################################################### echo "This script should make it easier for you to install Cubpack++." echo "An appropriate makefile is selected based on the brand of unix" echo "you use." echo "Available are" echo " (1) IBM RS6000 - AIX - XlC compiler" echo " (2) DEC alpha - DEC OSF - cxx compiler" echo " (3) Unix gnu - gcc or g++ compiler" echo " (4) Solaris 2.* - CC compiler version 4.*" echo echo "Make your choice. \c" read x case $x in 1) cp $TOOL_DIR/mkfile.rs6000 $SRC_DIR/makefile;; 2) cp $TOOL_DIR/mkfile.decalpha $SRC_DIR/makefile;; 3) OLDVERSION1=2.6.0 OLDVERSION2=2.7.0 gcc -v 2> tmp$$ v=`tail -1 tmp$$ | sed "s/^.*version //" | sed "s/ .*$//"` /bin/rm tmp$$ echo "You are using gcc version $v" a=`expr "$v" ">" "$OLDVERSION2"` if test $a = "1" then cp $TOOL_DIR/mkfile.gn3 $SRC_DIR/makefile else a=`expr "$v" ">" "$OLDVERSION1"` if test $a = "1" then cp $TOOL_DIR/mkfile.gn2 $SRC_DIR/makefile else cp $TOOL_DIR/mkfile.gn1 $SRC_DIR/makefile fi fi;; 4) cp $TOOL_DIR/mkfile.solaris $SRC_DIR/makefile;; *) echo "This was an illegal choice!" exit 1 ;; esac ####################################################################### if test -f .lastinstall then y=`cat .lastinstall` /bin/rm -f .lastinstall if test $x != $y then echo "Removing the remains of a previous compilation which might interfere ..." cd $SRC_DIR make clean cd .. echo "... Done." fi fi echo $x > .lastinstall ####################################################################### echo "Do you want to edit the makefile first? [n/y] \c" read a case $a in [Yy]*) vi $SRC_DIR/makefile ;; esac ####################################################################### # echo echo "Compilation will now start. This will take a while." echo cd $SRC_DIR make all SHAR_EOF chmod +x 'quick_install' fi # end of overwriting check if test -f 'quick_run' then echo shar: will not over-write existing file "'quick_run'" else cat << \SHAR_EOF > 'quick_run' #!/bin/sh # # Constants that must be adjusted # SRC_DIR=Src # ####################################################################### if test -f .lastinstall then y=`cat .lastinstall` case $y in 1|3|4) SUFFIX=c;; 2) SUFFIX=C;; *) echo "Unknown compiler used for installation." exit 1;; esac else echo "make install must be executed first." exit 1 fi ####################################################################### echo "Choose a main program from the following list." echo cat Drivers/EXAMPLES echo echo "Make your choice. \c" read a case $a in 0) echo "Give the name of your example file." echo "(Full pathname from current position.)" read a cp $a $SRC_DIR/main.$SUFFIX ;; [1-9]|1[0-8]) cp Drivers/vb${a}.c $SRC_DIR/main.$SUFFIX ;; *) echo "That was an illegal choice!" exit 1 ;; esac ####################################################################### # echo echo "Compilation will now start." echo cd $SRC_DIR make tst SHAR_EOF chmod +x 'quick_run' fi # end of overwriting check if test -f 'Makefile' then echo shar: will not over-write existing file "'Makefile'" else cat << \SHAR_EOF > 'Makefile' SRC_DIR = Src install: ./quick_install run: ./quick_run mv $(SRC_DIR)/tst . echo 'executable "tst" is available.' clean: cd $(SRC_DIR) ; /bin/rm -f *.o tst core makefile cd $(SRC_DIR) ; /bin/rm -f main.c libcubpack.a cd $(SRC_DIR) ; /bin/rm -r -f ptrepository tempinc Templates.DB SHAR_EOF fi # end of overwriting check if test ! -d 'Src' then mkdir 'Src' fi cd 'Src' if test -f 'C2.c' then echo shar: will not over-write existing file "'C2.c'" else cat << \SHAR_EOF > 'C2.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File C2.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////// #include #include ////////////////////////////////////////////// Parallelogram::Parallelogram (const Point& p1,const Point& p2,const Point& p3) : Geometry(2),Vertices(3),TheVolumeKnown(False) { Vertices[0] = p1; Vertices[1] = p2; Vertices[2] = p3; } ////////////////////////////////////////////// void Parallelogram::ComputeVolume() { TheVolume = fabs( ((Vertices[0][0]*Vertices[1][1]-Vertices[1][0]*Vertices[0][1]) +(Vertices[1][0]*Vertices[2][1]-Vertices[2][0]*Vertices[1][1]) +(Vertices[2][0]*Vertices[0][1]-Vertices[0][0]*Vertices[2][1])) ); TheVolumeKnown = True; } /////////////////////////////////////////////// const Point& Parallelogram::Vertex(int i) const { return Vertices[i]; } ////////////////////////////////////////////////// real Parallelogram::Volume() const { Parallelogram* P = (Parallelogram*) this; if (!TheVolumeKnown) { P->ComputeVolume(); }; return P->TheVolume; } /////////////////////////////////////////////// void Parallelogram::Volume(real v) { TheVolume = v; TheVolumeKnown = True; } //////////////////////////////////////////////// //Processor* //Parallelogram::DefaultProcessor() //const //{ //return new SimpleAdaptive //(new Parallelogram_Rule13, //new Parallelogram_Divide4); //} /////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'C2dv2.c' then echo shar: will not over-write existing file "'C2dv2.c'" else cat << \SHAR_EOF > 'C2dv2.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////////// //File C2dv2.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(long lines split) ///////////////////////////////////////////////// #include #include #include #include ////////////////////////////////////////////////// void Parallelogram_Divide2::Apply (const Parallelogram& t, Stack& Offspring, const Vector& DiffOrder) { Point m12 = (t.Vertex(0)+t.Vertex(DiffOrder[0]))/2; Point m34 = t.Vertex(DiffOrder[1])+(t.Vertex(DiffOrder[0])-t.Vertex(0))/2; Parallelogram* t1 = new Parallelogram(t.Vertex(0),m12,t.Vertex(DiffOrder[1])); Parallelogram* t2 = new Parallelogram(m12,t.Vertex(DiffOrder[0]),m34); Offspring.Push(t1); Offspring.Push(t2); } ////////////////////////////////////////////////// Parallelogram_Divide2::Parallelogram_Divide2() :SameShapeDivisor() { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'C2dv4.c' then echo shar: will not over-write existing file "'C2dv4.c'" else cat << \SHAR_EOF > 'C2dv4.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////////// //File C2dv4.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(long lines split) ///////////////////////////////////////////////// #include #include #include ////////////////////////////////////////////////// void Parallelogram_Divide4::Apply (const Parallelogram& t, Stack& Offspring, const Vector& DiffOrder) { Point m12 = (t.Vertex(0)+t.Vertex(1))/2; Point m13 = (t.Vertex(0)+t.Vertex(2))/2; Point m23 = (t.Vertex(2)+t.Vertex(1))/2; Point m24 = t.Vertex(1)+(t.Vertex(2)-t.Vertex(0))/2; Point m34 = t.Vertex(2)+(t.Vertex(1)-t.Vertex(0))/2; Parallelogram* t1 = new Parallelogram(t.Vertex(0),m12,m13); Parallelogram* t2 = new Parallelogram(m12,t.Vertex(1),m23); Parallelogram* t3 = new Parallelogram(m13,m23,t.Vertex(2)); Parallelogram* t4 = new Parallelogram(m23,m24,m34); Offspring.Push(t1); Offspring.Push(t2); Offspring.Push(t3); Offspring.Push(t4); } ////////////////////////////////////////////////// Parallelogram_Divide4::Parallelogram_Divide4() :SameShapeDivisor() { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'C2interf.c' then echo shar: will not over-write existing file "'C2interf.c'" else cat << \SHAR_EOF > 'C2interf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////// //File C2interf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(typedef introduced) //////////////////////////////////////////////// #include #include #include #include #include #include #include /////////////////////////////////////////////// typedef Rule RuleParallelogram; typedef SameShapeDivisor SameShapeDivisorParallelogram; PARALLELOGRAM::PARALLELOGRAM(const Point& p1, const Point& p2, const Point& p3) :USERINTERFACE() {Pointer R13(new Parallelogram_Rule13); Pointer D4(new Parallelogram_Divide4); Processor *SAP(new SimpleAdaptive(R13,D4)); StoreAtomic(new Parallelogram(p1,p2,p3),SAP); } /////////////////////////////////////////////// RECTANGLE::RECTANGLE(const Point& p1, const Point& p2, const Point& p3) :USERINTERFACE() { Error( fabs((p2-p1)*(p3-p1)) > 100*REAL_EPSILON, "Sides of RECTANGLE not orthogonal"); StoreAtomic(new Parallelogram(p1,p2,p3), //new SimpleAdaptive( //new Parallelogram_Rule13, //new Parallelogram_Divide4)); new Parallelogram_Processor); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'C2prc.c' then echo shar: will not over-write existing file "'C2prc.c'" else cat << \SHAR_EOF > 'C2prc.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //File C2prc.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(typedef introduced and long lines split) //////////////////////////////////////////////////////////// #include #include #include #include #include #include //////////////////////////////////////////////////////// Pointer < Parallelogram_Processor::RuleParallelogram > Parallelogram_Processor::TheRule = new Parallelogram_Rule13; Pointer < Parallelogram_Processor::SameShapeDivisorParallelogram > Parallelogram_Processor::TheDivisor2 = new Parallelogram_Divide2; Pointer < Parallelogram_Processor::SameShapeDivisorParallelogram > Parallelogram_Processor::TheDivisor4 = new Parallelogram_Divide4; //////////////////////////////////////////////////////// Parallelogram_Processor::Parallelogram_Processor() :TimesCalled(0), Diffs(2) { } ///////////////////////////////////////////////////////////// Parallelogram_Processor* Parallelogram_Processor::Descendant() const { Parallelogram_Processor* r = new Parallelogram_Processor; return r; } //////////////////////////////////////////////// void Parallelogram_Processor::Process( Stack& Offspring) { TimesCalled ++; if (TimesCalled == 1) { TheRule->ApplyWithDiffs(LocalIntegrand(),Geometry(),Integral(), AbsoluteError(),Diffs); Offspring.MakeEmpty(); return; }; if(TimesCalled == 2) { real NewVolume = Geometry().Volume()/2; Stack Parts; Vector DiffOrder(Diffs.Size()); const real difffac = 1.81818, difftreshold = 0.00004; if (max(Diffs[0],Diffs[1]) < difftreshold) { TheDivisor4->Apply(Geometry(),Parts,DiffOrder); NewVolume /=2; } else if (Diffs[0]>difffac*Diffs[1]) { DiffOrder[0] = 1 ; DiffOrder[1] = 2; TheDivisor2->Apply (Geometry(),Parts,DiffOrder); } else if (Diffs[1]>difffac*Diffs[0]) { DiffOrder[0] = 2; DiffOrder[1] =1; TheDivisor2->Apply (Geometry(),Parts,DiffOrder); } else { TheDivisor4->Apply(Geometry(),Parts,DiffOrder); NewVolume /=2; }; unsigned int N = Parts.Size(); for (unsigned int i =0;iVolume(NewVolume); Processor* p = Descendant(); Atomic* a = new Atomic(g,p); a->LocalIntegrand(&LocalIntegrand()); Offspring.Push(a); }; return; }; Error(TimesCalled > 2, "Parallelogram_Processor : more than two calls of Process()"); } /////////////////////////////////////////////// Processor* Parallelogram_Processor::NewCopy() const { return new Parallelogram_Processor(*this); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'C2rule13.c' then echo shar: will not over-write existing file "'C2rule13.c'" else cat << \SHAR_EOF > 'C2rule13.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// // //File C2rule13.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(long lines split) ///////////////////////////////////////////////////////// // // A cubature formula of degree 13 with 37 points and associated // null rules. // The cubature formula, from Rabinowitz & Richter, was recomputed // to obtain higher accuracy. // ///////////////////////////////////////////////////////// #include static int K[]={1,2,3,2}; const int NumberOfPoints=K[0]+4*K[1]+4*K[2]+8*K[3]; const int Orbits=K[0]+K[1]+K[2]+K[3]; static real Type1[]={ 0.9909890363004326469792722978603e+00, 0.6283940712305315063814483471116e+00}; static real l1sdl2s = Type1[1]*Type1[1]/Type1[0]/Type1[0]; static real Type2[]={ 0.9194861553393073086142137772149e+00, 0.6973201917871173078084506730937e+00, 0.3805687186904854497424188074662e+00}; static real Type3[2][2]={{0.9708504361720225062147290554088e+00, 0.6390348393207252159077623446225e+00}, {0.8623637916722781475018696425693e+00, 0.3162277660168700033875075593701e+00}}; static real Weight[8][8]={{0.2995235559387052215463143056692e+00, 0.3311006686692356205977471655046e-01, 0.1802214941550624038355347399683e+00, 0.3916727896035153300761243260674e-01, 0.1387748348777288706306435595057e+00, 0.2268881207335707037147066705814e+00, 0.3657395765508995601240002438981e-01, 0.1169047000557533546701746277951e+00}, {7.610781847149629154716409791983e-2, 1.486101247399760261471935168346e-1, -2.077685631717747007172983323970e-1, 6.850758313011924198538315395405e-2, 2.024205813317813585572881715385e-1, 1.108627473745508429879249169864e-1, -1.187411393304862640859204217487e-1, -5.208857468077715683772080394959e-2}, {4.016494861405949747097510013162e-2, -1.093132962444079541048635452881e-1, -2.270251673633777452624380129694e-1, 1.231674163356097016086203579325e-2, -1.420402526499201540699111172200e-1, 1.189080551229557928776504129312e-1, -4.482039658150474743804189300793e-3, 1.730383808319875827592824151609e-1}, {-5.643905795781771973971259866415e-1, 2.878418073676293225652331648545e-2, 1.159354231997583294689565314470e-1, 1.376081498690624477894043101438e-1, -7.909780225340130915490382973570e-2, 1.174335441429478112778176601234e-1, -1.107251942334134124782600707843e-1, 2.094226883312045633400182488252e-2}, {-2.269001713589584730602581694579e-1, 2.976190892690301120078774620049e-2, -7.440193483272787588251423144751e-2, -1.224665989043784131260454301280e-1, -4.857910454732976198562745578156e-2, 2.228157325962656425537280474671e-1, 1.459764751457503859063666414952e-1, -1.211789553452468781539987084682e-1}, {-3.326760468009974589269134283992e-1, 1.796655319904795478676993902115e-1, -4.389976396805911868560791966472e-2, -2.295841771339316497310760908889e-1, 6.182618387692816082856552878852e-2, -1.202703885325137746461829140891e-1, 5.109536580363550180208564374234e-3, 1.126062761533095493689566169969e-1}, {2.290638530086106512999345512401e-1, 2.702070398116919449911037051753e-1, -9.078047988731123605988441792069e-3, 4.618480310858703283999169489655e-2, -2.598231009547631799096616255056e-1, -2.518433931146441037986247681820e-2, -1.257796993152456033984707367389e-2, -2.720818902721190304043617320910e-2}, {2.746908885094872977794932213372e-1, -1.149427039769738298032807785523e-2, 1.596178537820019535731955591283e-1, -2.180626972663360443142752377527e-1, -8.711748038292630173597899697063e-3, 1.902786182960269617633915869710e-1, -1.189840649092108827784089292890e-1, 2.883382565767354162177931122471e-2}}; // // The error estimator constants // static const real crival=0.4 , facmed=8.0; static const real facopt = facmed/(crival*crival); #include #include #include #include #define sqr(x) ((x)*(x)) void Parallelogram_Rule13::ApplyWithDiffs(Integrand& F,Parallelogram& R, real& TheResult,real& TheError, Vector& DiffOrder) { int i,j,p,Type,nr,number; real Null[7]; real Tres = -1.0; real noise,r,r1,r2,r3,Deg5,Deg3,Deg1,Deg7,z1,z2,sumval; real D1,D2; real F0; real FE[2][2][2]; // [l1,l2][vertex1,vertex2][plus,minus] Point x[8]; if (Tres <= 0) { Tres=50*REAL_EPSILON; } TheResult = 0.0; for (i=0;i<7;i++){Null[i]=0;} p=0; for (Type=0;Type <=3;Type++){ for (nr=0;nr= 1) { TheError =facmed*Deg7; } else { if (r>=crival) { TheError = facmed*r*Deg7; } else { TheError = facopt *r*r*r*Deg7; } } TheError = max(noise,TheError); } TheError *= R.Volume()/4; TheResult *=R.Volume()/4; } ////////////////////////////////////////////////// Parallelogram_Rule13::Parallelogram_Rule13() :Rule() { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'C2toS2.c' then echo shar: will not over-write existing file "'C2toS2.c'" else cat << \SHAR_EOF > 'C2toS2.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////// //File C2toS2.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////// #include #include #include ////////////////////////////////////////// void PolarToRectangular::Transform(real& w, Point& p) { Point P(p.R()*cos(p.Theta()),p.R()*sin(p.Theta())); w *= p.R(); p = P; } /////////////////////////////////////////// PolarToRectangular::PolarToRectangular() : Transformation() { } /////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'C2togr.c' then echo shar: will not over-write existing file "'C2togr.c'" else cat << \SHAR_EOF > 'C2togr.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File gr.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////// #include #include //////////////////////////////////////////// void C2toGR::Transform(real& w, Point& p) { GeneralizedRectangle& G = *GR_ptr; Point M = G.B()-G.A(); Point C = G.A() + p.X()*M; real ml = M.Length(); real dist = G.Boundary(C), ratio=dist/ml; Point P(-ratio*M.Y(),ratio*M.X()); w *= dist*ml; p = C+p.Y()*P; } /////////////////////////////////////////////////// C2toGR::C2toGR(GeneralizedRectangle* g) : Transformation(),GR_ptr(g) { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'E2.c' then echo shar: will not over-write existing file "'E2.c'" else cat << \SHAR_EOF > 'E2.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// //File E2.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Nov 1994 V0.1d(re-ordering of member initializers) ///////////////////////////////////////////////////////// #include #include #include #include ///////////////////////////////////////////////////////// Plane::Plane () : Geometry(2), xscale(1.0), yscale(1.0), TheCenter(0,0) { } ///////////////////////////////////////////////////////// Plane::Plane (const Point& center) : Geometry(2), xscale(1.0), yscale(1.0), TheCenter(center) { } ///////////////////////////////////////////////////////// Plane::Plane(const Point& center, real x, real y) : Geometry(2), xscale(x), yscale(y), TheCenter(center) { } ///////////////////////////////////////////////////////// real Plane::ScaleX() const { return xscale; } ///////////////////////////////////////////////////////// real Plane::ScaleY() const { return yscale; } ///////////////////////////////////////////////////////// //Processor* //Plane::DefaultProcessor() //const //{ //return new PlaneAdaptive; //} ///////////////////////////////////////////////////////// const Point& Plane::Center() const { return TheCenter; } ///////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'E2adapt.c' then echo shar: will not over-write existing file "'E2adapt.c'" else cat << \SHAR_EOF > 'E2adapt.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File E2.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////// #include #include #include #include #include #include #include #include /////////////////////////////////////////////// #define sqr(x) ((x)*(x)) static int K[]={0,3,2,2}; const int NumberOfPoints=K[0]+4*K[1]+4*K[2]+8*K[3]; const int Orbits=K[0]+K[1]+K[2]+K[3]; static real Type1[]= {0.5460844152585403666984417e+00 , 0.1376486679696350642323050e+01 , 0.2358932261980680967828022e+01}; static real Type2[]= {0.8462499884480199068814807e+00 , 0.1985531339917884990890422e+01}; static real Type3[2][2]= {{0.1779246738905319006374908e+01 , 0.9318240227761998500475049e+00}, {0.3030436065368579151664045e+01 , 0.9962534261727632104611162e+00}}; static real OrigWeight[7]= {0.1418036987406628465242303e+00, 0.3807850175899473939094384e-01, 0.1290856883945041937607418e-02, 0.5772571826901623901546648e-01, 0.1620590503146543183518239e-03, 0.5445472363593369147167489e-02, 0.2411028493987025953260209e-04}; static int d[]={0,3,1,5,2,4,6}; static real Weight[7][7]= {{0.6002713316445080080142126, 0.7955990316249109629216728, 1.0584888443837658614605899, 0.7595383160846588054989698, 1.3523576929325600784468914, 0.9663531601396869556259704, 1.9895758469520118113052969}, {-0.1714120818975139, -1.4261615934658296, 20.9491066359021694, 1.7029699666146943, 57.2013795938251143, -4.3332227154742827, -175.0624620496226842}, {-0.2883800695213331, 2.5450105556734605, 2.8699527274413806, 0.304671504643251, 138.1913876850488233, -8.5573830821954439, -18.7930973279112966}, {-0.250456836419066, 0.3273926337592694, -83.9551965137636766, 0.4609375440071548, -365.1974538111883157, 10.4127651350263225, 1537.3605596124529503}, {-0.2595143739988262, 0.1255865390202144, 85.4652862386879934, -0.2489288730337109, -712.5513360902265439, 6.3018929219370941, -645.6559424743654782}, {-0.24820543230912, -0.2143965818640334, 8.5337065366470588, -0.2238393816932916, 867.6556565044116888, 7.6084037588845301, -4712.804729866979117}, {0.3052968227487744, 1.0011209710514362, -6.3357177267870899, 0.7227067892680122, -358.0249035190603089, 2.7469614313645364, -6407.2910382311609777}}; // Radii of rings associated with weights of published formula static real RingRadius[]= {0.9151577658134376, 1.2649388389767648, 1.7333214530567136, 2.2616892861784437, 2.6609731353556634, 2.9246248487342039, 6.0979478618219725}; //This is `infinity'. Never used actually // // The error estimator constants // const real crival=0.5 , facmed=5.0; const real facopt = facmed/(crival*crival); ////////////////////////////////////////////////////// void PlaneAdaptive::Rule(Integrand& F,Plane& R,real& TheResult,real& TheError,real& HalfValueRadius) { int i,j,p,Type,nr,number; real Null[6],OrbitContrib[7],below,above,fraction; real Tres = 50*REAL_EPSILON; real noise,r,r1,r2,r3,Deg5,Deg3,Deg7,Deg1,sumval; real A=1.0/R.ScaleX() , B=1.0/R.ScaleY(); Point x[8]; TheResult = 0.0; for (i=0;i<6;i++){Null[i]=0;} p=0; for (Type=0;Type <=3;Type++){ for (nr=0;nr= 1) { TheError =facmed*Deg7; } else { if (r>=crival) { TheError = facmed*r*Deg7; } else { TheError = facopt *r*r*r*Deg7; } } TheError = max(noise,TheError); } TheResult *= (A*B); TheError *= (A*B); // cout <<"=> Error = "<& Offspring) { TimesCalled++; if (TimesCalled==1) { Rule(LocalIntegrand(),Geometry(),Integral(),AbsoluteError(),HalfValueRadius); } else { const Point& C=Geometry().Center(); Offspring.Push(( AtomicRegion*) CIRCLE(C,HalfValueRadius)); Offspring.Push(( AtomicRegion*) OUT_CIRCLE(C,HalfValueRadius)); Offspring.IteratorReset(); while (!Offspring.IteratorAtEnd()) { Offspring.IteratorNext()->LocalIntegrand(&LocalIntegrand()); }; } } /////////////////////////////////////////////////// PlaneAdaptive::PlaneAdaptive() :Processor(),TimesCalled(0),HalfValueRadius(0) { } //////////////////////////////////////////////////// Processor* PlaneAdaptive::NewCopy() const { return new PlaneAdaptive(*this); } ////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'E2interf.c' then echo shar: will not over-write existing file "'E2interf.c'" else cat << \SHAR_EOF > 'E2interf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// /////////// //File E2interf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////// #include #include /////////////////////// PLANE::PLANE() { StoreAtomic(new Plane,new PlaneAdaptive); } ////////////////////////////////////////////// PLANE::PLANE(const Point& Center) { StoreAtomic(new Plane(Center),new PlaneAdaptive); } ////////////////////////////////////////////// PLANE::PLANE(const Point& Center, real ScaleX, real ScaleY) { StoreAtomic(new Plane(Center,ScaleX, ScaleY),new PlaneAdaptive); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'E2sec.c' then echo shar: will not over-write existing file "'E2sec.c'" else cat << \SHAR_EOF > 'E2sec.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////// //File E2sec.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 14 Feb 1995 V0.1e(bug fix in transformation) ////////////////////////////////////////// #include #include #include ////////////////////////////////////////// PlaneSector::PlaneSector( const Point& A, const Point& B, const Point& C) :Geometry(2) { if(C==B) { TheCenter=A; } else { real dp = (C-B)*(A-B); Error(dp==0, "Error: trying to construct a plane sector with centre at infinity"); TheCenter = (A+(A-B)*((C-B)*((C+B)/2-A))/dp); }; TheInnerRadius=(TheCenter-A).Length(); Point BB(B-TheCenter), CC(C-TheCenter); TheSmallAngle=atan2(BB.Y(),BB.X()); TheBigAngle=atan2(CC.Y(),CC.X()); if (TheBigAngle<=TheSmallAngle) TheBigAngle += 2*M_PI; } /////////////////////////////////////////////////// PlaneSector::PlaneSector(const Point& O,real r, real theta1, real theta2) : Geometry(2) { TheCenter = O; TheInnerRadius = r; TheSmallAngle = theta1; TheBigAngle = theta2; if (TheSmallAngle == TheBigAngle) TheBigAngle += 2*M_PI; } ///////////////////////////////////////////////////// real PlaneSector::InnerRadius() const { return TheInnerRadius; } //////////////////////////////////////////////////// real PlaneSector::SmallAngle() const { return TheSmallAngle; } ///////////////////////////////////////////////////// real PlaneSector::BigAngle() const { return TheBigAngle; } //////////////////////////////////////////////////// const Point& PlaneSector::Center() const { return TheCenter; } //////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'E2secitf.c' then echo shar: will not over-write existing file "'E2secitf.c'" else cat << \SHAR_EOF > 'E2secitf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////// //File E2secitf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////////// #include #include ////////////////////////////////////////////// PLANE_SECTOR::PLANE_SECTOR (const Point& A, const Point& B,const Point& C) { StoreAtomic(new PlaneSector(A,B,C),new PlaneSector_Processor); } ////////////////////////////////////////////// PLANE_SECTOR::PLANE_SECTOR (const Point& O, real r , real theta1, real theta2) { StoreAtomic(new PlaneSector(O,r,theta1,theta2), new PlaneSector_Processor); } /////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'E2secprc.c' then echo shar: will not over-write existing file "'E2secprc.c'" else cat << \SHAR_EOF > 'E2secprc.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////////// //File E2secprc.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #include #include #include #include #include #include #include //////////////////////////////////////////////////////// void PlaneSector_Processor::Process( Stack& Offspring) { PlaneSector& G = Geometry(); Point P1(G.InnerRadius(),G.BigAngle()), P2(G.InnerRadius(),G.SmallAngle()); AtomicRegion* A ; A= (AtomicRegion*) SEMI_INFINITE_STRIP(P1,P2); Integrand I1(LocalIntegrand(),new Translation(G.Center())); A->LocalIntegrand(new Integrand(I1, new PolarToRectangular)); Offspring.Push(A); } ///////////////////////////////////////////////// PlaneSector_Processor::PlaneSector_Processor() :Processor() { } ///////////////////////////////////////////////// Processor* PlaneSector_Processor::NewCopy() const { return new PlaneSector_Processor(*this); } //////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'E2tostrp.c' then echo shar: will not over-write existing file "'E2tostrp.c'" else cat << \SHAR_EOF > 'E2tostrp.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File E2tostrp.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////// #include #include #include //////////////////////////////////////////// void E2toIS::Transform(real& w, Point& p) { InfiniteStrip& s = *IS_ptr; Point D = s.B()- s.A(); Point C(-D.Y(),D.X()); C = C/C.Length(); w *= D.Length()*.5*(1-tanh(p.X())*tanh(p.X())); p = s.A() + p.Y()*C + (.5*(1+tanh(p.X())))*D; } /////////////////////////////////////////////////// E2toIS::E2toIS(InfiniteStrip* g) : Transformation(),IS_ptr(g) { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'S2.c' then echo shar: will not over-write existing file "'S2.c'" else cat << \SHAR_EOF > 'S2.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////// //File S2.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////// #include #include #include #include #include #include #include #include #include //////////////////////////////////////////// Circle::Circle(const Point& Center, real Radius) : Geometry(2), TheCenter(Center), TheRadius(fabs(Radius)) {} /////////////////////////////////////////////// Circle::Circle(const Point& Center, const Point& Boundary) : Geometry(2), TheCenter(Center), TheRadius(sqrt((Center.X()-Boundary.X())*(Center.X()-Boundary.X()) +(Center.Y()-Boundary.Y())*(Center.Y()-Boundary.Y()))) {} /////////////////////////////////////////////// real Circle::Volume() const { return M_PI*TheRadius*TheRadius; } ////////////////////////////////////////////// const Point& Circle::Center() const { return TheCenter; } ///////////////////////////////////////////// real Circle::Radius() const { return TheRadius; } ////////////////////////////////////////////// //Processor* //Circle::DefaultProcessor() //const //{ //return new CircleAdaptive(new Circle_Rule13); //} ///////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'S2adapt.c' then echo shar: will not over-write existing file "'S2adapt.c'" else cat << \SHAR_EOF > 'S2adapt.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////// //File S2adapt.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 30 Jan 1996 V0.1g(no longer compare signed and unsigned) ////////////////////////////////////////// #include #include #include #include #include //////////////////////////////////////////////// void CircleAdaptive::Process(Stack& Offspring) { Circle& C = Geometry(); static unsigned int mxgen=2; //if (mxgen == 0) //{ //cerr<<"How many times may I apply the circle rule? "; //cin>>mxgen; //}; TimesCalled++; if(TimesCalled ==1) { if (GenerationNumber < mxgen) { TheRule->Apply(LocalIntegrand(),C,Integral(),AbsoluteError()); } else { Point rv (C.Radius(),0); Point bp = C.Center()+rv; AtomicRegion* A ; A= (AtomicRegion*) POLAR_RECTANGLE(C.Center(),bp,bp); A->LocalIntegrand(&(LocalIntegrand())); Offspring.Push(A); }; } else { const real CircleRatio = 0.44721359549995793928; Point m1(C.Radius()*CircleRatio ,0.); Point m2(C.Radius() , 0.); Point m3(0.,C.Radius()); Point m4(0.,C.Radius()*CircleRatio); Point origin=C.Center(); AtomicRegion* t1=(AtomicRegion*) POLAR_RECTANGLE(origin+m1,origin+m2,origin+m3); AtomicRegion* t2=(AtomicRegion*) POLAR_RECTANGLE(origin+m4,origin+m3,origin-m2); AtomicRegion* t3=(AtomicRegion*) POLAR_RECTANGLE(origin-m1,origin-m2,origin-m3); AtomicRegion* t4=(AtomicRegion*) POLAR_RECTANGLE(origin-m4,origin-m3,origin+m2); Offspring.Push(t1); Offspring.Push(t2); Offspring.Push(t3); Offspring.Push(t4); Offspring.IteratorReset(); while (!Offspring.IteratorAtEnd()) { Offspring.IteratorNext()->LocalIntegrand(&LocalIntegrand()); }; if (CircleRatio != 0.0) { Circle* tmp = new Circle(origin,C.Radius()*CircleRatio); Atomic* a =new Atomic(tmp,Descendant()); a->LocalIntegrand(&LocalIntegrand()); Offspring.Push(a); }; }; } ////////////////////////////////////////////////// CircleAdaptive::CircleAdaptive(Rule * R) :Processor(),TheRule(R),TimesCalled(0),GenerationNumber(0) { } ///////////////////////////////////////////////////// CircleAdaptive* CircleAdaptive::Descendant() const { CircleAdaptive * CA = new CircleAdaptive (&(*(TheRule))); CA->GenerationNumber = GenerationNumber+1; return CA; } ////////////////////////////////////////////////////// Processor* CircleAdaptive::NewCopy() const { return new CircleAdaptive(*this); } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'S2interf.c' then echo shar: will not over-write existing file "'S2interf.c'" else cat << \SHAR_EOF > 'S2interf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// //File S2interf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #include #include #include ///////////////////////////////////////////////////////// CIRCLE::CIRCLE(const Point& c,const Point& b) { StoreAtomic(new Circle(c,b),new CircleAdaptive(new Circle_Rule13)); } ///////////////////////////////////////////////////////// CIRCLE::CIRCLE(const Point& c, real Radius) { StoreAtomic(new Circle(c,Radius),new CircleAdaptive(new Circle_Rule13)); } ///////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'S2rule13.c' then echo shar: will not over-write existing file "'S2rule13.c'" else cat << \SHAR_EOF > 'S2rule13.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //File S2rule13.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // // A cubature formula of degree 13 with 36 points and associated // null rules (Cools & Haegemans). // #include static real facmed = 1.5; static real crival = 0.3; static int K[]={0,3,2,2}; const int NumberOfPoints=K[0]+4*K[1]+4*K[2]+8*K[3]; const int Orbits=K[0]+K[1]+K[2]+K[3]; static real Type1[]= {0.283402832348840340260055531925e+00, 0.649007230578023857142954047869e+00, 0.920575474036255978410400945265e+00}; static real Type2[]= {0.677355106028069632559870394597e+00, 0.412672216763278882147845015245e+00}; static real Type3[2][2]= {{0.335767600829543545504321849367e+00, 0.938694583835106683089433405007e+00}, {0.752042776803937943743749637665e+00, 0.379717011170079696840056017956e+00}}; static real Weight[7][7]= {{0.497326951852944153115255529183e-01, 0.439732090591084987635001867639e-01, 0.221057969395291114959209696751e-01, 0.138071954801617944635783199052e-01, 0.478191639416850908138653549756e-01, 0.579302409092634509107760741653e-02, 0.304879456061841994847272004644e-01}, // Nullrule exact for the first 6 basispolynomials, {-0.8073879159066197e-02, -0.2498315518214109e-01, 0.5349170539028515e-01, 0.3595547716318644e-01, 0.4320518775944201e-01, -0.1967607360410405e-01, -0.3012159438174910e-01}, // Nullrule exact for the first 5 basispolynomials, {0.2175100120594341e-01, -0.7117820786684134e-01, 0.1801191272610644e-01, -0.1775642346529020e-01, -0.2754333027079005e-02, -0.1170796597217573e-01, 0.3767099118575607e-01}, // Nullrule exact for the first 4 basispolynomials, {0.2413156434309756e-01, 0.2327141313816948e-01, 0.3438009174891747e-01, 0.3084063431284037e-01, -0.6858211678704531e-01, -0.2561913343310581e-01, 0.3598340055116032e-02}, // Nullrule exact for the first 3 basispolynomials, {-0.4853627844062673e-01, 0.3645578330411178e-01, 0.4003943562394422e-01, -0.4494496660283691e-01, 0.1266357696444992e-01, -0.2028566592818438e-01, 0.2244689050366323e-01}, // Nullrule exact for the first 2 basispolynomials, {-0.2979266039117054e-01, 0.3977474716810517e-02, -0.4396076050818155e-01, 0.5463380585542593e-01, 0.1777067704103634e-01, -0.2876745680547196e-01, 0.2745318844851159e-01}, // Nullrule exact for the first 1 basispolynomials, {0.6246499865107039e-01, 0.2624836264288300e-01, -0.1903648724133519e-01, -0.2649038633167001e-01, 0.3481279195257287e-01, -0.3459307949232926e-01, -0.4406560344431272e-02}}; // // The error estimator constants // #include #include #include #include //#include #define sqr(x) ((x)*(x)) void Circle_Rule13::Apply(Integrand& F,Circle& R,real& TheResult,real& TheError) { //if (crival<0 || facmed <0) // { // cerr << " crival,facmed? " << endl; // cin >> crival; // cin >> facmed; // }; const real facopt = facmed/(crival*crival); int i,j,p,Type,nr,number; real Null[6]; real Tres = -1.0; real noise,r,r1,r2,Deg5,Deg3,Deg7,sumval; Point x[8]; if (Tres <= 0) { Tres=50*REAL_EPSILON; } TheResult = 0.0; for (i=0;i<6;i++){Null[i]=0;} p=0; for (Type=0;Type <=3;Type++){ for (nr=0;nr= 1) { TheError =10*Deg7; } else { if (r>=crival) { TheError = facmed*r*Deg7; } else { TheError = facopt *r*r*r*Deg7; } } TheError = max(noise,TheError); } TheError *= R.Volume(); TheResult *= R.Volume(); // cout <<"=> Error = "<() { } /////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'T2.c' then echo shar: will not over-write existing file "'T2.c'" else cat << \SHAR_EOF > 'T2.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File T2.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////// #include #include ////////////////////////////////////////////// Triangle::Triangle (const Point& p1,const Point& p2,const Point& p3) : Geometry(2),Vertices(3),TheVolumeKnown(False) { Vertices[0] = p1; Vertices[1] = p2; Vertices[2] = p3; } ////////////////////////////////////////////// void Triangle::ComputeVolume() { TheVolume = fabs( 0.5* ((Vertices[0][0]*Vertices[1][1]-Vertices[1][0]*Vertices[0][1]) +(Vertices[1][0]*Vertices[2][1]-Vertices[2][0]*Vertices[1][1]) +(Vertices[2][0]*Vertices[0][1]-Vertices[0][0]*Vertices[2][1])) ); TheVolumeKnown = True; } /////////////////////////////////////////////// const Point& Triangle::Vertex(int i) const { return Vertices[i]; } ////////////////////////////////////////////////// real Triangle::Volume() const { Triangle* T= (Triangle*) this; if (!TheVolumeKnown) { T->ComputeVolume(); }; return T->TheVolume; } /////////////////////////////////////////////// void Triangle::Volume(real v) { TheVolume = v; TheVolumeKnown = True; } //////////////////////////////////////////////// //Processor* //Triangle::DefaultProcessor() //const //{ //return new SimpleAdaptive( //new Triangle_Rule13, //new Triangle_Divide4); //} //////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'T2dv4.c' then echo shar: will not over-write existing file "'T2dv4.c'" else cat << \SHAR_EOF > 'T2dv4.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////////// //File T2dv4.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////// #include #include #include ////////////////////////////////////////////////// void Triangle_Divide4::Apply (const Triangle& t,Stack& Offspring, const Vector& D) { Point m12 = (t.Vertex(0)+t.Vertex(1))/2; Point m13 = (t.Vertex(0)+t.Vertex(2))/2; Point m23 = (t.Vertex(2)+t.Vertex(1))/2; Triangle* t1 = new Triangle(t.Vertex(0),m12,m13); Triangle* t2 = new Triangle(t.Vertex(1),m12,m23); Triangle* t3 = new Triangle(t.Vertex(2),m23,m13); Triangle* t4 = new Triangle(m23,m12,m13); Offspring.Push(t1); Offspring.Push(t2); Offspring.Push(t3); Offspring.Push(t4); } ////////////////////////////////////////////////// Triangle_Divide4::Triangle_Divide4() :SameShapeDivisor() { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'T2interf.c' then echo shar: will not over-write existing file "'T2interf.c'" else cat << \SHAR_EOF > 'T2interf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////// //File T2interf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(typedef introduced) //////////////////////////////////////////////// #include #include #include #include /////////////////////////////////////////////// typedef Rule RuleTriangle; typedef SameShapeDivisor SameShapeDivisorTriangle; TRIANGLE::TRIANGLE(const Point& p1,const Point& p2, const Point& p3) { Pointer R13 (new Triangle_Rule13); Pointer D4 (new Triangle_Divide4); StoreAtomic(new Triangle(p1,p2,p3), new SimpleAdaptive(R13,D4) ); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'T2rule13.c' then echo shar: will not over-write existing file "'T2rule13.c'" else cat << \SHAR_EOF > 'T2rule13.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// //File T2rule13.c //Authors: Berntsen & Espelid (DRLTRI) //C++Translation: Luc Pluym/Ronald Cools // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 28 Mar 1996 V0.1h(redundant variable removed) ///////////////////////////////////////////////////////// #include #include #include #define sqr(x) ((x)*(x)) // coordinates of the quadrature rule static real G1[] = { 0.333333333333333333333333333333e0, 0.950275662924105565450352089520e0, 0.171614914923835347556304795551e0, 0.539412243677190440263092985511e0, 0.772160036676532561750285570113e0, 0.009085399949835353883572964740e0, 0.062277290305886993497083640527e0, 0.022076289653624405142446876931e0, 0.018620522802520968955913511549e0, 0.096506481292159228736516560903e0, 0.851306504174348550389457672223e0, 0.689441970728591295496647976487e0, 0.635867859433872768286976979827e0}; static real G2[] = { 0.333333333333333333333333333333e0, 0.024862168537947217274823955239e0, 0.414192542538082326221847602214e0, 0.230293878161404779868453507244e0, 0.113919981661733719124857214943e0, 0.495457300025082323058213517632e0, 0.468861354847056503251458179727e0, 0.851306504174348550389457672223e0, 0.689441970728591295496647976487e0, 0.635867859433872768286976979827e0, 0.022076289653624405142446876931e0, 0.018620522802520968955913511549e0, 0.096506481292159228736516560903e0}; // // Weights of the degree 13 quadrature rule. // static real W[] = {0.051739766065744133555179145422e0, 0.008007799555564801597804123460e0, 0.046868898981821644823226732071e0, 0.046590940183976487960361770070e0, 0.031016943313796381407646220131e0, 0.010791612736631273623178240136e0, 0.032195534242431618819414482205e0, 0.015445834210701583817692900053e0, 0.017822989923178661888748319485e0, 0.037038683681384627918546472190e0, 0.015445834210701583817692900053e0, 0.017822989923178661888748319485e0, 0.037038683681384627918546472190e0}; // Weights of the first null rule of degree 7. static real W71[] = {-0.077738051051462052051304462750e0, 0.001640389740236881582083124927e0, 0.078124083459915167386776552733e0, -0.030706528522391137165581298102e0, 0.010246307817678312345028512621e0, 0.012586300774453821540476193059e0, -0.043630506151410607808929481439e0, -0.004567055157220063810223671248e0, 0.003393373439889186878847613140e0, 0.000000000000000000000000000000e0, -0.004567055157220063810223671248e0, 0.003393373439889186878847613140e0, 0.000000000000000000000000000000e0}; // Weights of the second null rule of degree 7. static real W72[] = {-0.064293709240668260928898888457e0, 0.003134665264639380635175608661e0, 0.007822550509742830478456728602e0, 0.048653051907689492781049400973e0, 0.032883327334384971735434067029e0, -0.017019508374229390108580829589e0, 0.025973557893399824586684707198e0, -0.010716753326806275930657622320e0, 0.018315629578968063765722278290e0, -0.047607080313197299401024682666e0, -0.010716753326806275930657622320e0, 0.018315629578968063765722278290e0, -0.047607080313197299401024682666e0}; // Weights of the first degree 5 null rule. static real W51[] = {0.021363205584741860993131879186e0, 0.022716410154120323440432428315e0, -0.026366191271182090678117381002e0, 0.029627021479068212693155637482e0, 0.004782834546596399307634111034e0, 0.004178667433984132052378990240e0, -0.065398996748953861618846710897e0, -0.033589813176131630980793760168e0, 0.033018320112481615757912576257e0, 0.012241086002709814125707333127e0, -0.033589813176131630980793760168e0, 0.033018320112481615757912576257e0, 0.012241086002709814125707333127e0}; // Weights of the second degree 5 null rule. static real W52[] = { -0.046058756832790538620830792345e0, 0.005284159186732627192774759959e0, 0.009325799301158899112648198129e0, -0.006101110360950124560783393745e0, -0.056223328794664871336486737231e0, -0.062516479198185693171971930698e0, 0.022428226812039547178810743269e0, -0.000026014926110604563130107142e0, 0.032882099937471182365626663487e0, 0.018721740987705986426812755881e0, -0.000026014926110604563130107142e0, 0.032882099937471182365626663487e0, 0.018721740987705986426812755881e0}; // Weights of first degree 3 null rule. static real W31[] = {0.080867117677405246540283712799e0, -0.033915806661511608094988607349e0, 0.014813362053697845461526433401e0, 0.001442315416337389214102507204e0, -0.024309696484708683486455879210e0, -0.005135085639122398522835391664e0, -0.034649417896235909885490654650e0, 0.035748423431577326597742956780e0, 0.024548155266816447583155562333e0, -0.032897267038856299280541675107e0, 0.035748423431577326597742956780e0, 0.024548155266816447583155562333e0, -0.032897267038856299280541675107e0}; // Weights of second degree 3 null rule. static real W32[] = {-0.038457863913548248582247346193e0, -0.055143631258696406147982448269e0, -0.021536994314510083845999131455e0, 0.001547467894857008228010564582e0, 0.057409361764652373776043522086e0, -0.040636938884669694118908764512e0, -0.020801144746964801777584428369e0, 0.019490770404993674256256421103e0, 0.002606109985826399625043764771e0, 0.023893703367437102825618048130e0, 0.019490770404993674256256421103e0, 0.002606109985826399625043764771e0, 0.023893703367437102825618048130e0}; // Weights of first degree 1 null rule. static real W11[] = {0.074839568911184074117081012527e0, -0.004270103034833742737299816615e0, 0.049352639555084484177095781183e0, 0.048832124609719176627453278550e0, 0.001042698696559292759051590242e0, -0.044445273029113458906055765365e0, -0.004670751812662861209726508477e0, -0.015613390485814379318605247424e0, -0.030581651696100000521074498679e0, 0.010801113204340588798240297593e0, -0.015613390485814379318605247424e0, -0.030581651696100000521074498679e0, 0.010801113204340588798240297593e0}; // Weights of second degree 1 null rule. static real W12[] = {0.009373028261842556370231264134e0, -0.074249368848508554545399978725e0, 0.014709707700258308001897299938e0, 0.009538502545163567494354463302e0, -0.014268362488069444905870465047e0, 0.040126396495352694403045023109e0, 0.028737181842214741174950928350e0, -0.031618075834734607275229608099e0, 0.016879961075872039084307382161e0, 0.010878914758683152984395046434e0, -0.031618075834734607275229608099e0, 0.016879961075872039084307382161e0, 0.010878914758683152984395046434e0}; void Triangle_Rule13::Apply(Integrand& F,Triangle& t,real& TheResult,real& TheError) { real Null71,Null72,Null51,Null52,Null31,Null32,Null11,Null12; const int Wtleng =13; real Tres = -1.0; real tune = 1.0; real f,Z1,Z2,Z3; real noise,r,r1,r2,r3,DEG1,DEG3,DEG5,DEG7; Point X[3],Center; int i,l; real cvmax,cvmin,fmmax,fmmin, crival,facmed,facopt; // // The abscissas are given in homogeneous coordinates. // // *FIRST EXECUTABLE STATEMENT DRLT2A cvmax = 0.5; cvmin = 0.9; crival = tune*cvmax + (1-tune)*cvmin; fmmax = 10; fmmin = 0.1; facmed = tune*fmmax + (1-tune)*fmmin; facopt = facmed/(crival*crival); if (Tres <= 0) { Tres=50*REAL_EPSILON; }; // Compute contributions from the center of the triangle. Center = (t.Vertex(0)+t.Vertex(1)+t.Vertex(2))/3; f = F(Center); TheResult = W[0]*f; Null71 = W71[0]*f; Null72 = W72[0]*f; Null51 = W51[0]*f; Null52 = W52[0]*f; Null31 = W31[0]*f; Null32 = W32[0]*f; Null11 = W11[0]*f; Null12 = W12[0]*f; // Compute contributions from points with // multiplicity 3. for (i=1;i= 1) { TheError =10*max(max(max(DEG1,DEG3),DEG5),DEG7); } else { if (r>=crival) { TheError = facmed*r*DEG7; } else { TheError = facopt *r*r*r*DEG7; }; }; TheError = max(noise,TheError); }; TheError *= t.Volume(); TheResult *=t.Volume(); TheError = min(fabs(TheResult),TheError); // **END DRLTRI } ///////////////////////////////////////////////////////// Triangle_Rule13::Triangle_Rule13() :Rule() { } ///////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'T2tops.c' then echo shar: will not over-write existing file "'T2tops.c'" else cat << \SHAR_EOF > 'T2tops.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : T2tops.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #include ///////////////////////////////////////////////////////// T2toPS::T2toPS(ParabolicSegment* p) : Transformation(), P(p->P()), M((p->A()+p->B())/2), H((p->B()-p->A())/2) { a= -0.5* (P-M).Length(); k= H.X()*(P.Y()-M.Y())-H.Y()*(P.X()-M.X()); k*=a; } //////////////////////////////////////////////////////// void T2toPS::Transform(real & w, Point& p) { if (p.X()<0) { real X = p.X(); real Y = a*(X-1)*p.Y(); p= M+X*H+Y*(P-M); w *= k*(X-1); } else { real X = p.X(); real Y = -a*(X+1)*p.Y(); p= M+X*H+Y*(P-M); w *= -k*(X+1); }; } ///////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'atomic.c' then echo shar: will not over-write existing file "'atomic.c'" else cat << \SHAR_EOF > 'atomic.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////// //File atomic.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////// #include ///////////////////////////////////////////// template Atomic::Atomic(GEOMETRY* g, Processor* p) :AtomicRegion(),G_ptr(g),RP_ptr(p),I_ptr( new Integrand) { p->LocalAtomic(this); } ////////////////////////////////////////////// template void Atomic::Use(Processor* p) { RP_ptr =p; p->LocalAtomic(this); } //////////////////////////////////////////// template void Atomic::Process(Stack& Offspring) { RP_ptr->Process(Offspring); } //////////////////////////////////////////// template void Atomic::LocalIntegrand(Integrand* i) { I_ptr = i; } ////////////////////////////////////////////// template RegionInfo* Atomic::LocalRegionInfo() { return &(LocalInfo()); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'atomreg.c' then echo shar: will not over-write existing file "'atomreg.c'" else cat << \SHAR_EOF > 'atomreg.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////// //File atomreg.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////// #include //////////////////////////////////////////////// AtomicRegion::AtomicRegion() :Region() { } ///////////////////////////////////////////////// AtomicRegion::~AtomicRegion() { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'boolean.c' then echo shar: will not over-write existing file "'boolean.c'" else cat << \SHAR_EOF > 'boolean.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////// //File boolean.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////// #include #include ostream& operator << (ostream& os, const Boolean& b) { if (b==False) { os<< "False "; } else { os<< "True "; }; return os; } SHAR_EOF fi # end of overwriting check if test -f 'chrono.c' then echo shar: will not over-write existing file "'chrono.c'" else cat << \SHAR_EOF > 'chrono.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// //File chrono.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 28 Mar 1996 V0.1h(long instead of int) ///////////////////////////////////////////////////////// #include #ifdef GETRUSAGE #include #include #endif ///////////////////////////////////////////////////////// Chrono::Chrono() { Reset(); } ///////////////////////////////////////////////////////// void Chrono::Start() { if ( !Running) { Time= OldTime = times_(); Running =True; }; } ///////////////////////////////////////////////////////// void Chrono::Stop() { if (Running) { Time = times_(); Running =False; }; } ///////////////////////////////////////////////////////// void Chrono::Reset() { Time=0; OldTime=0; Running = False; } ///////////////////////////////////////////////////////// unsigned long Chrono::Read() { if (Running) { return (times_() - OldTime); } else { return (Time -OldTime); }; } ///////////////////////////////////////////////////////// long Chrono::times_ () { long t=0; #ifdef GETRUSAGE struct rusage info ; struct timeval *user_t = &(info.ru_utime), *sys_t = &(info.ru_stime) ; getrusage (0, &info) ; t += user_t->tv_sec * 1000 + user_t->tv_usec / 1000 ; t += sys_t->tv_sec * 1000 + sys_t->tv_usec / 1000 ; #endif return t; } ///////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'compreg.c' then echo shar: will not over-write existing file "'compreg.c'" else cat << \SHAR_EOF > 'compreg.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File compreg.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////////////// #include #include ///////////////////////////////////////////////// COMPOUND_REGION::COMPOUND_REGION() : Region(),TheStatus(Virgin) { } ////////////////////////////////////////////////// void COMPOUND_REGION::Process() { Error(Hopeless(),"Processing a hopeless COMPOUND_REGION"); if (TheStatus==Virgin) { TheStatus= Active; Preprocess(); } else { Improve(); } } //////////////////////////////////////////////////// COMPOUND_REGION::~COMPOUND_REGION() { } ///////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'deccxxtp.c' then echo shar: will not over-write existing file "'deccxxtp.c'" else cat << \SHAR_EOF > 'deccxxtp.c' // This file is needed by cxx, The Decalpha C++ compiler. // // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // #include #include #include #include #include #include #include /////////////////////////////////////////////////////////////// #include #pragma define_template SimpleAdaptive #pragma define_template SimpleAdaptive /////////////////////////////////////////////////////////////// #include #pragma define_template Set /////////////////////////////////////////////////////////////// #include #pragma define_template Stack #pragma define_template Stack #pragma define_template Stack #pragma define_template Stack /////////////////////////////////////////////////////////////// #include #pragma define_template Vector #pragma define_template Vector #pragma define_template Vector #pragma define_template Vector< Pointer > /////////////////////////////////////////////////////////////// #include #pragma define_template VectorStack< Pointer < Transformation > > /////////////////////////////////////////////////////////////// #include #pragma define_template SubHeap #pragma define_template Heap /////////////////////////////////////////////////////////////// #include #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic #pragma define_template Atomic /////////////////////////////////////////////////////////////// #include #pragma define_template Divisor #pragma define_template Divisor /////////////////////////////////////////////////////////////// #include #pragma define_template PassTheBuck #pragma define_template PassTheBuck #pragma define_template PassTheBuck #pragma define_template PassTheBuck #pragma define_template PassTheBuck /////////////////////////////////////////////////////////////// #include #pragma define_template Pointer > #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer > #pragma define_template Pointer /////////////////////////////////////////////////////////////// #include #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor #pragma define_template Processor /////////////////////////////////////////////////////////////// #include #pragma define_template Rule #pragma define_template Rule #pragma define_template Rule /////////////////////////////////////////////////////////////// #include #pragma define_template SameShapeDivisor #pragma define_template SameShapeDivisor /////////////////////////////////////////////////////////////// #include #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE #pragma define_template USERINTERFACE /////////////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'div.c' then echo shar: will not over-write existing file "'div.c'" else cat << \SHAR_EOF > 'div.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File div.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////// #include ///////////////////////////////////////////////// template Divisor::Divisor() :ReferenceCounting() { } ////////////////////////////////////////////////// template Divisor::~Divisor() { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'eval_ctr.c' then echo shar: will not over-write existing file "'eval_ctr.c'" else cat << \SHAR_EOF > 'eval_ctr.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////// //File eval_ctr.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 28 Mar 1996 V0.1h(long instead of int) ///////////////////////////////////////////// #include #include ///////////////////////////////////////////// EvaluationCounter::EvaluationCounter() { Reset(); } ///////////////////////////////////////////// void EvaluationCounter::Start() { if (!Running) { Strt = Integrand::NumberOfEvaluations(); End =Strt; Running = True; }; } ///////////////////////////////////////////// void EvaluationCounter::Stop() { if (Running) { End =Integrand::NumberOfEvaluations(); Running = False; }; } ///////////////////////////////////////////// void EvaluationCounter::Reset() { Bias =0; Strt=Integrand::NumberOfEvaluations(); End =Strt; Running = False; } ///////////////////////////////////////////// void EvaluationCounter::Reset(unsigned long v) { Bias =v; Strt=Integrand::NumberOfEvaluations(); End =Strt; Running = False; } ///////////////////////////////////////////// unsigned long EvaluationCounter::Read() { if (Running) { return Integrand::NumberOfEvaluations()-Strt+ Bias; } else { return End - Strt+ Bias; }; } ///////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'geometry.c' then echo shar: will not over-write existing file "'geometry.c'" else cat << \SHAR_EOF > 'geometry.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////////// //File geometry.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) /////////////////////////////////////////////////// #include /////////////////////////////////////////////////// Geometry::Geometry(unsigned int Dim) :ReferenceCounting(),TheDimension(Dim) { } /////////////////////////////////////////////////// unsigned int Geometry::Dimension() const { return TheDimension; } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'gnu262tp.c' then echo shar: will not over-write existing file "'gnu262tp.c'" else cat << \SHAR_EOF > 'gnu262tp.c' // This file is needed by gcc v2.6.2 . // One has to compile with option -fno-implicit-templates. // // History: // (date) (version) // 28 Nov 1994 V0.1 (first limited distribution) // #include #include #include #include #include #include #include /////////////////////////////////////////////////////////////// #include template class SimpleAdaptive; template class SimpleAdaptive; /////////////////////////////////////////////////////////////// #include template class Set; /////////////////////////////////////////////////////////////// #include template class Stack; template class Stack; template class Stack; template class Stack; /////////////////////////////////////////////////////////////// #include template class Vector; template class Vector; template class Vector; template class Vector< Pointer >; /////////////////////////////////////////////////////////////// #include template class VectorStack< Pointer < Transformation > >; /////////////////////////////////////////////////////////////// #include template class SubHeap; template class Heap; /////////////////////////////////////////////////////////////// #include template class Atomic; template class Atomic; template class Atomic; template class Atomic; template class Atomic; template class Atomic; template class Atomic; template class Atomic; template class Atomic; template class Atomic; template class Atomic; template class Atomic; /////////////////////////////////////////////////////////////// #include template class Divisor; template class Divisor; /////////////////////////////////////////////////////////////// #include template class PassTheBuck; template class PassTheBuck; template class PassTheBuck; template class PassTheBuck; template class PassTheBuck; /////////////////////////////////////////////////////////////// #include template class Pointer >; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer >; template class Pointer; /////////////////////////////////////////////////////////////// #include template class Processor; template class Processor; template class Processor; template class Processor; template class Processor; template class Processor; template class Processor; template class Processor; template class Processor; template class Processor; template class Processor; template class Processor; /////////////////////////////////////////////////////////////// #include template class Rule; template class Rule; template class Rule; /////////////////////////////////////////////////////////////// #include template class SameShapeDivisor; template class SameShapeDivisor; /////////////////////////////////////////////////////////////// #include template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; template class USERINTERFACE; /////////////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'gr.c' then echo shar: will not over-write existing file "'gr.c'" else cat << \SHAR_EOF > 'gr.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////// //File gr.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////// #include #include #include #include ////////////////////////////////////////////// GeneralizedRectangle::GeneralizedRectangle(Function f,const Point& a,const Point& b) :Geometry(2),TheBoundary(f),TheA(a),TheB(b) { } //////////////////////////////////////////// const Point& GeneralizedRectangle::A() const { return TheA; } /////////////////////////////////////////// const Point& GeneralizedRectangle::B() const { return TheB; } ///////////////////////////////////////////// real GeneralizedRectangle::Boundary(const Point& p) const { return ((GeneralizedRectangle*)this)->TheBoundary(p); } ////////////////////////////////////////// //Processor* //GeneralizedRectangle::DefaultProcessor() //const //{ //Point a(0,0),b(1,0),c(0,1); //Parallelogram* R= new Parallelogram(a,b,c); //return new //PassTheBuck(R); //} //////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'gritf.c' then echo shar: will not over-write existing file "'gritf.c'" else cat << \SHAR_EOF > 'gritf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////// //File gritf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////////// #include #include #include #include #include #include ////////////////////////////////////////////// GENERALIZED_RECTANGLE::GENERALIZED_RECTANGLE(Function f,const Point& a,const Point& b) :USERINTERFACE() { Point A(0,0),B(1,0),C(0,1); PARALLELOGRAM R(A,B,C); StoreAtomic(new GeneralizedRectangle(f,a,b), new PassTheBuck((AtomicRegion*)R)); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'gs.c' then echo shar: will not over-write existing file "'gs.c'" else cat << \SHAR_EOF > 'gs.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : gs.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #include //////////////////////////////////////////////////////// GeneralizedSector::GeneralizedSector(real (*f)(real) ,real a,real b,const Point& C) :Geometry(2),TheCenter(C),TheAlpha(a),TheBeta(b),TheBoundary(f) { } ///////////////////////////////////////////////////////// real GeneralizedSector::Alpha() const { return TheAlpha; } ////////////////////////////////////////////////////////// real GeneralizedSector::Beta() const { return TheBeta; } ////////////////////////////////////////////////////////// const Point& GeneralizedSector::Center() const { return TheCenter; } ////////////////////////////////////////////////////////// real GeneralizedSector::Boundary(real p) const { GeneralizedSector* G= (GeneralizedSector*) this; return G->TheBoundary(p); } /////////////////////////////////////////////////////////// RealFunction GeneralizedSector::Boundary() const { return TheBoundary; } ///////////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'gsitf.c' then echo shar: will not over-write existing file "'gsitf.c'" else cat << \SHAR_EOF > 'gsitf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////// //File gsitf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////////// #include #include #include ////////////////////////////////////////////// GENERALIZED_SECTOR::GENERALIZED_SECTOR(real (*F)(real), real a, real b, const Point& Center) :USERINTERFACE() { StoreAtomic(new GeneralizedSector(F,a,b,Center), new GeneralizedSector_Processor); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'gsprc.c' then echo shar: will not over-write existing file "'gsprc.c'" else cat << \SHAR_EOF > 'gsprc.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////////// //File polC2prc.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #include #include #include #include #include #include #include //////////////////////////////////////////////////////// // LOCAL CLASS ////////////////////////////////////////// class VariableScaling : public Transformation { private: real (*B) (real); public: VariableScaling(real(*b)(real)) :Transformation(),B(b) {}; void Transform( real& w, Point& p) { p.R() = B(p.Theta())*p.R(); w*= B(p.Theta()); }; }; /////////////////////////////////////////////////////////// void GeneralizedSector_Processor::Process( Stack& Offspring) { GeneralizedSector& G = Geometry(); Point P1(0,G.Alpha()), P2(0,G.Beta()), P3(1,G.Alpha()); AtomicRegion* A ; A= (AtomicRegion*) PARALLELOGRAM(P1,P2,P3); Integrand I1(LocalIntegrand(),new Translation(G.Center())); Integrand I2(I1, new PolarToRectangular); A->LocalIntegrand(new Integrand(I2, new VariableScaling(G.Boundary()))); Offspring.Push(A); } ///////////////////////////////////////////////// GeneralizedSector_Processor::GeneralizedSector_Processor() :Processor() { } ///////////////////////////////////////////////// Processor* GeneralizedSector_Processor::NewCopy() const { return new GeneralizedSector_Processor(*this); } ///////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'heap.c' then echo shar: will not over-write existing file "'heap.c'" else cat << \SHAR_EOF > 'heap.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// /////////////////////////////////////////////// //File heap.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 30 Jan 1996 V0.1g(good for old and new ANSI for-scope) /////////////////////////////////////////////// #include #include #include #include ////////////////////////////////////////////// template SubHeap::SubHeap() :Set() { ActiveChild = -1; LastChild = -1; } //////////////////////////////////////////////// template SubHeap::~SubHeap() { Clear(); } /////////////////////////////////////////////// template T* SubHeap::Get() { Error(Number == 0,"error:get from empty heap"); if(Number ==1) { Number--; return Contents[1]; }; T* B =Bottom(); if (LastChild == CAPACITY && Children[ActiveChild]->Saturated()) { ActiveChild--; if(ActiveChild<0) ActiveChild =CAPACITY; }; T* Result = Contents[1]; int Hole = 1; int First= 2; int Second= 3; while (Second <= Number) { if ((*B >= *Contents[First]) &&(*B >= *Contents[Second])) { goto putinhole; } else { if(*Contents[First] >= *Contents[Second]) { Contents[Hole] = Contents[First]; Hole = First; First = 2*Hole; Second = First +1; } else { Contents[Hole] = Contents [Second]; Hole = Second; First = 2*Hole; Second = First+1; }; }; }; if (First == Number) { if (*B >= *Contents[First]) { goto putinhole; } else { Contents[Hole] = Contents [First]; Hole = First; }; }; putinhole: Contents[Hole] = B; if((CAPACITY+1)/2<=Hole && Hole <=CAPACITY) { First =LeftChild(Hole); Second =RightChild(Hole); if (LastChild >=Second) { if( *Contents[Hole] < *Children[Second]->Look() ||*Contents[Hole] < *Children[First]->Look()) { if(*Children[First]->Look() > *Children[Second]->Look()) { B=Children[First]->Swap(Contents[Hole]); Contents[Hole]=B; } else { B=Children[Second]->Swap(Contents[Hole]); Contents[Hole]=B; }; }; }; if(LastChild ==First) { if (*Contents[Hole] <*Children[First]->Look()) { B=Children[First]->Swap(Contents[Hole]); Contents[Hole]=B; }; }; }; return Result; } /////////////////////////////////////////////////// template T* SubHeap::Look() { Error(Number==0,"Looking at empty heap"); return Contents [1]; } /////////////////////////////////////////////////// template T* SubHeap::Swap(T* B) { T* Result = Contents[1]; int Hole =1; int First =2; int Second =3; while (Second <= Number) { if ((*B > *Contents[First]) &&(*B > *Contents[Second])) { goto putinhole; } else { if(*Contents[First] > *Contents[Second]) { Contents[Hole] = Contents[First]; Hole = First; First = 2*Hole; Second = First +1; } else { Contents[Hole] = Contents [Second]; Hole = Second; First = 2*Hole; Second = First+1; }; }; }; if (First == Number-1) { if (*B > *Contents[First]) { goto putinhole; } else { Contents[Hole] = Contents [First]; Hole = Number-1; }; }; putinhole: Contents[Hole] = B; if((CAPACITY+1)/2<=Hole && Hole <=CAPACITY) { First =LeftChild(Hole); Second =RightChild(Hole); if (LastChild >=Second) { if( *Contents[Hole] < *Children[Second]->Look() ||*Contents[Hole] < *Children[First]->Look()) { if(*Children[First]->Look() > *Children[Second]->Look()) { B=Children[First]->Swap(Contents[Hole]); Contents[Hole]=B; } else { B=Children[Second]->Swap(Contents[Hole]); Contents[Hole]=B; }; }; }; if(LastChild ==First) { if (*Contents[Hole] <*Children[First]->Look()) { B=Children[First]->Swap(Contents[Hole]); Contents[Hole]=B; }; }; }; return Result; } /////////////////////////////////////////////////// template Boolean SubHeap::Saturated() const { if (Number!=CAPACITY) return False; if (LastChild <0) return True; if (LastChild !=CAPACITY) return False; Boolean Return = True; for (int i=0;iSaturated()); }; return Return; } //////////////////////////////////////////////////// template T* SubHeap::Bottom() { Error(Number==0,"error:Bottom of empty subheap"); if (ActiveChild >=0) { T* Return = Children[ActiveChild]->Bottom(); if(Children[ActiveChild]->Size()==0) { delete Children[ActiveChild]; ActiveChild--; LastChild--; }; return Return; } else { T* Return =Contents[Number]; Number--; return Return; }; } //////////////////////////////////////////////////// template void SubHeap::operator +=(T* t) { T* NewT; int Hole; if(ActiveChild>=0) { if(Children[ActiveChild]->Saturated()) { ActiveChild++; ActiveChild%=(CAPACITY+1); if (ActiveChild>LastChild) { LastChild=ActiveChild; Children[ActiveChild]=new SubHeap; Error(!Children[ActiveChild],"heap:allocation failed"); }; }; *Children[ActiveChild] +=t; if (*Children[ActiveChild]->Look() > *Contents[FatherOfChild(ActiveChild)]) { NewT =Children[ActiveChild]->Swap(Contents[FatherOfChild(ActiveChild)]); Hole =FatherOfChild(ActiveChild); } else { return; }; } else { if (Number==CAPACITY) { ActiveChild=LastChild=0; Children[ActiveChild] = new SubHeap; Error(!Children[ActiveChild],"heap:allocation failed"); *Children[ActiveChild] +=t; if (*t > *Contents[FatherOfChild(ActiveChild)]) { NewT =Children[ActiveChild]->Swap(Contents[FatherOfChild(ActiveChild)]); Hole =FatherOfChild(ActiveChild); } else { return; }; } else { Number++; NewT = t; Hole = Number; }; }; int Father = Hole/2; while (Father > 0) { if (*Contents[Father] > *NewT) { break; } else { Contents [Hole] = Contents[Father]; Hole = Father; Father = Hole / 2; }; }; Contents [Hole] = NewT; } //////////////////////////////////////////////////// template void SubHeap::Clear() { int i; for (i=0;i<=LastChild;i++) { Children [i] ->Clear(); delete Children[i]; }; for (i=1;i<=Number;i++) { delete Contents [i]; }; ActiveChild=-1; LastChild =-1; Number =0; } //////////////////////////////////////////////////// template void SubHeap::Print() const { int i; for (i=1;i<=Number;i++) { cout <AbsoluteError()<Print(); }; } /////////////////////////////////////////////////// template int SubHeap::FatherOfChild(int i) const { return i/2 + (CAPACITY +1)/2; } /////////////////////////////////////////////////// template int SubHeap::LeftChild(int i) const { return 2*(i-(CAPACITY+1)/2); } ////////////////////////////////////////////////// template int SubHeap::RightChild(int i) const { return LeftChild(i) +1; } //////////////////////////////////////////////////// ///HEAP //////////////////////////////////////////////////// template Heap::Heap() :Set() { } //////////////////////////////////////////////// template T* Heap::Look() { return TheSubHeap.Look(); } /////////////////////////////////////////////////// template T* Heap::Get() { Error(Number == 0,"error:get from empty heap"); Number--; return TheSubHeap.Get(); } /////////////////////////////////////////////////// template void Heap::operator +=( T* t) { Number++; TheSubHeap +=t; } //////////////////////////////////////////////////// template void Heap::Clear() { Number =0; TheSubHeap.Clear(); } //////////////////////////////////////////////////// template void Heap::operator+=(Heap& h) { int n = h.Number; for (int i=0;i void Heap::Print() const { cout<< "Heap"< Heap::~Heap() { Clear(); } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'integran.c' then echo shar: will not over-write existing file "'integran.c'" else cat << \SHAR_EOF > 'integran.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// /////////////////////////////////////////////////// //File integran.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 9 Sep 1994 V0.1a(operator added) // 10 Sep 1994 V0.1b(constructors of ReferenceCounting added) // 25 Jan 1996 V0.1f(unused parameter removed) // 30 Jan 1996 V0.1g(no longer compare signed and unsigned) // 28 Mar 1996 V0.1h(long instead of int) ////////////////////////////////////////////////// #include #include #include #include #include ////////////////////////////////////////////////// long Integrand::Number = 0; ////////////////////////////////////////////////////// Integrand::Integrand (real (*f)(const Point&)) :TheFunction(f),AppliedTransformations() ,ReferenceCounting() { } //////////////////////////////////////////////// Integrand::Integrand(const Integrand& I, Transformation* T) : TheFunction(I.TheFunction), AppliedTransformations(I.AppliedTransformations) ,ReferenceCounting(I) { Pointer p=T; AppliedTransformations += p; } ///////////////////////////////////////////////////////// Integrand::Integrand(const Integrand& I) : TheFunction(I.TheFunction), AppliedTransformations(I.AppliedTransformations) ,ReferenceCounting(I) { } //////////////////////////////////////////////// long Integrand::NumberOfEvaluations() { return Number; } ////////////////////////////////////////////////////// real Integrand::operator() (const Point& StartingPoint) { real JacProd =1; Point p =StartingPoint; for (unsigned int i=0; JacProd!=0 && iTransform(JacProd,p); }; if (JacProd == 0) return 0.0; real R = TheFunction(p)*fabs(JacProd); Number++; return R; } //////////////////////////////////////////////// real ErrorMessage(const Point&) { Error(True,"Error : Attempt to integrate without knowing integrand"); return 0; } Integrand::Integrand() :TheFunction(ErrorMessage),AppliedTransformations() ,ReferenceCounting() { } /////////////////////////////////////////////// Boolean Integrand::operator==(const Integrand& i) const { if ((AppliedTransformations.Size() > 0 ) || (i.AppliedTransformations.Size() > 0 )) return False; return (Boolean)(TheFunction == i.TheFunction); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'integrat.c' then echo shar: will not over-write existing file "'integrat.c'" else cat << \SHAR_EOF > 'integrat.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File integrat.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////// #include #include #include #include #include #include //////////////////////////////////////////////// void Integrate ( COMPOUND_REGION& R, real& Integral, real& AbsError, Boolean& Success, real AbsErrReq, real RelErrReq, unsigned long MaxEval) { EvaluationCounter E; E.Start(); do { if (R.Hopeless()) break; R.Process(); } while (R.AbsoluteError() > AbsErrReq && R.AbsoluteError() > fabs(R.Integral())*RelErrReq && E.Read() < MaxEval); Success = (Boolean)(R.AbsoluteError() <= AbsErrReq || R.AbsoluteError() <= fabs(R.Integral()*RelErrReq)); Integral = R.Integral(); AbsError = R.AbsoluteError(); } ///////////////////////////////////////////////////////// real Integrate ( COMPOUND_REGION& R, real AbsErrReq, real RelErrReq, unsigned long MaxEval) { real Integral; real AbsError; Boolean Success; Integrate(R,Integral,AbsError,Success,AbsErrReq,RelErrReq,MaxEval); return Integral; } ///////////////////////////////////////////////////////// void Integrate ( Function f, COMPOUND_REGION& R, real& Integral, real& AbsError, Boolean& Success, real AbsErrReq, real RelErrReq, unsigned long MaxEval) { R.LocalIntegrand(new Integrand(f)); Integrate(R,Integral,AbsError,Success,AbsErrReq,RelErrReq,MaxEval); } ///////////////////////////////////////////////////////// real Integrate ( Function f, COMPOUND_REGION& R, real AbsErrReq, real RelErrReq, unsigned long MaxEval) { R.LocalIntegrand(new Integrand(f)); real Integral; real AbsError; Boolean Success; Integrate(R,Integral,AbsError,Success,AbsErrReq,RelErrReq,MaxEval); return Integral; } ///////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'invert.c' then echo shar: will not over-write existing file "'invert.c'" else cat << \SHAR_EOF > 'invert.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////// //File invert.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////////////// #include /////////////////////////////////////////////////////// Invert::Invert(Circle* C) :Transformation(), C_ptr(C), RadiusSq(C->Radius()*C->Radius()) { } ////////////////////////////////////////// void Invert::Transform (real &w, Point& p) { const Point diff = p-C_ptr->Center(); real r=diff.Length(); real ratio=RadiusSq/(r*r); p = C_ptr->Center()+diff*ratio; w *= ratio*ratio; } ///////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'outS2.c' then echo shar: will not over-write existing file "'outS2.c'" else cat << \SHAR_EOF > 'outS2.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// /////////////////////////////////////////////// //File outS2.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////// #include #include #include //////////////////////////////////////////////// OutCircle::OutCircle(const Point& C,const Point& B) :Circle(C,B) { } /////////////////////////////////////////////// OutCircle::OutCircle(const Point& C,real r) :Circle(C,r) { } /////////////////////////////////////////////// //Processor* //OutCircle::DefaultProcessor() //const // { //return new PassTheBuck( // new Circle(*this)); //} //////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'outS2itf.c' then echo shar: will not over-write existing file "'outS2itf.c'" else cat << \SHAR_EOF > 'outS2itf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// /////////// //File outs2itf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////// #include #include #include #include #include #include /////////////////////// OUT_CIRCLE::OUT_CIRCLE(const Point& c,const Point& b) { StoreAtomic(new OutCircle(c,b), new PassTheBuck((AtomicRegion*)CIRCLE(c,b))); } ////////////////////////////////////////////// OUT_CIRCLE::OUT_CIRCLE(const Point& c, real Radius) { StoreAtomic(new OutCircle(c,Radius), new PassTheBuck((AtomicRegion*)CIRCLE(c,Radius))); } ////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'passbuck.c' then echo shar: will not over-write existing file "'passbuck.c'" else cat << \SHAR_EOF > 'passbuck.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// //File passbuck.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #include #include #include #include ////////////////////////////////////////////////// template PassTheBuck::PassTheBuck(AtomicRegion* a) :Processor(), AR_ptr(a) { } ////////////////////////////////////////////////// template void PassTheBuck::Process( Stack& Offspring) { Transformation* T = new VIA(&Geometry()); Integrand* I = new Integrand(LocalIntegrand(),T); AR_ptr->LocalIntegrand(I); Offspring.Push(AR_ptr); } ///////////////////////////////////////////////// template Processor* PassTheBuck::NewCopy() const { return new PassTheBuck(*this); } //////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'point2D.c' then echo shar: will not over-write existing file "'point2D.c'" else cat << \SHAR_EOF > 'point2D.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////// //File point2D.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(file name changed) ///////////////////////////////////////////// #include ////////////////////////////////////////////////////// Point_2D::Point_2D() { } ////////////////////////////////////////////////////// Point_2D::Point_2D(const Point_2D& v) :x(v.x),y(v.y) { } ////////////////////////////////////////////////////// Point_2D::Point_2D(const real X, const real Y) :x(X),y(Y) { } ////////////////////////////////////////////////////// Point_2D::~Point_2D() { } ////////////////////////////////////////////////// // Other functions are inlined ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'pointer.c' then echo shar: will not over-write existing file "'pointer.c'" else cat << \SHAR_EOF > 'pointer.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// //File pointer.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 11 Sep 1994 V0.1b(bug removed from destructor) // 14 Sep 1994 V0.1c(inlines removed) // 25 Jan 1996 V0.1f(code moved from .c to .h) ///////////////////////////////////////////////////////// #include //////////////////////////////////////////////// template Pointer::Pointer() { ptr = 0; } //////////////////////////////////////////////// template Pointer::Pointer(const Pointer& p) { ptr = p.ptr; if (ptr !=0) ptr->Refer(); } /////////////////////////////////////////////// template Pointer::Pointer(T* p) { ptr = p; if (ptr !=0) ptr->Refer(); } //////////////////////////////////////////////// template Pointer& Pointer::operator=(const Pointer& p) { if (ptr !=0) { ptr->UnRefer(); if(ptr->NumberOfReferences() == 0 && (ptr != p.ptr)) { delete ptr; }; }; ptr = p.ptr; if (ptr !=0) ptr->Refer(); return *this; } //////////////////////////////////////////////// template Pointer& Pointer::operator=(T* p) { if (ptr !=0) { ptr->UnRefer(); if(ptr->NumberOfReferences() == 0 && (p != ptr)) { delete ptr; }; }; ptr = p; if (ptr !=0) ptr->Refer(); return *this; } //////////////////////////////////////////////// //////////////////////////////////////////////// template T& Pointer::operator[] (int i) const { return ptr[i]; } /////////////////////////////////////////////// template Pointer::~Pointer() { if (ptr ==0) return; ptr->UnRefer(); if(ptr->NumberOfReferences() == 0) { delete ptr; }; } /////////////////////////////////////////////// template Boolean Pointer::operator == (const Pointer& tp) const { return (ptr == tp.ptr) ? True : False; } //////////////////////////////////////////////// template Boolean Pointer::operator != (const Pointer& tp) const { return (ptr != tp.ptr)? True : False; } //////////////////////////////////////////////// template T& Pointer::operator *() const { return *ptr; } //////////////////////////////////////////////// template T* Pointer::operator ->() const { return ptr; } //////////////////////////////////////////////// //template //Pointer::operator T*() // { // return ptr; // } //////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'polC2.c' then echo shar: will not over-write existing file "'polC2.c'" else cat << \SHAR_EOF > 'polC2.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////// //File POLC2.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 14 Feb 1995 V0.1e(bug fix in transformation) ////////////////////////////////////////// #include #include #include #include #include ////////////////////////////////////////// #include //////////////////////////////////////////// PolarRectangle::PolarRectangle( const Point& A, const Point& B, const Point& C) :Geometry(2) { if(C==B) { TheCenter=A; } else { real dp = (C-B)*(A-B); Error(dp==0, "Error: trying to construct a polar rectangle with centre at infinity"); TheCenter = (A+(A-B)*((C-B)*((C+B)/2-A))/dp); }; TheInnerRadius=(TheCenter-A).Length(); TheOuterRadius=(TheCenter-B).Length(); Point BB(B-TheCenter), CC(C-TheCenter); TheSmallAngle=atan2(BB.Y(),BB.X()); TheBigAngle=atan2(CC.Y(),CC.X()); if (TheBigAngle<=TheSmallAngle) TheBigAngle += 2*M_PI; } /////////////////////////////////////////////////// PolarRectangle::PolarRectangle(const Point& O, real r1, real r2, real t1, real t2) : Geometry(2) { TheCenter = O; if (r1 > r2) { TheInnerRadius = r2; TheOuterRadius = r1; } else { TheInnerRadius = r1; TheOuterRadius = r2; }; TheSmallAngle = t1; TheBigAngle = t2; } ///////////////////////////////////////////////////// real PolarRectangle::InnerRadius() const { return TheInnerRadius; } //////////////////////////////////////////////////// real PolarRectangle::OuterRadius() const { return TheOuterRadius; } /////////////////////////////////////////////////// real PolarRectangle::SmallAngle() const { return TheSmallAngle; } ///////////////////////////////////////////////////// real PolarRectangle::BigAngle() const { return TheBigAngle; } //////////////////////////////////////////////////// const Point& PolarRectangle::Center() const { return TheCenter; } //////////////////////////////////////////////////// //Processor* //PolarRectangle::DefaultProcessor() //const //{ //return new PolarRectangle_Processor; //} //////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'polC2itf.c' then echo shar: will not over-write existing file "'polC2itf.c'" else cat << \SHAR_EOF > 'polC2itf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////// //File polC2itf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////////// #include #include ////////////////////////////////////////////// POLAR_RECTANGLE::POLAR_RECTANGLE (const Point& A, const Point& B,const Point& C) { StoreAtomic(new PolarRectangle(A,B,C),new PolarRectangle_Processor); } ////////////////////////////////////////////// POLAR_RECTANGLE::POLAR_RECTANGLE (const Point& O, real r1, real r2, real t1, real t2) { StoreAtomic(new PolarRectangle(O,r1,r2,t1,t2),new PolarRectangle_Processor); } ////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'polC2prc.c' then echo shar: will not over-write existing file "'polC2prc.c'" else cat << \SHAR_EOF > 'polC2prc.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// //File polC2prc.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #include #include #include #include #include #include #include //////////////////////////////////////////////////////// void PolarRectangle_Processor::Process( Stack& Offspring) { PolarRectangle& G = Geometry(); Point P1(G.InnerRadius(),G.SmallAngle()), P2(G.OuterRadius(),G.SmallAngle()), P3(G.OuterRadius(),G.BigAngle()); AtomicRegion* A ; A= (AtomicRegion*) PARALLELOGRAM(P2,P1,P3); Integrand I1(LocalIntegrand(),new Translation(G.Center())); A->LocalIntegrand(new Integrand(I1, new PolarToRectangular)); Offspring.Push(A); } ///////////////////////////////////////////////// PolarRectangle_Processor::PolarRectangle_Processor() :Processor() { } ///////////////////////////////////////////////// Processor* PolarRectangle_Processor::NewCopy() const { return new PolarRectangle_Processor(*this); } //////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'ps.c' then echo shar: will not over-write existing file "'ps.c'" else cat << \SHAR_EOF > 'ps.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : ps.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #include ///////////////////////////////////////////////////////// ParabolicSegment::ParabolicSegment(const Point& a, const Point& b, const Point& p) :Geometry(2),TheA(a),TheB(b),TheP(p) { } ///////////////////////////////////////////////////////// const Point& ParabolicSegment::A() const { return TheA; } ////////////////////////////////////////////////////////// const Point& ParabolicSegment::B() const { return TheB; } ////////////////////////////////////////////////////////// const Point& ParabolicSegment::P() const { return TheP; } ////////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'psitf.c' then echo shar: will not over-write existing file "'psitf.c'" else cat << \SHAR_EOF > 'psitf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : psitf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #include #include #include #include ///////////////////////////////////////////////////////// PARABOLIC_SEGMENT::PARABOLIC_SEGMENT(const Point& A, const Point& B, const Point& P) :USERINTERFACE() { Point p(-1,0),q(0,1),r(1,0); TRIANGLE T(p,q,r); StoreAtomic ( new ParabolicSegment(A,B,P), new PassTheBuck ( (AtomicRegion*) T ) ); } ////////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'rule.c' then echo shar: will not over-write existing file "'rule.c'" else cat << \SHAR_EOF > 'rule.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// /////////////////////////////////////////////// //File rule.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 30 Jan 1996 V0.1g(no longer compare signed and unsigned) ///////////////////////////////////// #include //////////////////////////////////// template Rule::Rule() :ReferenceCounting() { } //////////////////////////////////////////////// template Rule::~Rule() { } ///////////////////////////////////////////////// template void Rule::Apply(Integrand& F,GEOMETRY& G, real& i, real&d) { } /////////////////////////////////////////////////// template void Rule::ApplyWithDiffs(Integrand& F,GEOMETRY& G, real& r, real&e, Vector& D) { for (unsigned int i= 0; i 'refcount.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////// //File refcount.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(unused parameter removed) ///////////////////////////////////////////// #include ////////////////////////////////////////////// ReferenceCounting::ReferenceCounting() { numref = 0; } ////////////////////////////////////////////// ReferenceCounting::ReferenceCounting(const ReferenceCounting&) { //numref isn't copied! numref = 0; } ///////////////////////////////////////////// ReferenceCounting& ReferenceCounting::operator= (const ReferenceCounting&) { //numref isn't copied! return *this; } //////////////////////////////////////////// void ReferenceCounting::Refer () { numref++; } //////////////////////////////////////////// void ReferenceCounting::UnRefer() { numref--; } /////////////////////////////////////////////// unsigned int ReferenceCounting::NumberOfReferences() const { return numref; } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'regcoll.c' then echo shar: will not over-write existing file "'regcoll.c'" else cat << \SHAR_EOF > 'regcoll.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File regcoll.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////////////// #include #include /////////////////////////////////////////////////// void REGION_COLLECTION::LocalIntegrand(Integrand* ip) { SCR_ptr->IteratorReset(); while(!SCR_ptr->IteratorAtEnd()) { SCR_ptr->IteratorNext()->LocalIntegrand(ip); }; } /////////////////////////////////////////////////// void REGION_COLLECTION::LocalIntegrand(Function f) { LocalIntegrand(new Integrand(f)); } /////////////////////////////////////////////////// REGION_COLLECTION& REGION_COLLECTION::operator+= (const COMPOUND_REGION& C) { SCR_ptr->Push( C.NewCopy()); return *this; } ////////////////////////////////////////////////// REGION_COLLECTION REGION_COLLECTION::operator+ (const COMPOUND_REGION& C) { REGION_COLLECTION r; r+= (*this); r+= C; return r; } /////////////////////////////////////////////////// REGION_COLLECTION::REGION_COLLECTION() :COMPOUND_REGION() { SCR_ptr = new Stack; } ///////////////////////////////////////////////// REGION_COLLECTION::REGION_COLLECTION(const REGION_COLLECTION& rc) :COMPOUND_REGION(rc),SCR_ptr(rc.SCR_ptr) { } ////////////////////////////////////////////////////// void REGION_COLLECTION::Preprocess() { SCR_ptr->IteratorReset(); while(!SCR_ptr->IteratorAtEnd()) { COMPOUND_REGION* C =SCR_ptr->IteratorNext(); real OldIntegral = C->Integral(); real OldError = C->AbsoluteError(); C->Preprocess(); LocalInfo().Integral() += C->Integral()-OldIntegral; LocalInfo().AbsoluteError ()+= C->AbsoluteError()-OldError; }; // if all parts are hopeless then the result is // hopeless too: SCR_ptr->IteratorReset(); while (!SCR_ptr->IteratorAtEnd()) { COMPOUND_REGION* C = SCR_ptr->IteratorNext(); if(!C->Hopeless()) return; }; LocalInfo().Hopeless() = True; } //////////////////////////////////////////////////// void REGION_COLLECTION::Improve() { real MaxCompoundError = 0; COMPOUND_REGION* MaxCompoundErrorAtRegion =0; SCR_ptr->IteratorReset(); while (!SCR_ptr->IteratorAtEnd()) { COMPOUND_REGION* C = SCR_ptr->IteratorNext(); real e =C->MaxAtomicError(); if (e > MaxCompoundError && !C->Hopeless()) { MaxCompoundError = e; MaxCompoundErrorAtRegion = C; }; }; LocalInfo().Integral() -= MaxCompoundErrorAtRegion->Integral(); LocalInfo().AbsoluteError() -= MaxCompoundErrorAtRegion->AbsoluteError(); MaxCompoundErrorAtRegion->Process(); LocalInfo().Integral() += MaxCompoundErrorAtRegion->Integral(); LocalInfo().AbsoluteError() += MaxCompoundErrorAtRegion->AbsoluteError(); // if all parts are hopeless then the result is // hopeless too: SCR_ptr->IteratorReset(); while (!SCR_ptr->IteratorAtEnd()) { COMPOUND_REGION* C = SCR_ptr->IteratorNext(); if(!C->Hopeless()) return; }; LocalInfo().Hopeless() = True; } ///////////////////////////////////////////////////// real REGION_COLLECTION::MaxAtomicError() const { real MaxError=0; SCR_ptr->IteratorReset(); while(!SCR_ptr->IteratorAtEnd()) { real m = SCR_ptr->IteratorNext()->MaxAtomicError(); if(m > MaxError) { MaxError = m; }; }; return MaxError; } ///////////////////////////////////////////////////// COMPOUND_REGION* REGION_COLLECTION::NewCopy() const { return new REGION_COLLECTION(*this); } /////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'reginfo.c' then echo shar: will not over-write existing file "'reginfo.c'" else cat << \SHAR_EOF > 'reginfo.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// //File reginfo.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Nov 1994 V0.1d(re-ordering of member initializers) ///////////////////////////////////////////////////////// #include //////////////////////////////////////////////////////// RegionInfo::RegionInfo() :ReferenceCounting(), TheIntegral(0), TheAbsoluteError(0), IsHopeless(False) { } ///////////////////////////////////////////////////////// Boolean RegionInfo::Hopeless() const { return IsHopeless; } //////////////////////////////////////////////////////////// Boolean& RegionInfo::Hopeless() { return IsHopeless; } ///////////////////////////////////////////////////////////// real RegionInfo::Integral() const { return TheIntegral; } ////////////////////////////////////////////////////////// real& RegionInfo::Integral() { return TheIntegral; } //////////////////////////////////////////////////////// real RegionInfo::AbsoluteError() const { return TheAbsoluteError; } /////////////////////////////////////////////////////////// real& RegionInfo::AbsoluteError() { return TheAbsoluteError; } //////////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'region.c' then echo shar: will not over-write existing file "'region.c'" else cat << \SHAR_EOF > 'region.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////// //File region.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////////// #include #include #include #include ///////////////////////////////////////////// real Region::AbsoluteError() const { return RI_ptr->AbsoluteError(); } /////////////////////////////////////////////// real Region::Integral() const { return RI_ptr->Integral(); } /////////////////////////////////////////////// Boolean Region::operator< (const Region& r) const { return (Boolean)(AbsoluteError() < r.AbsoluteError()); } /////////////////////////////////////////////// Boolean Region::operator<=(const Region& r) const { return (Boolean)(AbsoluteError() <= r.AbsoluteError()); } /////////////////////////////////////////////// Boolean Region::operator>(const Region& r) const { return (Boolean)(AbsoluteError() > r.AbsoluteError()); } /////////////////////////////////////////////// Boolean Region::operator>=(const Region& r) const { return (Boolean)(AbsoluteError() >= r.AbsoluteError()); } /////////////////////////////////////////////// RegionInfo& Region::LocalInfo() { return *RI_ptr; } //////////////////////////////////////////////// Region::Region() :RI_ptr( new RegionInfo) { } //////////////////////////////////////////////// Boolean Region::Hopeless() const { return RI_ptr->Hopeless(); } //////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'regproc.c' then echo shar: will not over-write existing file "'regproc.c'" else cat << \SHAR_EOF > 'regproc.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// /////////////////////////////////////////////// //File regproc.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) /////////////////////////////////////////////// #include #include /////////////////////////////////////////////// template Processor::Processor() :ReferenceCounting() { } /////////////////////////////////////////////// template Processor::~Processor() { } //////////////////////////////////////////// template Integrand& Processor::LocalIntegrand() const { return (*(A_ptr->I_ptr)); } /////////////////////////////////////////// template GEOMETRY& Processor::Geometry() const { return (*(A_ptr->G_ptr)); } /////////////////////////////////////////// template void Processor::LocalAtomic(Atomic* a) { A_ptr = a; } //////////////////////////////////////////// template Atomic& Processor::LocalAtomic() const { return *A_ptr; } ////////////////////////////////////////////// template real& Processor::Integral() { return A_ptr->LocalRegionInfo()->Integral(); } ////////////////////////////////////////////////// template real& Processor::AbsoluteError() { return A_ptr->LocalRegionInfo()->AbsoluteError(); } ///////////////////////////////////////////////// template RegionInfo& Processor::LocalRegionInfo() const { return *(A_ptr->LocalRegionInfo()); } //////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 's_adapt.c' then echo shar: will not over-write existing file "'s_adapt.c'" else cat << \SHAR_EOF > 's_adapt.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////// //File s_adapt.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(typedef introduced, code from .c to .h) ////////////////////////////////////////////// #include #include #include #include ///////////////////////////////////////////// //template //SimpleAdaptive::SimpleAdaptive(const Pointer& R, // const Pointer& D) // :Processor(), // TimesCalled(0), // Diffs(2), // TheRule(R), // TheDivisor(D) // { // } /////////////////////////////////////////////// template SimpleAdaptive::SimpleAdaptive(Rule* R, SameShapeDivisor* D) :Processor(), TimesCalled(0), Diffs(2), TheRule(R), TheDivisor(D) { } /////////////////////////////////////////////// template SimpleAdaptive* SimpleAdaptive::Descendant() const { SimpleAdaptive* r = new SimpleAdaptive(TheRule,TheDivisor); return r; } //////////////////////////////////////////////// template void SimpleAdaptive::Process( Stack& Offspring) { TimesCalled ++; if (TimesCalled == 1) { TheRule->ApplyWithDiffs(LocalIntegrand(),Geometry(),Integral(), AbsoluteError(),Diffs); Offspring.MakeEmpty(); return; }; if(TimesCalled == 2) { real NewVolume = Geometry().Volume()/TheDivisor->NumberOfParts(); Stack Parts; Vector DiffOrder(Diffs.Size()); if (Diffs[0]>Diffs[1]) { DiffOrder[0] = 1 ; DiffOrder[1] = 2; } else { DiffOrder[0] = 2; DiffOrder[1] =1; }; TheDivisor->Apply (Geometry(),Parts,DiffOrder); unsigned int N = Parts.Size(); for (unsigned int i =0;iVolume(NewVolume); Processor* p = Descendant(); Atomic* a = new Atomic(g,p); a->LocalIntegrand(&LocalIntegrand()); Offspring.Push(a); }; return; }; Error(TimesCalled > 2, "SimpleAdaptive : more than two calls of Process()"); } /////////////////////////////////////////////// template Processor* SimpleAdaptive::NewCopy() const { return new SimpleAdaptive(*this); } ///////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'samediv.c' then echo shar: will not over-write existing file "'samediv.c'" else cat << \SHAR_EOF > 'samediv.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File samediv.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////// #include ///////////////////////////////////////////////// template SameShapeDivisor::SameShapeDivisor() :Divisor() { } ////////////////////////////////////////////////// template SameShapeDivisor::~SameShapeDivisor() { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'semistrp.c' then echo shar: will not over-write existing file "'semistrp.c'" else cat << \SHAR_EOF > 'semistrp.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////// //File semistrp.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////// #include ////////////////////////////////////////////// SemiInfiniteStrip::SemiInfiniteStrip(const Point& a,const Point& b) :Geometry(2),TheA(a),TheB(b) { } //////////////////////////////////////////// const Point& SemiInfiniteStrip::A() const { return TheA; } /////////////////////////////////////////// const Point& SemiInfiniteStrip::B() const { return TheB; } /////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'semstitf.c' then echo shar: will not over-write existing file "'semstitf.c'" else cat << \SHAR_EOF > 'semstitf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////// //File stripitf.c ////////////////////////////////////////////// #include #include #include #include ////////////////////////////////////////////// SEMI_INFINITE_STRIP::SEMI_INFINITE_STRIP(const Point& a,const Point& b) :USERINTERFACE() { Point or(0,0),one(1,0); INFINITE_STRIP I(or,one); StoreAtomic(new SemiInfiniteStrip(a,b), new PassTheBuck((AtomicRegion*)I)); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'set.c' then echo shar: will not over-write existing file "'set.c'" else cat << \SHAR_EOF > 'set.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// /////////////////////////////////////////////////////// //File set.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////////////////// #include #include /////////////////////////////////////////////////////// template Set::Set() :ReferenceCounting() { Number = 0; } //////////////////////////////////////////////////////////// template Set::~Set() { } /////////////////////////////////////////////////////// template unsigned int Set::Size() const { return(Number); } //////////////////////////////////////////////////////////// template Boolean Set::Empty() const { return (Number == 0)? True : False ; } ///////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'stack.c' then echo shar: will not over-write existing file "'stack.c'" else cat << \SHAR_EOF > 'stack.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// /////////////////////////////////////////////////////// //File stack.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 30 Jan 1996 V0.1g(no longer compare signed and unsigned) ////////////////////////////////////////////////////// #include #include #include //////////////////////////////////////////////////////////// template Stack::Stack () :ReferenceCounting() { TheTop = new SElement; Error(!TheTop,"Stack:Allocation Failed"); TheTop ->Next =TheTop; Number = 0; } //////////////////////////////////////////////////////////// template void Stack::Push( T* r) { TheTop->Contents = r; SElement* w1 = TheTop; SElement* w2 = w1->Next; w1->Next = new SElement; Error(!w1->Next,"Stack:Allocation Failed"); w1->Next->Contents = TheTop->Contents; w1->Next->Next = w2; Number++; } //////////////////////////////////////////////////////////// template void Stack::Merge (Stack& r) { if(&r == this) return; SElement *w = r.TheTop->Next; for (unsigned int i =0; iContents); w->Contents = 0; w=w->Next; }; r.MakeEmpty(); } //////////////////////////////////////////////////////////// template T* Stack::Pop() { Error(Number==0,"Attempt to pop empty stack"); Number--; T* R=(TheTop->Next->Contents); SElement *w =TheTop->Next; TheTop->Next = TheTop->Next->Next; delete w; return R; } ///////////////////////////////////////////////////// template T* Stack::Top() const { Error(Number==0,"Attempt to access top of empty Stack"); return (TheTop->Next->Contents); } //////////////////////////////////////////////////////////// //template //ostream& //operator<<(ostream& os,const Stack& s) //{ //os << "Stack\n"; //SElement *w = s.TheTop->Next; //for (int i =0; iContents); //w=w->Next; //}; //return os; //} //////////////////////////////////////////////////////////// template void Stack::MakeEmpty() { if (Number == 0) return; SElement* w1 = TheTop->Next; SElement* w2 = w1 ->Next; for (unsigned int i=0 ;iContents; delete w1; w1 = w2; w2 = w1->Next; }; TheTop->Next = TheTop; Number = 0; } ////////////////////////////////////////////////////////// template Stack::~Stack () { MakeEmpty(); delete TheTop; } ////////////////////////////////////////////////////////// template unsigned int Stack::Size() const { return Number; } ////////////////////////////////////////////////////// template Boolean Stack::Empty() const { return (Number == 0) ? True : False ; } ////////////////////////////////////////////////////// template void Stack::IteratorReset() { Current = TheTop->Next; } //////////////////////////////////////////////////// template Boolean Stack::IteratorAtEnd() const { return (Current == TheTop) ? True : False; } //////////////////////////////////////////////////// template T* Stack::IteratorNext() { T*r = Current->Contents; Current = Current->Next; return r; } ///////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'strip.c' then echo shar: will not over-write existing file "'strip.c'" else cat << \SHAR_EOF > 'strip.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////// //File strip.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////// #include #include #include ////////////////////////////////////////////// InfiniteStrip::InfiniteStrip(const Point& a,const Point& b) :Geometry(2),TheA(a),TheB(b) { } //////////////////////////////////////////// const Point& InfiniteStrip::A() const { return TheA; } /////////////////////////////////////////// const Point& InfiniteStrip::B() const { return TheB; } /////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'stripitf.c' then echo shar: will not over-write existing file "'stripitf.c'" else cat << \SHAR_EOF > 'stripitf.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////// //File stripitf.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ////////////////////////////////////////////// #include #include #include #include ////////////////////////////////////////////// INFINITE_STRIP::INFINITE_STRIP(const Point& a,const Point& b) :USERINTERFACE() { PLANE P; StoreAtomic(new InfiniteStrip(a,b), new PassTheBuck((AtomicRegion*)P)); } /////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'sttosmst.c' then echo shar: will not over-write existing file "'sttosmst.c'" else cat << \SHAR_EOF > 'sttosmst.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////// //File sttosmt.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////// #include #include #include #include //////////////////////////////////////////// void IStoSIS::Transform(real& w, Point& p) { // cout << p; SemiInfiniteStrip& s = *SIS_ptr; Point D = s.B()- s.A(); Point C(-D.Y(),D.X()); // if (p.Y() > 600) // goed voor double // if (p.Y() > 60) if (p.Y() > log(REAL_MAX)*6.0/7.0) { w = 0; return; }; C = C/C.Length(); w *= D.Length()*exp(p.Y()); p = s.A() + exp(p.Y())*C + p.X()*D; // cout << p << endl; } /////////////////////////////////////////////////// IStoSIS::IStoSIS(SemiInfiniteStrip* g) : Transformation(),SIS_ptr(g) { } ////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'translat.c' then echo shar: will not over-write existing file "'translat.c'" else cat << \SHAR_EOF > 'translat.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////// //File translat.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(unused parameter removed) //////////////////////////////////////////////// #include /////////////////////////////////////////////// Translation::Translation( const Point& Offset) :Transformation(),TheOffset(Offset) { } ///////////////////////////////////////////// void Translation::Transform (real &, Point& p) { p += TheOffset; } ///////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'trnsfrm.c' then echo shar: will not over-write existing file "'trnsfrm.c'" else cat << \SHAR_EOF > 'trnsfrm.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// //////////////////////////////////////////////////////// //File trnsfrm.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) //////////////////////////////////////////////////////// #include //////////////////////////////////////////////////////// Transformation::Transformation() :ReferenceCounting() { } ///////////////////////////////////////////////////////// Transformation::~Transformation() { } //////////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'userint.c' then echo shar: will not over-write existing file "'userint.c'" else cat << \SHAR_EOF > 'userint.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ////////////////////////////////////////////////// //File userint.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 9 Sep 1994 V0.1a(operator added) // 10 Sep 1994 V0.1b(initialisation of Int_ptr added) // 25 Jan 1996 V0.1f(typedef introduced, code from .c to .h) /////////////////////////////////////////////////// #include #include /////////////////////////////////////////////////// template USERINTERFACE::USERINTERFACE() :COMPOUND_REGION() { SAR_ptr = new Stack; HAR_ptr = new Heap; HopelessAR_ptr = new Stack; Int_ptr = (Pointer) (0); } ////////////////////////////////////////////////// template USERINTERFACE::USERINTERFACE(const USERINTERFACE& u) :COMPOUND_REGION(u) { SAR_ptr = u.SAR_ptr; HAR_ptr = u.HAR_ptr; HopelessAR_ptr = u.HopelessAR_ptr; Int_ptr = u.Int_ptr; } /////////////////////////////////////////////////// template USERINTERFACE::~USERINTERFACE() { } /////////////////////////////////////////////////// template void USERINTERFACE::Use(Processor* rp) { Error(SAR_ptr-> Size() != 1, "Attempt to specify region processor for multiple regions" ); Atomic* A =(Atomic*)(SAR_ptr->Top()); A->Use(rp); } ////////////////////////////////////////////////// template void USERINTERFACE ::StoreAtomic (GEOMETRY* g, Processor* p) { Atomic* A = new Atomic(g,p); SAR_ptr->Push(A); } ////////////////////////////////////////////////// //template //void //USERINTERFACE ::StoreAtomic (GEOMETRY* g) //{ //Atomic* A = new Atomic(g); //SAR_ptr->Push(A); //} ////////////////////////////////////////////////// template void USERINTERFACE::Preprocess() { while(!SAR_ptr->Empty()) { AtomicRegion* A; A = SAR_ptr->Pop(); Stack Offspring; A->Process(Offspring); if( Offspring.Empty()) { if (!A->Hopeless()) { (*HAR_ptr) += A; } else { HopelessAR_ptr->Push( A); }; LocalInfo().Integral() += A->Integral(); LocalInfo().AbsoluteError () += A->AbsoluteError(); } else { delete A; SAR_ptr->Merge(Offspring); }; }; if (HAR_ptr->Empty()) { LocalInfo().Hopeless() = True; }; } ///////////////////////////////////////////////////// template void USERINTERFACE::Improve() { // (*this) shouldn't be Hopeless() AtomicRegion* A = HAR_ptr->Get(); //HAR_ptr->Print(); //cout << A->Integral()<<" "<AbsoluteError()<Integral(); LocalInfo().AbsoluteError() -= A->AbsoluteError(); Stack Offspring; A->Process(Offspring); if( Offspring.Empty()) { if (!A->Hopeless()) { (*HAR_ptr) += A; } else { HopelessAR_ptr->Push( A); }; LocalInfo().Integral() += A->Integral(); LocalInfo().AbsoluteError() += A->AbsoluteError(); } else { delete A; SAR_ptr->Merge(Offspring); Preprocess(); }; if (HAR_ptr->Empty()) { LocalInfo().Hopeless() = True; }; } ////////////////////////////////////////////////////// template void USERINTERFACE::LocalIntegrand(Integrand* ip) { if (Int_ptr == (Pointer) (0)) Int_ptr = ip; else { Error(!(*Int_ptr == *ip), "Attempt to modify integrand during integration"); } // Error(!HAR_ptr->Empty(), // "Attempt to modify integrand during integration"); if ( !(SAR_ptr->Empty()) ) { SAR_ptr->IteratorReset(); while(!SAR_ptr->IteratorAtEnd()) { SAR_ptr->IteratorNext()->LocalIntegrand(ip); }; } } ////////////////////////////////////////////////////// template void USERINTERFACE::LocalIntegrand(Function f) { LocalIntegrand(new Integrand(f)); } /////////////////////////////////////////////////////// template REGION_COLLECTION USERINTERFACE::operator+( const COMPOUND_REGION& C) { REGION_COLLECTION r; r += (*this); r += C; return r; } ////////////////////////////////////////////////////// template real USERINTERFACE::MaxAtomicError() const { real MaxError=0; if (!HAR_ptr->Empty()) { AtomicRegion* t = HAR_ptr->Look(); MaxError = t->AbsoluteError(); }; return MaxError; } //////////////////////////////////////////////////////// template COMPOUND_REGION* USERINTERFACE::NewCopy() const { return new USERINTERFACE(*this); } /////////////////////////////////////////////////////// //template //USERINTERFACE::operator AtomicRegion*() // { // Error (SAR_ptr->Empty(), // "converting empty compound region to atomic."); // return SAR_ptr->Pop(); // } //////////////////////////////////////////////////// SHAR_EOF fi # end of overwriting check if test -f 'vector.c' then echo shar: will not over-write existing file "'vector.c'" else cat << \SHAR_EOF > 'vector.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////// //File vector.c // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////// #include #include #include #include //////////////////////////////////////////////////// template Vector::Vector(unsigned int s) { TheSize =s; if (s>0) { Contents = new T[TheSize]; Error(!Contents,"Vector:allocation failed"); }; } ////////////////////////////////////////////////////// template Vector::Vector() { TheSize = 0; } ////////////////////////////////////////////////////// template Vector::~Vector() { if (TheSize>0) delete [] Contents; } ////////////////////////////////////////////////////// template Vector::Vector(const Vector& v) { TheSize = v.TheSize; if (TheSize ==0) { Contents = 0; return; }; Contents = new T[TheSize]; Error(!Contents,"Vectorcopyconst:allocation failed"); for (unsigned int i =0;i Vector::Vector( unsigned int s,T* v) { TheSize = s; Contents = new T[TheSize]; for (unsigned int i =0;i const T& Vector::operator[](unsigned int i) const { Error( i>=TheSize,"arrayindex constraint violation"); return Contents[i]; } ////////////////////////////////////////////////////// template T& Vector::operator[](unsigned int i) { Error( i>=TheSize,"array index constraint violation"); return Contents[i]; } ////////////////////////////////////////////////////// template Vector& Vector::operator=(const Vector& v) { if (TheSize == 0) { TheSize = v.TheSize; Contents = new T[TheSize]; Error(!Contents,"Vectorassign:allocation failed"); }; Error( (TheSize != v.TheSize),"lengths of arrays incompatible"); for (unsigned int i =0;i Boolean Vector::operator==(const Vector& v) const { if (TheSize !=v.TheSize) { return False; } else { Boolean b = True; for (unsigned int i=0;i Boolean Vector::operator!=(const Vector& v) const { return (Boolean)!( (*this) == v); } /////////////////////////////////////////////////// template unsigned int Vector::Size() const { return TheSize; } ////////////////////////////////////////////// //template //ostream& //operator << (ostream& os,const Vector& v) //{ //os << "Vector"; //for (unsigned int i=0;i 'vstack.c' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////// //File vstack.cpp // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////// #include #include #include #include #include template VectorStack::VectorStack() :Vector() { } /////////////////////////////////////////////////// template VectorStack::VectorStack(const VectorStack& v) :Vector(v) { } /////////////////////////////////////////////////// template VectorStack& VectorStack::operator=(const VectorStack& v) { if (TheSize == 0) { TheSize = v.TheSize; Contents = new T[TheSize]; Error(!Contents,"Vectorassign:allocation failed"); }; Error( (TheSize != v.TheSize),"lengths of arrays incompatible"); for (unsigned int i =0;i void VectorStack::operator += (const T& t) { T* New = new T[TheSize+1]; for(unsigned int i=0;i 'C2.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : C2.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Parallelogram // ------------------------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // the geometry of a 2D parallelogram // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1)Parallelogram(const Point& A, // const Point& B, // const Point& C) // ------------------------------- // constructs a parallelogram with vertices // A, B, C and D= B+C-A. // // SELECTORS: // 1) const Point& Vertex (int i ) const // ------------------------------------- // returns the i-th vertex. 0<=i<3 // referring to the constructor, i=0 returns A, // i=1 B and i=2 C. D can't be retrieved. // // 2) real Volume() const // ---------------------- // // 3) Processor* DefaultProcessor()const // ---------------------------------------------------- // // // MODIFIERS: // 1) void Volume(real) // -------------------- // informs the par. about its volume, in order to // avoid computation of it // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// #ifndef C2_H #define C2_H ///////////////////////////////////////////////////////// #include #include #include #include #include #include ///////////////////////////////////////////////////////// class Parallelogram : public Geometry { public: Parallelogram (const Point&,const Point&, const Point&); const Point& Vertex(int)const ; real Volume ()const ; void Volume(real); private: Vector Vertices; real TheVolume; Boolean TheVolumeKnown; void ComputeVolume(); }; ///////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'C2dv2.h' then echo shar: will not over-write existing file "'C2dv2.h'" else cat << \SHAR_EOF > 'C2dv2.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : C2dv2.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(long lines split) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Parallelogram_Divide2 // ------------------------------------------------- // // BASECLASSES: // SameShapeDivisor // // PURPOSE: // to cut a Parallelogram in 2 new ones // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Parallelogram_Divide4() // ------------------------ // // SELECTORS: // 1) int NumberOfParts() const // ---------------------------- // returns 2 // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Apply(const Parallelogram& P, Stack& S // , const Vector& DiffOrder) // ---------------------------------------------------------- // divides P by halving its sides. the new parts are // returned in S. If DiffOrder[0] > DiffOrder[1] then P // is divided by halving the edge {Vertex(0),Vertex(1)} // otherwise the edge {Vertex(0),Vertex(2)} is halved. // ///////////////////////////////////////////////////////// #ifndef C2DV2_H #define C2DV2_H ////////////////////////////////////////// #include #include //////////////////////////////////////// class Parallelogram_Divide2 :public SameShapeDivisor { public: Parallelogram_Divide2(); void Apply(const Parallelogram&, Stack&, const Vector&); int NumberOfParts() const {return 2;}; }; ////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'C2dv4.h' then echo shar: will not over-write existing file "'C2dv4.h'" else cat << \SHAR_EOF > 'C2dv4.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : C2dv4.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(long lines split) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Parallelogram_Divide4 // ------------------------------------------------- // // BASECLASSES: // SameShapeDivisor // // PURPOSE: // Divides a Parallelogram in 4 new ones. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Parallelogram_Divide4() // ------------------------ // // SELECTORS: // 1) int NumberOfParts() const // ---------------------------- // returns 4 // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Apply(const Parallelogram& P, Stack& S // , const Vector& DiffOrder) // ---------------------------------------------------------- // divides P by halving its sides. the new parts are // returned in S,DiffOrder isn't used. // ///////////////////////////////////////////////////////// #ifndef C2DV4_H #define C2DV4_H ////////////////////////////////////////// #include #include //////////////////////////////////////// class Parallelogram_Divide4 :public SameShapeDivisor { public: Parallelogram_Divide4(); void Apply(const Parallelogram&, Stack&, const Vector&); int NumberOfParts() const {return 4;}; }; ////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'C2interf.h' then echo shar: will not over-write existing file "'C2interf.h'" else cat << \SHAR_EOF > 'C2interf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : C2interf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PARALLELOGRAM // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // End-user interface to a parallelogram. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) PARALLELOGRAM(const Point& A, // const Point& B, // const Point& C) // ------------------------------ // constructs a parallelogram with 4 vertices // A, B, C, and D=B+C-A // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// // DEFINITION OF CLASS RECTANGLE // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // End-user interface to a parallelogram. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) RECTANGLE(const Point& A, // const Point& B, // const Point& C) // ------------------------------ // constructs a parallelogram with 4 vertices // A, B, C, and D=B+C-A // AB should be orthogonal to BC // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef C2INTERF_H #define C2INTERF_H /////////////////////////////////////////////////// #include #include /////////////////////////////////////////////////// class PARALLELOGRAM : public USERINTERFACE { public: PARALLELOGRAM(const Point&,const Point&,const Point&); }; ////////////////////////////////////////////////// class RECTANGLE : public USERINTERFACE { public: RECTANGLE(const Point&,const Point&,const Point&); }; ////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'C2prc.h' then echo shar: will not over-write existing file "'C2prc.h'" else cat << \SHAR_EOF > 'C2prc.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : C2prc.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(typedef introduced) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Parallelogram_Processor // ------------------------------------------------- // // BASECLASSES: // Processor // // PURPOSE: // A processor for two-dimensional parallelograms. // first a degree 13 rule is applied to the region // Fourth order divided differences along the axes are // computed. If they're very much different, the region // is cut in two, otherwise it is cut in four. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Parallelogram_Processor(); // ----------------------------- // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Process(Stack&); // -------------------------------------------------- // see class Processor // // 2) virtual Processor* NewCopy() const=0 // ------------------------------------------------- // // makes a new copy (using the copy constructor) and // returns a pointer to it. ///////////////////////////////////////////////////////// #ifndef C2PRC_H #define C2PRC_H ////////////////////////////////////////////// #include #include #include #include #include ///////////////////////////////////////////// class Parallelogram_Processor : public Processor { public: typedef Rule RuleParallelogram; typedef SameShapeDivisor SameShapeDivisorParallelogram; Parallelogram_Processor(); void Process(Stack&); Processor* NewCopy() const; protected: static Pointer TheRule; static Pointer TheDivisor4; static Pointer TheDivisor2; unsigned int TimesCalled; Parallelogram_Processor* Descendant() const; Vector Diffs; }; ///////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'C2rule13.h' then echo shar: will not over-write existing file "'C2rule13.h'" else cat << \SHAR_EOF > 'C2rule13.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : C2rule13.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(long lines split) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Parallelogram_Rule13 // ------------------------------------ // // BASECLASSES: // Rule // // // PURPOSE: // A degree 13 rule for a rectangle. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // None // SELECTORS: // 1) int Degree() const // --------------------- // returns 13 // // 2) int NumberOfPoints(int ) const // -------------------------------------- // returns 37. // // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // 1) ApplyWithDiffs(Integrand & I, // Parallelogram& H,real& Result,real& Error // Vector& D) // ------------------------------------------------- // Input parameters: // I: Integrand // H: rectangle to be integrated. H.Dimension() // should be 2. // Output parameters: // Result: approximation to the integral // Error: absolute error estimation // D: Fourth order divided differences in each direction // D[0] refers to {Vertex(0),Vertex(1)}; // D[1] refers to {Vertex(0),Vertex(2)}; // // /////////////////////////////////////////////////////////// #ifndef C2RULE13_H #define C2RULE13_H ///////////////////////////////////////// #include #include ////////////////////////////////////////// class Parallelogram_Rule13 : public Rule { public: Parallelogram_Rule13(); void ApplyWithDiffs(Integrand&,Parallelogram&,real& Result, real& Error,Vector&); int NumberOfPoints() const {return 37;}; int Degree () const {return 13;}; }; //////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'C2toS2.h' then echo shar: will not over-write existing file "'C2toS2.h'" else cat << \SHAR_EOF > 'C2toS2.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : C2toS2.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// //////////////////////////////////////////////////////// // DEFINITION OF CLASS PolarToRectangular // ------------------------------- // // BASECLASSES: // Transformation // // // PURPOSE: // implements a transformation from polar to // rectangular coordinates // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) PolarToRectangular() // ------------------------ // // SELECTORS: // None // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // 1) void Transform (real& w, Point& p) // --------------------------------------- // Multiplies w by the Jacobian at p and then replaces p by // the transformed point. // /////////////////////////////////////////////////////////// #ifndef C2TOS2_H #define C2TOS2_H //////////////////////////////////////////////////////// #include #include /////////////////////////////////////////////////////// class PolarToRectangular :public Transformation { public: PolarToRectangular(); void Transform (real &w, Point& p); }; //////////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'C2togr.h' then echo shar: will not over-write existing file "'C2togr.h'" else cat << \SHAR_EOF > 'C2togr.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : C2togr.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS C2toGR // ------------------------------------------------- // // BASECLASSES: // Transformation // // PURPOSE: // transformation from parallelogram to generalized // rectangle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) C2toGR(GeneralizedRectangle*) // ------------ // The target region has to be supplied // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Transform(real & w, Point & p) // -------------------------------------- // multiplies w by the Jacobian at p and then // replaces p by the transformed point // ///////////////////////////////////////////////////////// #ifndef C2TOGR_H #define C2TOGR_H ///////////////////////////////////////////////////////// #include #include #include #include /////////////////////////////////////////////////// class C2toGR : public Transformation { public: C2toGR( GeneralizedRectangle*); void Transform(real& w, Point& p); private: Pointer GR_ptr; }; ////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'E2.h' then echo shar: will not over-write existing file "'E2.h'" else cat << \SHAR_EOF > 'E2.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : E2.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Plane // ---------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // implements the geometry of a plane // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Plane() // ---------------------------- // constructs a plane with center=(0,0) and the unit // on both coordinate axis = 1. // // 2) Plane(const Point& center) // --------------------------------------------------- // Constructs a plane given an integrand an a center point. // the unit on both axis = 1. // // 3) Plane(const Point& center, // const real& xscale, const real& yscale) // ---------------------------------------------------- // same as above, but now the scales can be set. // // // SELECTORS: // 1) real ScaleX() const // --------------------------- // returns a scale factor for the X coordinate. // // 2) real ScaleX() const // --------------------------- // returns a scale factor for the X coordinate. // // 3) const Point& Center() const // ------------------------------ // // 4) Processor* DefaultProcessor() const // --------------------------------------------- // // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // None // /////////////////////////////////////////////////////////// #ifndef E2_H #define E2_H ////////////////////////////////////////////////// #include #include #include #include ////////////////////////////////////////////////// class Plane : public Geometry { public: Plane (); Plane (const Point&); Plane (const Point&, real, real); real ScaleX() const ; real ScaleY() const ; const Point& Center()const; private: real xscale,yscale; Point TheCenter; }; ////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'E2adapt.h' then echo shar: will not over-write existing file "'E2adapt.h'" else cat << \SHAR_EOF > 'E2adapt.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : E2adapt.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Nov 1994 V0.1d(re-ordering of member declarations) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PlaneAdaptive // ------------------------------------------------- // // BASECLASSES: // Processor // // PURPOSE: // during the first call of Process() a degree 13 rule // is applied to the plane. during the second call // the plane is divided into a CIRCLE and an OUT_CIRCLE // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) PlaneAdaptive() // ---------------- // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Process( Stack&) // ------------------------------------------------------- // see Processor<> // // 2) virtual Processor* NewCopy() const=0 // ------------------------------------------------- // // makes a new copy (using the copy constructor) and // returns a pointer to it. ///////////////////////////////////////////////////////// #ifndef E2ADAPT_H #define E2ADAPT_H ///////////////////////////////////////////////////// #include #include #include //////////////////////////////////////////////////// class PlaneAdaptive: public Processor { public: PlaneAdaptive(); void Process(Stack&); Processor* NewCopy() const; private: static void Rule(Integrand&,Plane&,real&,real&,real&); unsigned int TimesCalled; real HalfValueRadius; } ; ///////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'E2interf.h' then echo shar: will not over-write existing file "'E2interf.h'" else cat << \SHAR_EOF > 'E2interf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : E2interf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PLANE // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // End-user interface to planes // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1)PLANE() // -------- // // 2)PLANE(const Point& Center) // ---------------------------- // Center indicates where in the plane the // activity is the greatest. // // 3)PLANE(const Point& Center, // real ScaleX, real ScaleY) // ------------------------------------ // same as 2) but with an indication of scales. // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef E2INTERF_H #define E2INTERF_H //////////////////////////////////////////////// #include #include #include #include //////////////////////////////////////////////// class PLANE : public USERINTERFACE { public: PLANE(); PLANE(const Point&); PLANE(const Point&, real, real); }; //////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'E2sec.h' then echo shar: will not over-write existing file "'E2sec.h'" else cat << \SHAR_EOF > 'E2sec.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : E2sec.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PlaneSector // ------------------------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // the geometry of a plane sector // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) PlaneSector(const Point& A, const Point& B, // const Point& C) // ------------------------------------------------- // constructs a PlaneSector. AB should not be // perpendicular to BC. // // 2) PlaneSector(const Point& O,real r,real theta1,real,theta2) // ------------------------------------------------ // // SELECTORS: // 1) const Point& Center() const // ------------------------------ // // 2) real InnerRadius() const // --------------------------- // // 3) real SmallAngle() const // -------------------------- // // 4) real BigAngle() const // ------------------------ // // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef E2SEC_H #define E2SEC_H ///////////////////////////////////////// #include #include #include ///////////////////////////////////////// class PlaneSector : public Geometry { public: PlaneSector( const Point& A, const Point& B, const Point& C); PlaneSector( const Point& O,real r,real theta1,real theta2); const Point& Center() const; real InnerRadius() const; real OuterRadius() const; real SmallAngle () const; real BigAngle () const; private: Point TheCenter; real TheInnerRadius, TheSmallAngle, TheBigAngle; }; ////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'E2secitf.h' then echo shar: will not over-write existing file "'E2secitf.h'" else cat << \SHAR_EOF > 'E2secitf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : E2secitf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PLANE_SECTOR // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // End-user interface to PlaneSectors // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) PLANE_SECTOR(const Point& A, // const Point& B, // const Point& C) // --------------------------------- // constructs a plane sector with vertices A,B,C // AB shouldn't be perpendicular to BC // // 2) PLANE_SECTOR(const Point& O,real r,real theta1,real theta2) // --------------------------------------------------------------- // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef E2SECITF_H #define E2SECITF_H ///////////////////////////////////////// #include #include ///////////////////////////////////////// class PLANE_SECTOR : public USERINTERFACE { public: PLANE_SECTOR(const Point&,const Point&, const Point&); PLANE_SECTOR(const Point&,real,real,real); }; ///////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'E2secprc.h' then echo shar: will not over-write existing file "'E2secprc.h'" else cat << \SHAR_EOF > 'E2secprc.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : E2secprc.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PlaneSector_Processor // ------------------------------------------------- // // BASECLASSES: // Processor // // PURPOSE: // transforms the plane sector into a semi-infinite strip // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1)PlaneSector_Processor() // ---------------------------- // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Process(Stack&) // ------------------------------------------------- // see Processor<> // // 2) virtual Processor* NewCopy() const=0 // ------------------------------------------------- // // makes a new copy (using the copy constructor) and // returns a pointer to it. ///////////////////////////////////////////////////////// #ifndef E2SECPRC_H #define E2SECPRC_H ////////////////////////////////////////////// #include #include ///////////////////////////////////////////// class PlaneSector_Processor: public Processor { public: PlaneSector_Processor(); void Process(Stack&); Processor* NewCopy() const; }; ///////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'E2tostrp.h' then echo shar: will not over-write existing file "'E2tostrp.h'" else cat << \SHAR_EOF > 'E2tostrp.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : E2tostrp.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS E2toIS // ------------------------------------------------- // // BASECLASSES: // Transformation // // PURPOSE: // transformation from plane to infinite strip // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) E2toIS(InfiniteStrip*) // ------------ // The target region has to be supplied // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Transform(real & w, Point & p) // -------------------------------------- // multiplies w by the Jacobian at p and then // replaces p by the transformed point // ///////////////////////////////////////////////////////// #ifndef E2TOSTRP_H #define E2TOSTRP_H ///////////////////////////////////////////////////////// #include #include #include #include /////////////////////////////////////////////////// class E2toIS : public Transformation { public: E2toIS( InfiniteStrip*); void Transform(real& w, Point& p); private: Pointer IS_ptr; }; ////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'S2.h' then echo shar: will not over-write existing file "'S2.h'" else cat << \SHAR_EOF > 'S2.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : S2.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Circle // -------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // Circle is a 2D circle with arbitrary center and // radius. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Circle(const Point& Center, real Radius) // -------------------------------- // defines the region. // // 2) Circle( const Point& Center, Point Boundary) // -------------------------------- // defines the region using its center and a point on the boundary. // SELECTORS: // 1) const Point& Center()const // ------------------------------ // // 2) real Radius() const // ----------------------- // // 3) real Volume() const // ---------------------- // // 4) Processor* DefaultProcessor()const // --------------------------------------------- // // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // None // /////////////////////////////////////////////////////////// #ifndef S2_H #define S2_H ///////////////////////////////////////// #include #include #include #include ///////////////////////////////////////// class Circle : public Geometry { public: Circle(const Point& Center,real Radius); Circle(const Point& Center,const Point& Boundary); real Volume()const ; const Point& Center()const; real Radius() const; private: Point TheCenter; real TheRadius; }; ////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'S2adapt.h' then echo shar: will not over-write existing file "'S2adapt.h'" else cat << \SHAR_EOF > 'S2adapt.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : S2adapt.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Nov 1994 V0.1d(re-ordering of member declarations) // 25 Jan 1996 V0.1f(typedef introduced) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS CircleAdaptive // ------------------------------------------------- // // BASECLASSES: // Processor // // PURPOSE: // A circle processor. First a rule is // applied to the circle. Afterwards the circle is // divided into a central circle and some // polar rectangles. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1)CircleAdaptive(Rule*) // ------------------------------- // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Process( Stack) // ------------------------------------------------- // see class Processor // // 2) virtual Processor* NewCopy() const=0 // ------------------------------------------------- // // makes a new copy (using the copy constructor) and // returns a pointer to it. ///////////////////////////////////////////////////////// #ifndef S2ADAPT_H #define S2ADAPT_H ///////////////////////////////////////////////// #include #include #include #include ///////////////////////////////////////////////// class CircleAdaptive : public Processor { public: typedef Rule RuleCircle; CircleAdaptive( Rule * ); void Process(Stack& ); Processor* NewCopy() const; private: Pointer< RuleCircle > TheRule; CircleAdaptive* Descendant()const; unsigned int TimesCalled; unsigned int GenerationNumber; }; /////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'S2interf.h' then echo shar: will not over-write existing file "'S2interf.h'" else cat << \SHAR_EOF > 'S2interf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : S2interf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS CIRCLE // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // end-user interface to circles // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) CIRCLE(const Point& Center, const Point& B) // ---------------------------------------------- // constructs a circle with Center as its origin // and B a point on the boundary. // // 2) CIRCLE(const Point& Center, real Radius) // ------------------------------------------- // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef S2INTERF_H #define S2INTERF_H //////////////////////////////////////////////// #include #include //////////////////////////////////////////////// class CIRCLE : public USERINTERFACE { public: CIRCLE(const Point&,const Point&); CIRCLE(const Point&, real); }; //////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'S2rule13.h' then echo shar: will not over-write existing file "'S2rule13.h'" else cat << \SHAR_EOF > 'S2rule13.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : S2rule13.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Circle_Rule13 // ------------------------------------ // // BASECLASSES: // Rule // // // PURPOSE: // A degree 13 rule for a circle. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1)Circle_Rule13() // ------------------ // // SELECTORS: // 1) int Degree() const // --------------------- // returns 13 // // 2) int NumberOfPoints() const // -------------------------------------- // returns 36. // // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // 1) Apply(Integrand& I,Circle& H, // real& Result,real& Error) // ------------------------------------------------- // Inputparameters: // I: the integrand // H: circle to be integrated. H.Dimension() // should be 2. // Outputparameters: // Result: approximation to the integral // Error: absolute error estimation // /////////////////////////////////////////////////////////// #ifndef S2RULE13_H #define S2RULE13_H ///////////////////////////////////////// #include #include ////////////////////////////////////////// class Circle_Rule13 : public Rule { public: Circle_Rule13(); void Apply(Integrand&,Circle&,real& Result ,real& Error); int NumberOfPoints() const {return 36;}; int Degree () const {return 13;}; }; //////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'T2.h' then echo shar: will not over-write existing file "'T2.h'" else cat << \SHAR_EOF > 'T2.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : T2.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Triangle // ------------------------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // implements the geometry of a simple triangle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Triangle (const Point&,const Point&,const Point&) // ---------------------------------------------------- // constructs a 2D Triangle given its 3 vertices // // SELECTORS: // 1) const Point& Vertex(int i) const // ----------------------------------- // returns the i-th vertex, 0<=i<3 // // 2) real Volume() const // ----------------------- // // 3) Processor* DefaultProcessor() const // ------------------------------------------------ // // MODIFIERS: // 1) void Volume(real) // -------------------- // informs the triangle about its volume, to avoid // future computations of it // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef T2_H #define T2_H ////////////////////////////////////////////////// #include #include #include #include #include #include ////////////////////////////////////////////////// class Triangle : public Geometry { public : Triangle(const Point&,const Point&,const Point&); const Point& Vertex (int) const; real Volume() const; void Volume(real); private: Vector Vertices; real TheVolume; Boolean TheVolumeKnown; void ComputeVolume(); }; //////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'T2dv4.h' then echo shar: will not over-write existing file "'T2dv4.h'" else cat << \SHAR_EOF > 'T2dv4.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : T2dv4.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Triangle_Divide4 // ------------------------------------------ // // BASECLASSES: // SameShapeDivisor // // // PURPOSE: // provides a means to cut Triangles in 4. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Triangle_Divide4() // --------------------- // // SELECTORS: // 1) NumberOfParts() const // ------------------------ // returns 4 // // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // 1) void Apply(Triangle& H, // Stack& S,const Vector& D) // -------------------------------- // divides H into parts and returns them in S // /////////////////////////////////////////////////////////// #ifndef T2DV4_H #define T2DV4_H ////////////////////////////////////////// #include #include //////////////////////////////////////// class Triangle_Divide4 :public SameShapeDivisor { public: Triangle_Divide4(); void Apply(const Triangle&, Stack&, const Vector&); int NumberOfParts() const {return 4;}; }; ////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'T2interf.h' then echo shar: will not over-write existing file "'T2interf.h'" else cat << \SHAR_EOF > 'T2interf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : T2interf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS TRIANGLE // ---------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // an end-user interface to Triangle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1)TRIANGLE(const Point& , const Point&, const Point&) // --------------------------------------------------- // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef T2INTERF_H #define T2INTERF_H /////////////////////////////////////////////////// #include #include /////////////////////////////////////////////////// class TRIANGLE : public USERINTERFACE { public: TRIANGLE(const Point&,const Point&,const Point&); }; ////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'T2rule13.h' then echo shar: will not over-write existing file "'T2rule13.h'" else cat << \SHAR_EOF > 'T2rule13.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : T2rule13.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Triangle_Rule13 // ------------------------------------ // // BASECLASSES: // Rule // // // PURPOSE: // A degree 13 rule for a rectangle. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1)Triangle_Rule13() // ------------------- // // SELECTORS: // 1) int Degree() const // --------------------- // returns 13 // // 2) int NumberOfPoints() const // -------------------------------------- // returns 37. // // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // 1) Apply(Integrand& I,Triangle& H,real& Result,real& // Error) // ------------------------------------------------- // Input parameters: // I: the integrand // H: Triangle to be integrated. // Output parameters: // Result: approximation to the integral // Error: absolute error estimation // /////////////////////////////////////////////////////////// #ifndef T2_RULE13 #define T2_RULE13 /////////////////////////////////////////// #include #include /////////////////////////////////////////// class Triangle_Rule13 :public Rule { public: Triangle_Rule13(); void Apply(Integrand&,Triangle& ,real&,real& ); int Degree() const {return 13;}; int NumberOfPoints () const {return 37;}; }; /////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'T2tops.h' then echo shar: will not over-write existing file "'T2tops.h'" else cat << \SHAR_EOF > 'T2tops.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : T2tops.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Nov 1994 V0.1d(re-ordering of member declarations) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS C2toGR // ------------------------------------------------- // // BASECLASSES: // Transformation // // PURPOSE: // transformation from triangle to parabolic segment // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) T2toPS(ParabolicSegment* g) // ------------ // the target region has to be supplied // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Transform(real & w, Point & p) // -------------------------------------- // multiplies w by the Jacobian at p and then // replaces p by the transformed point // ///////////////////////////////////////////////////////// #ifndef T2TOPS_H #define T2TOPS_H ///////////////////////////////////////////////////////// #include #include #include #include /////////////////////////////////////////////////// class T2toPS : public Transformation { public: T2toPS( ParabolicSegment*); void Transform(real& w, Point& p); private: Point P,M,H; real a,k; }; ////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'atomic.h' then echo shar: will not over-write existing file "'atomic.h'" else cat << \SHAR_EOF > 'atomic.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : atomic.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(typedef introduced) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Atomic // ------------------------------------------------- // // BASECLASSES: // AtomicRegion // // PURPOSE: // provides a base class to all atomic regions. // provides a means for constructing them, as well // as for altering their integrand or processor // provides a method for processing them // // TEMPLATES: // it should be instantiated with a class GEOMETRY // derived from Geometry // this GEOMETRY should have a member // Processor* DefaultProcessor() const. // // METHODS: // CONSTRUCTORS: // 1) Atomic(GEOMETRY* G, Processor* P ) // ------------------------------------------ // constructs an atomic region with *G as its geometry // and *P as its processor // // // SELECTORS: // None // // MODIFIERS: // 1) Use(Processor* P) // ----------------------------- // to change the processor to be used // // 2) LocalIntegrand(Integrand* I) // ------------------------------- // to change the integrand // // OPERATORS: // None // // SPECIAL: // 1) Process( Stack& Offspring) // ------------------------------------------- // attempts to compute an integral and an error // estimate. possible offspring is returned. // ///////////////////////////////////////////////////////// #ifndef ATOMIC_H #define ATOMIC_H //////////////////////////////////////////// #include #include ////////////////////////////////////////// template class Atomic : public AtomicRegion { friend class Processor; public: typedef Processor ProcessorGEOMETRY; Atomic(GEOMETRY*, Processor*); void Use(Processor*); void Process(Stack& Offspring); void LocalIntegrand(Integrand*); private: Pointer G_ptr; Pointer< ProcessorGEOMETRY> RP_ptr; Pointer I_ptr; RegionInfo* LocalRegionInfo() ; }; /////////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif /////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'atomreg.h' then echo shar: will not over-write existing file "'atomreg.h'" else cat << \SHAR_EOF > 'atomreg.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : atomreg.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS AtomicRegion // -------------------------------- // // BASECLASSES: // Region // // PURPOSE: // common base class to all Atomic<> regions, merely // to be able to group them in a single set. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) AtomicRegion() // ----------------- // // SELECTORS: // None // // MODIFIERS: // 1) void LocalIntegrand(Integrand*) // ---------------------------------- // to change the integrand // // // OPERATORS: // None // // SPECIAL: // 1) void Process(Stack& Offspring) // ----------------------------------------------- // attempts to compute integral and error over // the region. possible Offspring is returned. // ///////////////////////////////////////////////////////// #ifndef ATOMREG_H #define ATOMREG_H /////////////////////////////////////////////// #include #include #include /////////////////////////////////////////////// class AtomicRegion : public Region { public: AtomicRegion(); virtual void LocalIntegrand(Integrand*)=0; virtual void Process(Stack& Offspring)=0; virtual ~AtomicRegion(); }; ///////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'boolean.h' then echo shar: will not over-write existing file "'boolean.h'" else cat << \SHAR_EOF > 'boolean.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : boolean.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #ifndef BOOLEAN_H #define BOOLEAN_H ///////////////////////////////////////////////// #include ///////////////////////////////////////////////// enum Boolean {False, True}; extern ostream& operator<<(ostream&,const Boolean&); ////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'chrono.h' then echo shar: will not over-write existing file "'chrono.h'" else cat << \SHAR_EOF > 'chrono.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : chrono.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 28 Mar 1996 V0.1h(long instead of int) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Chrono // -------------------------- // // BASECLASSES: // Counter // // PURPOSE: // Chrono implements a simple stop-watch; it can be used for // all sorts of timings. At the moment it will only give // useful results when compiled with -DGETRUSAGE on a // system that has a getrusage() system call. If // GETRUSAGE is not defined, Read() will always return 0. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Chrono() // ----------- // Default constructor. The stop-watch isn't running after // construction. // SELECTORS: // 1) unsigned long Read() // ---------------- // Read reads out the time in milliseconds. Currently it // is accurate up to one millisecond. // MODIFIERS: // 1) void Start() // --------------- // Start() makes the stop-watch running. Successive calls // of Start() have no effect. // 2) void Stop() // --------------- // Stops the stop-watch. After Stop(), Read() will always // read out the same value, until the stop-watch is started // again. Stopping a stopped stop-watch has no effect. // 3) void Reset() // --------------- // After a call of Reset(), Read() will read out zero, // until the stop-watch is started again. A running // stop-watch should not be Reset(). // // OPERATORS: // None // SPECIAL: // None ////////////////////////////////////////////////////////// #ifndef CHRONO_H #define CHRONO_H ////////////////////////////////////////////////////////// #include #include ////////////////////////////////////////////////////////// class Chrono :public Counter { public: Chrono(); void Start(); void Stop(); void Reset(); unsigned long Read(); private: long Time; long OldTime; Boolean Running; long times_(); }; ///////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'compreg.h' then echo shar: will not over-write existing file "'compreg.h'" else cat << \SHAR_EOF > 'compreg.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : compreg.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS COMPOUND_REGION // ------------------------------------------------- // // BASECLASSES: // Region // // PURPOSE: // groups regions and their eventual offspring. applies // the global adaptive algorithm. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) COMPOUND_REGION() // ------------------- // an empty compound region is created. the integral // and error over it will be 0. calls of Process() // will have no effect. // // 2) COMPOUNDERGION(const COMPOUND_REGION& C) // ------------------------------------------ // implements sharing semantics !! // // SELECTORS: // None // // MODIFIERS: // 1) void LocalIntegrand (Integrand* I) // ------------------------------------ // establishes *I as the integrand to be integrated // on all subregions that are contained in *this. // When subsequent calls are made, only the last one // has effect. It's an error to call this function // after the first call of Process(). // // // 2) void Process() // ----------------- // performs one step in the global adaptive algorithm. // the first call of Process() will compute an initial // approximation; subsequent calls will try to improve // this // // OPERATORS: // // 1) COMPOUND_REGION& operator= // (const COMPOUND_REGION& C) // --------------------------------- // implements sharing semantics !! // // SPECIAL: // None // // NOTE: The other public members are not to be // used by normal clients. ///////////////////////////////////////////////////////// #ifndef COMPREG_H #define COMPREG_H ///////////////////////////////////////////// #include #include #include #include #include ///////////////////////////////////////////// ///////////////////////////////////////////// class COMPOUND_REGION : public Region { public: virtual void LocalIntegrand(Integrand*)=0; void Process(); COMPOUND_REGION(); virtual ~COMPOUND_REGION(); virtual void Preprocess()=0; virtual void Improve()=0; virtual real MaxAtomicError()const=0; virtual COMPOUND_REGION* NewCopy()const =0; private: enum Status {Virgin,Active}; Status TheStatus; }; /////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'counter.h' then echo shar: will not over-write existing file "'counter.h'" else cat << \SHAR_EOF > 'counter.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : counter.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 28 Mar 1996 V0.1h(long instead of int) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Counter // --------------------------- // // BASECLASSES: // None // // // PURPOSE: // Counter is a pure virtual base class for implementing // stop-watch-like classes. // // TEMPLATES: // None // METHODS: // CONSTRUCTORS: // None // // SELECTORS: // 1) virtual unsigned long Read()=0 // -------------------------- // Read reads out the counter // MODIFIERS: // 1) virtual void Start()=0 // ------------------------- // Start() makes the stop-watch running. Successive calls // of Start() have no effect. // 2) virtual void Stop()=0 // ------------------------- // Stops the stop-watch. After Stop(), Read() will always // read out the same value, until the stop-watch is started // again. Stopping a stopped stop-watch has no effect. // 3) virtual void Reset()=0 // ------------------------- // After a call of Reset(), Read() will read out zero, // until the stop-watch is started again. A running // stop-watch should not be Reset(). // // OPERATORS: // None // SPECIAL: // None /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// #ifndef COUNTER_H #define COUNTER_H ////////////////////////////////////////////// class Counter { public: virtual void Start()=0; virtual void Stop()=0; virtual void Reset()=0; virtual unsigned long Read()=0; }; ////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'cubpack.h' then echo shar: will not over-write existing file "'cubpack.h'" else cat << \SHAR_EOF > 'cubpack.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : cubpack.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // PURPOSE: // an include file for the end-user ///////////////////////////////////////////////////////// #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include SHAR_EOF fi # end of overwriting check if test -f 'div.h' then echo shar: will not over-write existing file "'div.h'" else cat << \SHAR_EOF > 'div.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : div.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Divisor // --------------------------- // // BASECLASSES: // ReferenceCounting // // // PURPOSE: // Divisor is a pure virtual base class for implementing // dividing-procedures. Information on the number of // parts the divisor produces, can be retrieved. // // TEMPLATES: // The type of region T which has to be divided is // templated. Currently it is assumed that the parts // after division also are of type T. T should be // derived from class Region. // // METHODS: // CONSTRUCTORS: // 1) Divisor() // ------------ // // SELECTORS: // 1) virtual int NumberOfParts() const=0 // --------------------------------------------------- // returns the number of parts the divisor produces. // // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // None /////////////////////////////////////////////////////////// #ifndef DIV_H #define DIV_H ///////////////////////////////////////// #include ////////////////////////////////////////// template class Divisor: public ReferenceCounting { public: Divisor(); virtual int NumberOfParts() const =0; virtual ~Divisor(); }; /////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif ////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'error.h' then echo shar: will not over-write existing file "'error.h'" else cat << \SHAR_EOF > 'error.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : error.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // PURPOSE // void Error(Boolean b,char* message) is an error // checking and reporting routine. if b is true then // message is printed on stderr and the program is // aborted. ///////////////////////////////////////////////////////// #ifndef ERROR_H #define ERROR_H //////////////////////////////////////// #include #include #include //////////////////////////////////////// inline void Error(int b,char* message) { if (b) { cerr << message < 'eval_ctr.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : eval_ctr.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 28 Mar 1996 V0.1h(long instead of int) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS EvaluationCounter // ------------------------------------- // // BASECLASSES: // Counter // // // PURPOSE: // EvaluationCounter acts as a kind of stop-watch // counting the number of Integrand evaluations // during the time it's running. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) EvaluationCounter() // ---------------------- // Default constructor. The stop-watch isn't running after // construction. // SELECTORS: // 1) unsigned long Read() // ---------------- // Read reads out the number of // IntegrandEvaluations made since Start() was // called. This value remains constant after Stop() is // called. // MODIFIERS: // 1) void Start() // --------------- // Start() makes the stop-watch running. Successive calls // of Start() have no effect. // 2) void Stop() // --------------- // Stops the stop-watch. After Stop(), Read() will always // read out the same value, until the stop-watch is started // again. Stopping a stopped stop-watch has no effect. // 3) void Reset() // --------------- // After a call of Reset(), Read() will read out zero, // until the stop-watch is started again. A running // stop-watch should not be Reset(). // // 4) void Reset(unsigned long value) // ---------------------------------- // allows you to reset the counter to some other // value than zero. Counting will start from this value. // // OPERATORS: // None // SPECIAL: // None /////////////////////////////////////////////////////////// #ifndef EVAL_CTR_H #define EVAL_CTR_H ///////////////////////////////// #include #include //////////////////////////////////////////////// class EvaluationCounter : public Counter { public: EvaluationCounter(); void Start(); void Stop(); void Reset(); void Reset(unsigned long); unsigned long Read(); private: long Strt; long End; unsigned long Bias; Boolean Running; }; //////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'function.h' then echo shar: will not over-write existing file "'function.h'" else cat << \SHAR_EOF > 'function.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : function.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // PURPOSE: // mapping from a Point to a real ///////////////////////////////////////////////////////// #ifndef FUNCTION_H #define FUNCTION_H ///////////////////////////////////////////////////////// #include #include ///////////////////////////////////////////////////////// typedef real (*Function)(const Point&); ///////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'geometry.h' then echo shar: will not over-write existing file "'geometry.h'" else cat << \SHAR_EOF > 'geometry.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : geometry.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Geometry // ------------------------------------------------- // // BASECLASSES: // ReferenceCounting // // PURPOSE: // common base for all geometries // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Geometry( unsigned int Dim) // ------------------------------ // the Dimension must be provided. // // SELECTORS: // 1) unsigned int Dimension() const // --------------------------------- // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef GEOMETRY_H #define GEOMETRY_H ///////////////////////////////////////////////////////// #include ////////////////////////////////////////////////// class Geometry : public ReferenceCounting { public: Geometry (unsigned int Dim); unsigned int Dimension()const; private: unsigned int TheDimension; }; ////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'gr.h' then echo shar: will not over-write existing file "'gr.h'" else cat << \SHAR_EOF > 'gr.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : gr.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Nov 1994 V0.1d(re-ordering of member declarations) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Generalized Rectangle // ----------------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // implements a generalized rectangle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) GeneralizedRectangle(Function f, // const Point& A, const Point& B) // --------------------------------------------------- // constructs a generalized rectangle with two points // and a function; f(P) is the length of the // perpendicular to // the boundary from a point P on the line AB. // // SELECTORS: // 1) const Point& A() const // ------------------------- // returns the point A (see constructor) // // 2) const Point& B() const // ------------------------- // returns the point B (see constructor) // // 3) real Boundary(const Point& P)const // ------------------------------------- // evaluates the boundary function at P(see constructor) // // 4) Processor* // DefaultProcessor() const // ----------------------------------- // // MODIFIERS: // None // // OPERATORS: // None // SPECIAL: // None // /////////////////////////////////////////////////////////// #ifndef gr2_H #define gr2_H ////////////////////////////////////////////////// #include #include #include #include ////////////////////////////////////////////////// class GeneralizedRectangle : public Geometry { public: GeneralizedRectangle (Function, const Point&,const Point&); const Point& A() const; const Point& B() const; real Boundary(const Point&) const; private: const Function TheBoundary; Point TheA; Point TheB; }; ////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'gritf.h' then echo shar: will not over-write existing file "'gritf.h'" else cat << \SHAR_EOF > 'gritf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : gritf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS GENERALIZED_RECTANGLE // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // End-user interface to Generalized Rectangles // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) GENERALIZED_RECTANGLE(Function f, // const Point& A, const Point& B) // --------------------------------------------------- // constructs a generalized rectangle with two points // and a function; f(P) is the length of the // perpendicular to // the boundary from a point P on the line AB. // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef GRITF_H #define GRITF_H //////////////////////////////////////////// #include #include //////////////////////////////////////////// class GENERALIZED_RECTANGLE : public USERINTERFACE { public: GENERALIZED_RECTANGLE(Function, const Point&,const Point&); }; //////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'gs.h' then echo shar: will not over-write existing file "'gs.h'" else cat << \SHAR_EOF > 'gs.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : gs.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Generalized Sector // ----------------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // implements a generalized sector // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) GeneralizedSector(Function f, // real alpha, real beta, const Point& Center) // --------------------------------------------------- // the region is bounded by 2 straight lines going // through Center and having an angle of alpha and // beta respectively with the positive X-axis. a // third boundary line is provided by f, which denotes // the distance from the Center to the boundary for // all angles between alpha and beta. // // SELECTORS: // 1) real Alpha() const // ------------------------- // returns alpha (see constructor) // // 2) real Beta() const // ------------------------- // returns beta (see constructor) // // 3) real Boundary(real P)const // ------------------------------------- // evaluates the boundary function at P(see constructor) // // 4) const Point& Center() const // ------------------------------- // MODIFIERS: // None // // OPERATORS: // None // SPECIAL: // None // /////////////////////////////////////////////////////////// #ifndef GS_H #define GS_H ////////////////////////////////////////////////// #include #include ////////////////////////////////////////////////// typedef real (*RealFunction)(real); ////////////////////////////////////////////////// class GeneralizedSector : public Geometry { public: GeneralizedSector (real(*)(real), real,real,const Point&); real Alpha() const; real Beta() const; real Boundary(real) const; RealFunction Boundary() const; const Point& Center() const; private: Point TheCenter; real TheAlpha,TheBeta; real(*TheBoundary)(real); }; ////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'gsitf.h' then echo shar: will not over-write existing file "'gsitf.h'" else cat << \SHAR_EOF > 'gsitf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : gritf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS GENERALIZED_SECTOR // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // End-user interface to Generalized Rectangles // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) GENERALIZED_SECTOR(real (*F) real, // real Alpha, real Beta, const Point& Center) // --------------------------------------------------- // the region is bounded by 2 straight lines going // through Center and having an angle of alpha and // beta respectively with the positive X-axis. a // third boundary line is provided by f, which denotes // the distance from the Center to the boundary for // all angles between alpha and beta. // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef GSITF_H #define GSITF_H //////////////////////////////////////////// #include #include //////////////////////////////////////////// class GENERALIZED_SECTOR : public USERINTERFACE { public: GENERALIZED_SECTOR( real(*)(real), real,real,const Point&); }; /////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'gsprc.h' then echo shar: will not over-write existing file "'gsprc.h'" else cat << \SHAR_EOF > 'gsprc.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : gsprc.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS GeneralizedSector_Processor // ------------------------------------------------- // // BASECLASSES: // Processor // // PURPOSE: // transforms the generalized sector into a rectangle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1)GeneralizedSector_Processor() // ---------------------------- // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Process(Stack&) // ------------------------------------------------- // see Processor<> // // 2) virtual Processor* NewCopy() const=0 // ------------------------------------------------- // // makes a new copy (using the copy constructor) and // returns a pointer to it. ///////////////////////////////////////////////////////// #ifndef GSPRC_H #define GSPRC_H ////////////////////////////////////////////// #include #include ///////////////////////////////////////////// class GeneralizedSector_Processor : public Processor { public: GeneralizedSector_Processor(); void Process(Stack&); Processor* NewCopy() const ; }; ///////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'heap.h' then echo shar: will not over-write existing file "'heap.h'" else cat << \SHAR_EOF > 'heap.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : heap.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Heap // ------------------------ // // BASECLASSES: // Set // // // PURPOSE: // implements a heap. elements can be added and the // largest element can be accessed. // // TEMPLATES: // The type T of the elements is templated. T must // provide a T* NewCopy() as well as relational // operators <,>,<= and >= // // METHODS: // CONSTRUCTORS: // 1) Heap() // --------- // default constructor // SELECTORS: // 1) T* Look() // ------------ // returns a pointer to the largest element. this // element is not removed from the heap. No copy // is made, so modifications of the element are // potentially dangerous. // MODIFIERS: // 1) T* Get() // ----------- // returns a pointer to the largest element. this // element is removed from the heap. // // 2) void Clear() // -------------- // makes the heap empty and destroys all of its // elements // // OPERATORS: // 1) void operator+=(T* R) // ------------------------------ // Puts a pointer to *R into the heap. // // 2) void operator+=(Heap& H) // ------------------------------ // puts all elements of H in the heap. no copies are // made and the state of H is not defined afterwards. // // SPECIAL: // None // NOTE: // Heap uses a class SubHeap in its implementation. // This class should be thought of as being local to // Heap. However the current compiler we used did not // support nested classes within templates. Direct use // of SubHeap is not recommended, since it will // eventually become local to Heap. /////////////////////////////////////////////////////////// #ifndef HEAP_H #define HEAP_H #include ////////////////////////////////////////////// #include #include #include ///////////////////////////////////////////// template class SubHeap : public Set { public: SubHeap(); ~SubHeap(); T* Get(); T* Look() ; T* Swap( T*); T* Bottom() ; void Clear(); void operator +=( T*); Boolean Saturated() const; void Print() const ; int LeftChild(int) const; int RightChild(int) const; int FatherOfChild(int) const; private: #ifdef SOLARIS T* Contents[256]; SubHeap* Children[256]; #else T* Contents[CAPACITY+1]; SubHeap* Children[CAPACITY+1]; #endif int ActiveChild; int LastChild; }; //////////////////////////////////////////// template class Heap : public Set { public: Heap(); ~Heap(); T* Get(); T* Look() ; void Clear(); void operator+= ( T*); void operator+= (Heap&); void Print() const; private: SubHeap TheSubHeap; }; //////////////////////////////////////////// #ifdef TEMPLATEINCLUDE #include #endif #endif SHAR_EOF fi # end of overwriting check if test -f 'integran.h' then echo shar: will not over-write existing file "'integran.h'" else cat << \SHAR_EOF > 'integran.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : integran.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 8 Sep 1994 V0.1a(operator added) // 25 Jan 1996 V0.1f(typedef introduced) // 28 Mar 1996 V0.1h(long instead of int) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Integrand // ----------------------------- // // BASECLASSES: // ReferenceCounting // // PURPOSE: // implements an integrand class. Apart from evaluating // integrands, it takes care of counting the number of // evaluations and it permits the integrand to be // transformed. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Integrand( Function f) // --------------------------------- // constructs the Integrand. The function to be // integrated is f. // // 2) Integrand( const Integrand& I) // --------------------------------- // copy constructor // // 3) Integrand( const Integrand& I, // const Transformation& T) // -------------------------------------- // constructs a new Integrand by applying T to I // // 4) Integrand() // -------------- // constructs an Integrand without the function // to be integrated being known. an evaluation of // this Integrand results in an error. // // SELECTORS: // 1)static long NumberOfEvaluations() // ---------------------------------- // returns the total number of function evaluations // since the program was started. // See also class EvaluationCounter. // // MODIFIERS: // None // OPERATORS: // 1) real operator() (const Point& p) // ------------------------------------- // evaluates the Integrand at Point p. // // SPECIAL: // None /////////////////////////////////////////////////////////// #ifndef INTEGRAN_H #define INTEGRAN_H #include #include #include #include #include #include #include /////////////////////////////////////////////////////// class Integrand : public ReferenceCounting { public: typedef Pointer< Transformation > PointerTransformation; Integrand(); Integrand(Function); Integrand(const Integrand&,Transformation* ); Integrand(const Integrand&); real operator()(const Point&); Boolean operator==(const Integrand&) const; static long NumberOfEvaluations(); private: static long Number; Function TheFunction; VectorStack< PointerTransformation > AppliedTransformations; }; #endif SHAR_EOF fi # end of overwriting check if test -f 'integrat.h' then echo shar: will not over-write existing file "'integrat.h'" else cat << \SHAR_EOF > 'integrat.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : integrat.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 28 Mar 1996 V0.1h(DefaultMaxEval = unsigned long) ///////////////////////////////////////////////////////// // PURPOSE: // Integrate is the algorithm controller of Cubpack++. // 4 different versions are supplied: // // 1)real Integrate( // Function f, // COMPOUND_REGION& TheCollection, // real RequestedAbsolute, // real RequestedRelative, // unsigned long MaxEval, // ); // ----------------------------------------------- // input parameters: // RequestedAbsolute: absolute error request // RequestedRelative: relative error request // MaxEval: bound on the number of function // evaluations. // f:the integrand // return value: // the approximation of the integral is returned // in-out parameters: // TheCollection: collection of regions over which the // integration is to take place. // On return, TheCollection.Integral() // will contain an approximation of the // integral. // // // 2)real Integrate( // COMPOUND_REGION& TheCollection, // real RequestedAbsolute, // real RequestedRelative, // unsigned long MaxEval, // ); // ----------------------------------------------- // input parameters: // RequestedAbsolute: absolute error request // RequestedRelative: relative error request // MaxEval: bound on the number of function // evaluations. // return value: // the approximation of the integral is returned // in-out parameters: // TheCollection: collection of regions over which the // integration is to take place. // Before the call of Integrate() // a local integrand must have been // specified for all members of TheCollection // On return, TheCollection.Integral() // will contain an approximation of the // integral. // // // 3)void Integrate( // Function f, // COMPOUND_REGION& TheCollection, // real& Integral, // real& AbsErr, // real RequestedAbsolute, // real RequestedRelative, // unsigned long MaxEval, // ); // ----------------------------------------------- // input parameters: // RequestedAbsolute: absolute error request // RequestedRelative: relative error request // MaxEval: bound on the number of function // evaluations. // f:the integrand // output parameters: // Integral: approximation of the integral // AbsError: estimate of the error // in-out parameters: // TheCollection: collection of regions over which the // integration is to take place. // On return, TheCollection.Integral() // will contain an approximation of the // integral. // // // 4)void Integrate( // COMPOUND_REGION& TheCollection, // real& Integral, // real& AbsErr, // real RequestedAbsolute, // real RequestedRelative, // unsigned long MaxEval, // ); // ----------------------------------------------- // input parameters: // RequestedAbsolute: absolute error request // RequestedRelative: relative error request // MaxEval: bound on the number of function // evaluations. // output parameters: // Integral: approximation of the integral // AbsError: estimate of the error // in-out parameters: // TheCollection: collection of regions over which the // integration is to take place. // Before the call of Integrate() // a local integrand must have been // specified for all members of TheCollection // On return, TheCollection.Integral() // will contain an approximation of the // integral. /////////////////////////////////////////////////////// #include #ifndef INTEGRAT_H #define INTEGRAT_H const unsigned long DefaultMaxEval = 100000; const real DefaultAbsErrReq = 0.0; const real DefaultRelErrReq = DEFAULT_REL_ERR_REQ; extern real Integrate( Function f, COMPOUND_REGION& R, real AbsErrReq = DefaultAbsErrReq, real RelErrReq = DefaultRelErrReq, unsigned long MaxEval = DefaultMaxEval); extern real Integrate( COMPOUND_REGION& R, real AbsErrReq = DefaultAbsErrReq, real RelErrReq = DefaultRelErrReq, unsigned long MaxEval = DefaultMaxEval); extern void Integrate( Function f, COMPOUND_REGION& R, real& Integral, real& AbsError, Boolean& Success, real AbsErrReq , real RelErrReq , unsigned long MaxEval ); extern void Integrate( COMPOUND_REGION& R, real& Integral, real& AbsError, Boolean& Success, real AbsErrReq , real RelErrReq , unsigned long MaxEval ); #endif SHAR_EOF fi # end of overwriting check if test -f 'invert.h' then echo shar: will not over-write existing file "'invert.h'" else cat << \SHAR_EOF > 'invert.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : invert.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Invert // -------------------------- // // BASECLASSES: // Transformation // // // PURPOSE: // Inverts with respect to a given (arbitrary) circle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Invert(Circle* ) // -------------------- // // SELECTORS: // None // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // 1) void Transform (real& w, Point& p) // --------------------------------------- // Multiplies w by the Jacobian at p and then replaces p by // the transformed point. // /////////////////////////////////////////////////////////// #ifndef INVERT_H #define INVERT_H //////////////////////////////////////////////////////// #include #include #include /////////////////////////////////////////////////////// class Invert :public Transformation { public: Invert(Circle*); void Transform (real &w, Point& p); private: Pointer C_ptr; real RadiusSq; }; //////////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'outS2.h' then echo shar: will not over-write existing file "'outS2.h'" else cat << \SHAR_EOF > 'outS2.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : outS2.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS OutCircle // ------------------------------------------------- // // BASECLASSES: // Circle // // PURPOSE: // the complement of a circle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) OutCircle(const Point& C, const Point& B) // -------------------------------------------- // the complement of a circle centred at C and having // B as a point on its boundary. // // 2) OutCircle(const Point& C,real Radius) // ---------------------------------------- // the complement of a circle centred at C and having // Radius as its radius. // // SELECTORS: // 1) Processor* DefaultProcessor() const // ------------------------------------------------- // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef OUTS2_H #define OUTS2_H //////////////////////////////////////////////// #include /////////////////////////////////////////////// class OutCircle : public Circle { public: OutCircle(const Point&,const Point&); OutCircle(const Point&,real); }; //////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'outS2itf.h' then echo shar: will not over-write existing file "'outS2itf.h'" else cat << \SHAR_EOF > 'outS2itf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : outS2itf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS OUT_CIRCLE // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // end-user interface to OutCircle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) OUT_CIRCLE(const Point& Center, const Point& B) // ---------------------------------------------- // constructs a OutCircle with Center as its origin // and B a point on the boundary. // // 2) OUT_CIRCLE(const Point& Center, real Radius) // ------------------------------------------- // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef OUTS2ITF_H #define OUTS2ITF_H //////////////////////////////////////////////// #include #include #include //////////////////////////////////////////////// class OUT_CIRCLE : public USERINTERFACE { public: OUT_CIRCLE(const Point&,const Point&); OUT_CIRCLE(const Point&, real); }; //////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'passbuck.h' then echo shar: will not over-write existing file "'passbuck.h'" else cat << \SHAR_EOF > 'passbuck.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : passbuck.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PassTheBuck // ------------------------------------------------- // // BASECLASSES: // Processor // // PURPOSE: // a processor for all regions that are immediately // transformed into new ones. // // TEMPLATES: // FROM: the new region, an Atomic<> // TO: the present Geometry // VIA: a Transformation from FROM to TO; it should have // a constructor with a TO* as its only argument. // // METHODS: // CONSTRUCTORS: // 1) PassTheBuck(AtomicRegion*) // --------------------- // The new region must be provided . // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Process(Stack&) // ------------------------------------------------- // see Processor<> // // 2) virtual Processor* NewCopy() const=0 // ------------------------------------------------- // // makes a new copy (using the copy constructor) and // returns a pointer to it. ///////////////////////////////////////////////////////// #ifndef PASSBUCK_H #define PASSBUCK_H /////////////////////////////////////////// #include #include /////////////////////////////////////////// template class PassTheBuck : public Processor { public: PassTheBuck(AtomicRegion*); void Process(Stack&); Processor* NewCopy() const; private: AtomicRegion* AR_ptr; }; ////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif ////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'patchlevel.h' then echo shar: will not over-write existing file "'patchlevel.h'" else cat << \SHAR_EOF > 'patchlevel.h' #define PATCHLEVEL 6 SHAR_EOF fi # end of overwriting check if test -f 'point.h' then echo shar: will not over-write existing file "'point.h'" else cat << \SHAR_EOF > 'point.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : point.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(file name changed) ///////////////////////////////////////////////////////// #ifndef POINT_H #define POINT_H ////////////////////////////////////// #include /////////////////////////////////////// typedef Point_2D Point; ///////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'point2D.h' then echo shar: will not over-write existing file "'point2D.h'" else cat << \SHAR_EOF > 'point2D.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : point2D.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(file name changed) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Point_2D // ------------------------- // // BASECLASSES: // None // // PURPOSE: // Implements 2-dimensional points. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Point_2D() // ---------- // default constructor. // the point must be initialized afterwards with an // assignment. // // 2) Point_2D(const Point_2D&) // ---------------------- // copy constructor // // 3) Point_2D(const real, const real) // ------------------------------------ // constructor. Two Cartesian coordinates are given. // // 4) Point_2D (int l) // --------------------- // constructs a point of dimension l, l must be 2 // // SELECTORS: // 1) real X()const // -------------------- // returns the first component of the Point_2D. // // 2) real Y() const // -------------------- // returns the second component of the Point_2D. // // 3) real R()const // -------------------- // returns the first component of the Point_2D. // not to be confused with Length() // // 4) real Theta() const // ------------------------ // returns the second component of the Point_2D. // not to be confused with Angle() // // 5) real operator[] (int i) const // -------------------------------- // returns the i-th component. 0<=i<=1. // // 6) real Length() const // ---------------------- // returns the length of the vector from (0,0) to point. // // 7) real Angle() const // ----------------------- // returns the angle (in [0, 2pi) ) between the // vector and positive X-axis // // 8) Point_2D Proj(const Point_2D& d) const // ----------------------------------------- // returns the projection of the point on a // line with direction d // // 9) int Size() const // -------------------- // returns the dimension of the point. (=2) // // MODIFIERS: // 1) real& X() // ------------ // returns the first component of the Point_2D. // // 2) real& Y() // ------------ // returns the second component of the Point_2D. // // 3) real& R() // ----------- // returns the first component of the Point_2D. // not to be confused with Length() // // 4) real& Theta() // ---------------- // returns the second component of the Point_2D. // not to be confused with Angle() // // 5) real& operator[] (int i) // ---------------------------- // returns the i-th component. 0<=i<=1. // // OPERATORS: // 1)Point_2D& operator=(const Point_2D&); // -------------------------------- // assignment operator // // 2)Point_2D operator+(const Point_2D&) const; // -------------------------------- // point addition // // 3)Point_2D operator-(const Point_2D&) const; // -------------------------------- // point subtraction // // 4)Point_2D operator-() const; // -------------------------------- // multiplication by -1 // // 5)Point_2D operator*( const real) const; // -------------------------------- // multiplication with scalar // // 6)Point_2D operator/(const real) const; // -------------------------------- // division by scalar // // 7)real operator*(const Point_2D& ) const; // -------------------------------- // dot-product of two point // // 8)Point_2D& operator+=(const Point_2D&); // -------------------------------- // addition and assignment // // 9)Point_2D& operator-=(const Point_2D&); // -------------------------------- // subtraction and assignment // // 10)Point_2D& operator*=(real); // -------------------------------- // scalar multiply and assignment // // 11)Point_2D& operator/=(real); // -------------------------------- // division and assignment // // 12)Boolean operator==(const Point_2D&); // --------------------------------------- // // 13)Boolean operator!=(const Point_2D&); // --------------------------------------- // // SPECIAL: // 1) friend Point_2D operator*(real d,const Point_2D& p) // ---------------------------------------------------- // product of the point with the scalar d // // 2) friend ostream& operator<<(ostream&,const Point_2D&p) // -------------------------------------------------------- // output function /////////////////////////////////////////////////////////// #ifndef _2DPOINT_H #define _2DPOINT_H ///////////////////////////////////////////////////////// // IMPORT FOR INTERFACE ///////////////////////////////////////////////////////// #include #include // introduction class Point_2D; static Point_2D operator*(real,const Point_2D&); static ostream& operator<<(ostream&,const Point_2D& ); ///////////////////////////////////////////////////////// // EXPORT ///////////////////////////////////////////////////////// class Point_2D { friend Point_2D operator*(real,const Point_2D&); friend ostream& operator<<(ostream&,const Point_2D& ); public: Point_2D(const Point_2D&); Point_2D(const real, const real); Point_2D(int n); Point_2D(); ~Point_2D(); Point_2D& operator=(const Point_2D&); Point_2D operator+(const Point_2D&) const; Point_2D operator-(const Point_2D&) const; Point_2D operator-() const; Point_2D operator*( const real) const; Point_2D operator/(const real) const; real operator*(const Point_2D& ) const; Point_2D& operator+=(const Point_2D&); Point_2D& operator-=(const Point_2D&); Point_2D& operator*=(real); Point_2D& operator/=(real); real X() const; real Y() const; real R() const; real Theta() const; real operator[](int i) const; real& X() ; real& Y() ; real& R() ; real& Theta() ; real& operator[](int i) ; real/* in[0,2pi] */ Angle() const; real Length() const; Boolean operator == (const Point_2D&) const; Boolean operator != (const Point_2D&) const; int Size() const; Point_2D Proj(const Point_2D& p)const; private: real x,y; }; ///////////////////////////////////////////// //INLINE DEFINITIONS ///////////////////////////////////////////// #include #include #include ////////////////////////////////////////////////////// inline Point_2D& Point_2D::operator=(const Point_2D& v) { x = v.x; y = v.y; return *this; } /////////////////////////////////////////////// inline Point_2D operator*(real d ,const Point_2D& v) { Point_2D r(v); r.x *= d; r.y *= d; return r; } ///////////////////////////////////////////////// inline real Point_2D::X() const { return x; } //////////////////////////////////////////////////// inline real Point_2D::Y() const { return y; } //////////////////////////////////////////////////// inline real Point_2D::R() const { return x; } //////////////////////////////////////////////////// inline real Point_2D::Theta() const { return y; } ///////////////////////////////////////////////// inline real& Point_2D::X() { return x; } //////////////////////////////////////////////////// inline real& Point_2D::Y() { return y; } //////////////////////////////////////////////////// inline real& Point_2D::R() { return x; } //////////////////////////////////////////////////// inline real& Point_2D::Theta() { return y; } //////////////////////////////////////////////////// inline real Point_2D::Angle() const { real Return; if (x==0) { Return = M_PI-M_PI/2*sign(y); }; if (x<0) { Return = M_PI + atan(y/x); } else { real a=2*M_PI +atan(y/x); Return = (a>=2*M_PI) ? a-2*M_PI : a; }; return Return ; } ///////////////////////////////////////////////////// inline ostream& operator<< (ostream& os,const Point_2D& p) { os<< "Point_2D(" <x) //{ //return y*sqrt((x/y)*(x/y)+1); //} //else //{ //return x*sqrt((y/x)*(y/x)+1); //}; } //////////////////////////////////////////////////// inline real Point_2D::operator *(const Point_2D& v) const { real inprod =x*v.x+y*v.y; return inprod; } //////////////////////////////////////////////////// inline Point_2D& Point_2D::operator +=(const Point_2D& v) { x += v.x; y += v.y; return (*this); } /////////////////////////////////////////////////// inline Point_2D& Point_2D::operator -=(const Point_2D& v) { x -= v.x; y -= v.y; return (*this); } /////////////////////////////////////////////////// inline Point_2D& Point_2D::operator *=(real d) { x *=d; y *=d; return (*this); } /////////////////////////////////////////////////// inline Point_2D& Point_2D::operator /=(real d) { Error(d==0,"Point_2D:division by zero error"); x /= d; y /= d; return (*this); } /////////////////////////////////////////////////// inline real Point_2D::operator[](int i) const { return i ? y : x; } /////////////////////////////////////////////// inline real& Point_2D::operator[](int i) { return i ? y : x; } /////////////////////////////////////////////// inline Boolean Point_2D::operator==(const Point_2D& v) const { int b = (x == v.x)&&(y == v.y); return (Boolean) b; } //////////////////////////////////////////////////// inline Boolean Point_2D::operator!=(const Point_2D& v) const { int b = (x != v.x)||(y != v.y); return (Boolean) b; } //////////////////////////////////////////////////// inline int Point_2D::Size() const { return 2; } ////////////////////////////////////////////////// inline Point_2D Point_2D::Proj(const Point_2D& v) const { Point_2D r(v); r *= (*this) *v; r /= (*this) * (*this); return r; } ////////////////////////////////////////////////// inline Point_2D::Point_2D(int n) { Error(n != 2, "a Point_2D should be two-dimensional"); } ///////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'pointer.h' then echo shar: will not over-write existing file "'pointer.h'" else cat << \SHAR_EOF > 'pointer.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : pointer // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 14 Sep 1994 V0.1c(inlines removed) // 25 Jan 1996 V0.1f(code moved from .c to .h) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Pointer // ------------------------------------------------- // // BASECLASSES: // None // // PURPOSE: // a device for storing pointers, managing reference // counts to the pointed objects and controlling the // deletion of the pointed objects . Once a T* // has been stored as a Pointer you can use it // as if C++ had garbage collection. // some compilers have problems converting // Pointers to normal pointers. // // TEMPLATES: // a Pointer stores a T*. T should be derived from // ReferenceCounting // ///////////////////////////////////////////////////////// #ifndef POINTER_H #define POINTER_H ///////////////////////////////////////////////////// #include ///////////////////////////////////////////////////// template class Pointer { public: Pointer(); Pointer(const Pointer&); Pointer(T* tp); Pointer& operator=(const Pointer& tp); Pointer& operator=(T* tp); Boolean operator==(const Pointer& tp) const; Boolean operator!=(const Pointer& tp) const; T& operator* () const; T* operator->() const; T& operator [](int i) const; operator T*(){return ptr;} ~Pointer(); private: T* ptr; }; ///////////////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif ///////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'polC2.h' then echo shar: will not over-write existing file "'polC2.h'" else cat << \SHAR_EOF > 'polC2.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : polC2.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PolarRectangle // ------------------------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // the geometry of a polar rectangle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) PolarRectangle(const Point& A, const Point& B, // const Point& C) // ------------------------------------------------- // constructs a Polar rectangle. AB should not be // perpendicular to BC. // // 2) PolarRectangle(const Point& O, real R1, real R2, // real Theta1, real Theta2) // --------------------------------------------------- // // SELECTORS: // 1) const Point& Center() const // ------------------------------ // // 2) real InnerRadius() const // --------------------------- // // 3) real OuterRadius() const // --------------------------- // // 4) real SmallAngle() const // -------------------------- // // 5) real BigAngle() const // ------------------------ // // 6)Processor DefaultProcessor() const // ----------------------------------------------------- // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef POLC2_H #define POLC2_H ///////////////////////////////////////// #include #include #include #include ///////////////////////////////////////// class PolarRectangle : public Geometry { public: PolarRectangle( const Point& A, const Point& B, const Point& C); PolarRectangle( const Point& O, real r1, real r2, real theta1,real theta2); const Point& Center() const; real InnerRadius() const; real OuterRadius() const; real SmallAngle () const; real BigAngle () const; private: Point TheCenter; real TheInnerRadius, TheOuterRadius, TheSmallAngle, TheBigAngle; }; ////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'polC2itf.h' then echo shar: will not over-write existing file "'polC2itf.h'" else cat << \SHAR_EOF > 'polC2itf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : polC2itf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS POLAR_RECTANGLE // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // End-user interface to PolarRectangles // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) POLAR_RECTANGLE(const Point& A, // const Point& B, // const Point& C) // --------------------------------- // constructs a polar rectangle with vertices A,B,C // AB shouldn't be perpendicular to BC // // 2) POLAR_RECTANGLE( const& Point& O, // real r1, real r2, real theta1,real theta2) // ---------------------------------------------- // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef POLC2ITF_H #define POLC2ITF_H ///////////////////////////////////////// #include #include ///////////////////////////////////////// class POLAR_RECTANGLE : public USERINTERFACE { public: POLAR_RECTANGLE(const Point&,const Point&, const Point&); POLAR_RECTANGLE(const Point&,real,real,real,real); }; ///////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'polC2prc.h' then echo shar: will not over-write existing file "'polC2prc.h'" else cat << \SHAR_EOF > 'polC2prc.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : polC2prc.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PolarRectangle_Processor // ------------------------------------------------- // // BASECLASSES: // Processor // // PURPOSE: // transforms the polar rectangle into a rectangle // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1)PolarRectangle_Processor() // ---------------------------- // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Process(Stack&) // ------------------------------------------------- // see Processor<> // // 2) virtual Processor* NewCopy() const=0 // ------------------------------------------------- // // makes a new copy (using the copy constructor) and // returns a pointer to it. ///////////////////////////////////////////////////////// #ifndef POLC2PRC_H #define POLC2PRC_H ////////////////////////////////////////////// #include #include ///////////////////////////////////////////// class PolarRectangle_Processor: public Processor { public: PolarRectangle_Processor(); void Process(Stack&); Processor* NewCopy() const; }; ///////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'ps.h' then echo shar: will not over-write existing file "'ps.h'" else cat << \SHAR_EOF > 'ps.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : ps.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS ParabolicSegment // ------------------------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // the geometry of a parabolic segment // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) ParabolicSegment(const Point& A, const Point& B, // const Point& P) // --------------------------------------------------- // the region is bounded by the straight line AB and the // parabolic arc through A and B such that AP and BP are // tangents // // // SELECTORS: // 1) const Point& A() const // -------------------------- // // 1) const Point& B() const // -------------------------- // // 1) const Point& P() const // -------------------------- // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef PS_H #define PS_H ///////////////////////////////////////////////////////// #include #include ///////////////////////////////////////////////////////// class ParabolicSegment : public Geometry { public: ParabolicSegment(const Point&,const Point&,const Point&); const Point& A() const; const Point& B() const; const Point& P() const; private: Point TheA; Point TheB; Point TheP; }; ///////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'psitf.h' then echo shar: will not over-write existing file "'psitf.h'" else cat << \SHAR_EOF > 'psitf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : psitf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS PARABOLIC_SEGMENT // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // end-user interface to a parabolic segment. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) PARABOLIC_SEGMENT(const Point& A, // const Point& B, // const Point& P) // ------------------------------------- // the region is bounded by the straight line AB // and the parabolic arc through A and B such that // AP and BP are tangents. // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef PSITF_H #define PSITF_H ///////////////////////////////////////////////////////// #include #include ///////////////////////////////////////////////////////// class PARABOLIC_SEGMENT : public USERINTERFACE { public: PARABOLIC_SEGMENT(const Point& A,const Point& B,const Point& p); }; //////////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'real.h' then echo shar: will not over-write existing file "'real.h'" else cat << \SHAR_EOF > 'real.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : real.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// #ifndef REAL_H #define REAL_H ///////////////////////////////////////////////////////// #include #ifdef FLOAT typedef float real; #define REAL_MAX FLT_MAX #define REAL_MIN FLT_MIN #define REAL_EPSILON FLT_EPSILON #define REAL_MAX_EXP FLT_MAX_EPS #define DEFAULT_REL_ERR_REQ (1.0e-4) #else typedef double real; #define REAL_MAX DBL_MAX #define REAL_MIN DBL_MIN #define REAL_EPSILON DBL_EPSILON #define REAL_MAX_EXP DBL_MAX_EXP #define DEFAULT_REL_ERR_REQ (1.0e-6) #endif ///////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'refcount.h' then echo shar: will not over-write existing file "'refcount.h'" else cat << \SHAR_EOF > 'refcount.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : refcount.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS ReferenceCounting // ------------------------------------------------- // // BASECLASSES: // None // // PURPOSE: // provides a means to count references to an object. // it is to be used preferably together with // class Pointer<>, which automatically calls // Refer() and Unrefer() wherever necessary. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) ReferenceCounting() // ---------------------- // initialises the reference count to zero. // // 2) ReferenceCounting(const ReferenceCounting&) // ---------------------------------------------- // also initialises the count to zero // // SELECTORS: // 1) unsigned int NumberOfReferences() const // ------------------------------------------ // // MODIFIERS: // 1) void Refer() // --------------- // increments the reference count. // // 2) void UnRefer() // ----------------- // decrements the reference count // // OPERATORS: // 1) ReferenceCounting& operator= // (const ReferenceCounting&) // ------------------------------------------------- // resets the reference count. // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef REFCOUNT_H #define REFCOUNT_H /////////////////////////////////////////////////// class ReferenceCounting { public: ReferenceCounting(); ReferenceCounting(const ReferenceCounting&); void Refer(); void UnRefer(); ReferenceCounting& operator=(const ReferenceCounting&); unsigned int NumberOfReferences()const; private: unsigned int numref; }; //////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'regcoll.h' then echo shar: will not over-write existing file "'regcoll.h'" else cat << \SHAR_EOF > 'regcoll.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : regcoll.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Jan 1996 V0.1f(typedef introduced) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS REGION_COLLECTION // ------------------------------------------------- // // BASECLASSES: // COMPOUND_REGION // // PURPOSE: // groups regions and their eventual offspring. applies // the global adaptive algorithm. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) REGION_COLLECTION() // ---------------------- // // 2) REGION_COLLECTION(const REGION_COLLECTION&) // ---------------------------------------------- // // SELECTORS: // None // // MODIFIERS: // 1) LocalIntegrand(Integrand* I) // ------------------------------ // sets the local integrand of all members to I // only to be called before Process(). // // 2) LocalIntegrand(Function F) // ------------------------------ // sets the local integrand of all members to F // only to be called before Process(). // // OPERATORS: // 1) REGION_COLLECTION operator+(const COMPOUND_REGION&) // ---------------------------------------------------- // // 2) REGION_COLLECTION& operator+=(const COMPOUND_REGION&) // ---------------------------------------------------- // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef REGCOLL_H #define REGCOLL_H ///////////////////////////////////////////// #include #include #include #include #include #include ///////////////////////////////////////////// class REGION_COLLECTION : public COMPOUND_REGION { public: typedef Stack < COMPOUND_REGION> StackCOMPOUND_REGION; void LocalIntegrand(Integrand*); void LocalIntegrand(Function); REGION_COLLECTION& operator+=(const COMPOUND_REGION&) ; REGION_COLLECTION operator+(const COMPOUND_REGION&) ; REGION_COLLECTION(); REGION_COLLECTION(const REGION_COLLECTION&); protected: Pointer < StackCOMPOUND_REGION > SCR_ptr; void Preprocess(); void Improve(); real MaxAtomicError()const; COMPOUND_REGION* NewCopy()const; }; /////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'reginfo.h' then echo shar: will not over-write existing file "'reginfo.h'" else cat << \SHAR_EOF > 'reginfo.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : reginfo.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS RegionInfo // ------------------------------------------------- // // BASECLASSES: // ReferenceCounting // // PURPOSE: // to store integral and error of a specific region // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) RegionInfo() // --------------- // after construction Integral() and AbsoluteError() // will both return zero // // SELECTORS: // 1) real Integral() const // ------------------------ // // 2) real AbsoluteError() const // ----------------------------- // 3) Boolean Hopeless() const // --------------------------- // // MODIFIERS: // 1) real& Integral() // -------------------- // // 2) real& AbsoluteError() // ------------------------ // // 3) Boolean& Hopeless() // ---------------------- // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef REGINFO_H #define REGINFO_H ////////////////////////////////////////// #include #include #include ////////////////////////////////////////// class RegionInfo : public ReferenceCounting { public : RegionInfo(); real Integral()const; real& Integral(); real AbsoluteError()const; real& AbsoluteError(); Boolean Hopeless() const; Boolean& Hopeless() ; private: real TheIntegral; real TheAbsoluteError; Boolean IsHopeless; }; ///////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'region.h' then echo shar: will not over-write existing file "'region.h'" else cat << \SHAR_EOF > 'region.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : region.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Region // ------------------------------------------------- // // BASECLASSES: // None // // PURPOSE: // base class for all regions, providing storage for // integral and error approximations // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Region() // ----------- // // SELECTORS: // 1) real Integral() const // ----------------------- // // 2) real AbsoluteError() const // ----------------------------- // // 3) Boolean Hopeless() const // --------------------------- // // MODIFIERS: // None // // OPERATORS: // 1) Boolean operator<(const Region&)const // ---------------------------------------- // compares the absolute errors // // 2) Boolean operator>(const Region&)const // ---------------------------------------- // compares the absolute errors // // 3) Boolean operator<=(const Region&)const // ---------------------------------------- // compares the absolute errors // // 4) Boolean operator>=(const Region&)const // ---------------------------------------- // compares the absolute errors // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef REGION_H #define REGION_H ////////////////////////////////////////////////// #include #include #include #include ///////////////////////////////////////////////// class Region { public: Region(); real Integral() const; real AbsoluteError() const ; Boolean Hopeless()const; Boolean operator<(const Region&) const; Boolean operator<=(const Region&) const; Boolean operator>(const Region&) const; Boolean operator>=(const Region&) const; protected : RegionInfo& LocalInfo(); private: Pointer RI_ptr; }; /////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'rule.h' then echo shar: will not over-write existing file "'rule.h'" else cat << \SHAR_EOF > 'rule.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : rule.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Rule // ------------------------ // // BASECLASSES: // ReferenceCounting // // // PURPOSE: // provides a pure virtual base class as a common // interface to all rules. // // TEMPLATES: // T: type of region on which the rule has to be // applied. T should be derived from // class Region . // // METHODS: // CONSTRUCTORS: // None // SELECTORS: // 1) int Degree() const // --------------------- // returns the degree of the formula // // 2) int NumberOfPoints() const // ------------------------------------------ // returns the number of points the rule uses. // this might depend on Dimension // // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // 1) Apply(Integrand& I,T& H,real& Result,real& // Error) // ------------------------------------------------- // Input parameters: // I: the integrand // H: Region to be integrated. H.Dimension() // should be 2. // Output parameters: // Result: approximation to the integral // Error: absolute error estimation // // 2) ApplyWithDiffs(Integrand& I,T& H,real& Result,real& // Error,Vector& D) // ------------------------------------------------- // Input parameters: // I: the integrand // H: Region to be integrated. H.Dimension() // should be 2. // Output parameters: // Result: approximation to the integral // Error: absolute error estimation // D: order of indices regarding a higher order difference. /////////////////////////////////////////////////////////// #ifndef RULE_H #define RULE_H ///////////////////////////////////////// #include #include #include ////////////////////////////////////////// template class Rule : public ReferenceCounting { public: Rule(); virtual void ApplyWithDiffs(Integrand&,GEOMETRY&,real&,real&,Vector&) ; virtual void Apply(Integrand&,GEOMETRY&,real&,real&); virtual int Degree() const =0; virtual int NumberOfPoints () const =0; virtual ~Rule(); }; ////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif ////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'regproc.h' then echo shar: will not over-write existing file "'regproc.h'" else cat << \SHAR_EOF > 'regproc.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : regproc.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Processor // ------------------------------------------------- // // BASECLASSES: // ReferenceCounting // // PURPOSE: // abstract base class for region processors. these // either compute an integral or an error over a given // GEOMETRY or convert it to another GEOMETRY. // the processor has access to the GEOMETRY through // a pointer to an atomic region. // // TEMPLATES: // the GEOMETRY that the Processor is meant to operate // on must be specified as a template argument. // // METHODS: // CONSTRUCTORS: // 1) Processor() // -------------- // // SELECTORS: // None // // MODIFIERS: // 1) void LocalAtomic(Atomic* G) // ------------------------------------------- // specifies the AtomicRegion to process // this should happen before the first call of Process() // // // OPERATORS: // None // // SPECIAL: // 1) virtual void Process( Stack& Offspring) // ----------------------------------------------------- // after a call of Process() one of the following // statements will be true: // I) Offspring is empty. // The processor will have computed new // values for integral and error. // They will be stored in the RegionInfo // of the atomic region, possibly along // with some other information like // hopelessness. // II)Offspring is non-empty. // The region has produced // offspring and can be deleted. // // 2) virtual Processor* NewCopy() const=0 // ------------------------------------------------- // // makes a new copy (using the copy constructor) and // returns a pointer to it. ///////////////////////////////////////////////////////// #ifndef REGPROC_H #define REGPROC_H //////////////////////////////////////////// #include #include #include #include #include #include ///////////////////////////////////////////// template class Atomic; template class Processor: public ReferenceCounting { public: Processor(); void LocalAtomic(Atomic* ); virtual Processor* NewCopy() const=0; virtual void Process( Stack& Offspring)=0; virtual ~Processor(); protected: Integrand& LocalIntegrand() const; GEOMETRY& Geometry() const; real& Integral(); real& AbsoluteError(); Atomic& LocalAtomic() const; RegionInfo& LocalRegionInfo() const; private: Atomic* A_ptr; }; ///////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif ///////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 's_adapt.h' then echo shar: will not over-write existing file "'s_adapt.h'" else cat << \SHAR_EOF > 's_adapt.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : s_adapt.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 25 Nov 1994 V0.1d(re-ordering of member declarations) // 25 Jan 1996 V0.1f(typedef introduced, code from .c to .h) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS SimpleAdaptive // ------------------------------------------------- // // BASECLASSES: // Processor // // PURPOSE: // Simple Adaptive means applying a rule once // (during the first call of Process()) // and then cutting the region into subregions with // the same shape as the original (during the second // call of Process()). // // TEMPLATES: // the Geometry T to work with // // METHODS: // CONSTRUCTORS: // 1) SimpleAdaptive( Rule* , // SameShapeDivisor* ) // ------------------------------------------------- // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Process(Stack&) // ------------------------------------------------- // see Processor // // 2) virtual Processor* NewCopy() const=0 // ------------------------------------------------- // // makes a new copy (using the copy constructor) and // returns a pointer to it. ///////////////////////////////////////////////////////// #ifndef S_ADAPT_H #define S_ADAPT_H /////////////////////////////////////////// #include #include #include /////////////////////////////////////////// template class SimpleAdaptive : public Processor { public: typedef Rule RuleGEOMETRY; typedef SameShapeDivisor SameShapeDivisorGEOMETRY; SimpleAdaptive(const Pointer &R, const Pointer& D) :Processor(), TimesCalled(0), Diffs(2), TheRule(R), TheDivisor(D) { } SimpleAdaptive(Rule*, SameShapeDivisor*); void Process( Stack& Offspring); Processor* NewCopy() const; protected: SimpleAdaptive* Descendant() const; unsigned int TimesCalled; Vector Diffs; Pointer TheRule; Pointer TheDivisor; }; ///////////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif ///////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'samediv.h' then echo shar: will not over-write existing file "'samediv.h'" else cat << \SHAR_EOF > 'samediv.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : samediv.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS SameShapeDivisor // ------------------------------------------------- // // BASECLASSES: // Divisor // // PURPOSE: // a divisor that produces parts of the same shape as // the original // // TEMPLATES: // T, the Geometry to be divided. // // METHODS: // CONSTRUCTORS: // 1) SameShapeDivisor() // --------------------- // // SELECTORS: // 1) virtual int NumberOfParts() const // ------------------------------- // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) virtual void Apply( const T& , // Stack& Offspring) // -------------------------------------------------- // performs the division // ///////////////////////////////////////////////////////// #ifndef SAMEDIV_H #define SAMEDIV_H //////////////////////////////////////////// #include #include #include //////////////////////////////////////////// template class SameShapeDivisor : public Divisor { public: SameShapeDivisor(); virtual int NumberOfParts() const =0; virtual void Apply( const GEOMETRY&,Stack&,const Vector&)=0; virtual ~SameShapeDivisor(); }; ///////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif ///////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'semistrp.h' then echo shar: will not over-write existing file "'semistrp.h'" else cat << \SHAR_EOF > 'semistrp.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : semistrp.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS SemiInfiniteStrip // ----------------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // implements a semi-infinite strip // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) SemiInfiniteStrip( // const Point& A, const Point& B) // --------------------------------------------------- // the region lies to the left of AB // // SELECTORS: // 1) const Point& A() const // ------------------------- // returns the point A (see constructor) // // 2) const Point& B() const // ------------------------- // returns the point B (see constructor) // // MODIFIERS: // None // // OPERATORS: // None // SPECIAL: // None // /////////////////////////////////////////////////////////// #ifndef SEMISTRP_H #define SEMISTRP_H ////////////////////////////////////////////////// #include #include ////////////////////////////////////////////////// class SemiInfiniteStrip : public Geometry { public: SemiInfiniteStrip ( const Point&,const Point&); const Point& A() const; const Point& B() const; private: Point TheA; Point TheB; }; ////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'semstitf.h' then echo shar: will not over-write existing file "'semstitf.h'" else cat << \SHAR_EOF > 'semstitf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : semstitf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS SEMI_INFINITE_STRIP // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // End-user interface to semi-infinite strips // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) SEMI_INFINITE_STRIP( // const Point& A, const Point& B) // --------------------------------------------------- // the region will be to the left of AB. // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef SEMSTITF_H #define SEMSTITF_H //////////////////////////////////////////// #include #include //////////////////////////////////////////// class SEMI_INFINITE_STRIP : public USERINTERFACE { public: SEMI_INFINITE_STRIP(const Point&,const Point&); }; //////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'set.h' then echo shar: will not over-write existing file "'set.h'" else cat << \SHAR_EOF > 'set.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : set.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Set // ----------------------- // // BASECLASSES: // ReferenceCounting // // // PURPOSE: // provides a pure virtual base class for all // collection classes. // // TEMPLATES: // the type T of the Set elements is templated. it // should have a method T* NewCopy () defined. // // METHODS: // CONSTRUCTORS: // 1) Set() // -------- // Default constructor // // SELECTORS: // 1) virtual T* Look() =0 // ------------------------ // returns a pointer to an element of the Set. // // 2) int NumberOfElements() const // -------------------------------- // returns the number of elements in the set. // // MODIFIERS: // 1) virtual T* Get()=0 // ----------------------- // returns a pointer to an element of the Set and // removes them. // // 2) virtual void Clear()=0 // --------------------------- // removes all of the elements // // OPERATORS: // 1) virtual void operator+=(T*) =0 // ------------------------------------------- // adds a reference to an element to the set // // SPECIAL: // None /////////////////////////////////////////////////////////// #ifndef SET_H #define SET_H #include #include #include template class Set: public ReferenceCounting { public: Set(); virtual ~Set(); virtual void Clear()=0; virtual T* Get () =0; virtual T* Look() =0; virtual void operator+=( T*) =0; unsigned int Size() const; Boolean Empty() const; protected: int Number; }; #ifdef TEMPLATEINCLUDE #include #endif #endif SHAR_EOF fi # end of overwriting check if test -f 'stack.h' then echo shar: will not over-write existing file "'stack.h'" else cat << \SHAR_EOF > 'stack.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : stack.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Stack // ------------------------- // // BASECLASSES: // ReferenceCounting // // PURPOSE: // implements a stack. an iterator over all the elements // is provided. // // TEMPLATES: // The type T of the elements to be stacked is // templated. T should have T* NewCopy() defined. // // // METHODS: // CONSTRUCTORS: // 1) Stack() // ----------- // default constructor // // SELECTORS: // 1) T* Top() const // ----------------- // returns a pointer to the top-element of the stack. // this element is not removed so modifications of it // are potentially dangerous. // not to be called when Size() == 0 // // 2) Boolean Empty() const // -------------------------- // // 3) unsigned int Size() const // ------------------------------ // // 4) Boolean IteratorAtEnd() const // --------------------------------- // returns True if the iterator has passed the // bottom element of the Stack or if Size() == 0 // // MODIFIERS: // 1) T* Pop() // ----------- // gets the top-element of the stack. it is removed. // not to be called when Size() == 0 // // 2) void MakeEmpty() // --------------- // Empties the Stack // // 3) IteratorReset() // ------------------ // a subsequent call of IteratorNext() will return the // top of the stack, unless the stack is empty. // // 4) T* IteratorNext() // -------------------- // advances the iterator and returns the next element. // not to be called when IteratorAtEnd() // // 5) void Push(T* t) // ---------------------------- // pushes a pointer to *t on the stack // // 6) void Merge(Stack& S) // ------------------------------- // pushes all elements of S on the Stack. The order in // which they are pushed is not defined. The state of // S afterwards is not defined. // // OPERATORS: // None // SPECIAL: // None /////////////////////////////////////////////////////////// #ifndef SELEMENT #define SELEMENT template< class T> struct SElement { SElement* Next; T* Contents; }; #endif /////////////////////////////////////////////////// #ifndef STACK_H #define STACK_H /////////////////////////////////////////////////// #include #include #include /////////////////////////////////////////////////// template class Stack :public ReferenceCounting { public: Stack(); ~Stack(); void MakeEmpty(); Boolean Empty () const; void Push (T*); T* Pop(); T* Top()const; void Merge (Stack& Source); void IteratorReset(); Boolean IteratorAtEnd() const; T* IteratorNext(); unsigned int Size() const; private: SElement* TheTop; SElement* Current; unsigned int Number; }; ///////////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif #endif SHAR_EOF fi # end of overwriting check if test -f 'strip.h' then echo shar: will not over-write existing file "'strip.h'" else cat << \SHAR_EOF > 'strip.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : strip.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS InfiniteStrip Rectangle // ----------------------------------------- // // BASECLASSES: // Geometry // // PURPOSE: // implements an infinite strip // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) GeneralizedRectangle( // const Point& A, const Point& B) // --------------------------------------------------- // the line segment AB is the diameter of the strip // // SELECTORS: // 1) const Point& A() const // ------------------------- // returns the point A (see constructor) // // 2) const Point& B() const // ------------------------- // returns the point B (see constructor) // // MODIFIERS: // None // // OPERATORS: // None // SPECIAL: // None // /////////////////////////////////////////////////////////// #ifndef STRIP_H #define STRIP_H ////////////////////////////////////////////////// #include #include ////////////////////////////////////////////////// class InfiniteStrip : public Geometry { public: InfiniteStrip ( const Point&,const Point&); const Point& A() const; const Point& B() const; private: Point TheA; Point TheB; }; ////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'stripitf.h' then echo shar: will not over-write existing file "'stripitf.h'" else cat << \SHAR_EOF > 'stripitf.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : stripitf.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS INFINITE_STRIP // ------------------------------------------------- // // BASECLASSES: // USERINTERFACE // // PURPOSE: // End user interface to infinite strips // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) INFINITE_STRIP( // const Point& A, const Point& B) // --------------------------------------------------- // AB will be the diameter of the strip // // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef STRIPITF_H #define STRIPITF_H //////////////////////////////////////////// #include #include //////////////////////////////////////////// class INFINITE_STRIP : public USERINTERFACE { public: INFINITE_STRIP(const Point&,const Point&); }; //////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'sttosmst.h' then echo shar: will not over-write existing file "'sttosmst.h'" else cat << \SHAR_EOF > 'sttosmst.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : sttosmst.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS E2toIS // ------------------------------------------------- // // BASECLASSES: // Transformation // // PURPOSE: // transformation from strip to semistrip // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) IStoSIS(SemiInfiniteStrip*) // ------------ // The target region has to be supplied // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // None // // SPECIAL: // 1) void Transform(real & w, Point & p) // -------------------------------------- // multiplies w by the Jacobian at p and then // replaces p by the transformed point // ///////////////////////////////////////////////////////// #ifndef STTOSMST_H #define STTOSMST_H ///////////////////////////////////////////////////////// #include #include #include #include /////////////////////////////////////////////////// class IStoSIS : public Transformation { public: IStoSIS( SemiInfiniteStrip*); void Transform(real& w, Point& p); private: Pointer SIS_ptr; }; ////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'templist.h' then echo shar: will not over-write existing file "'templist.h'" else cat << \SHAR_EOF > 'templist.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : templist.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // PURPOSE: // to enumerate the compilers that need inclusion of // template implementations ///////////////////////////////////////////////////////// #ifndef TEMPLIST_H #define TEMPLIST_H #ifdef __GNUG__ #define TEMPLATEINCLUDE #endif #ifdef __TCPLUSPLUS__ #define TEMPLATEINCLUDE #endif #ifdef __DECCXX #define TEMPLATEINCLUDE #endif #endif SHAR_EOF fi # end of overwriting check if test -f 'tools.h' then echo shar: will not over-write existing file "'tools.h'" else cat << \SHAR_EOF > 'tools.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : tools.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // PURPOSE : this file contains some simple tools ////////////////////////////////////////////////// #ifndef TOOLS_H #define TOOLS_H #include /////////////////////////////////////////////////////// inline real min (real a,real b) { return (ab) ? a : b ; } inline real sign (real x) { return (x>0) ? 1.0 : -1.0; } /////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'translat.h' then echo shar: will not over-write existing file "'translat.h'" else cat << \SHAR_EOF > 'translat.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : translat.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Translation // ------------------------------- // // BASECLASSES: // Transformation // // // PURPOSE: // implements translations. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Translation(const Point& Offset) // ----------------------------------- // constructs the translation by specifying the // Offset that has to be added by T() // // SELECTORS: // None // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // 1) void Transform (real& w, Point& p) // --------------------------------------- // Leaves w unchanged and replaces p by p+Offset. // /////////////////////////////////////////////////////////// #ifndef TRANSLAT_H #define TRANSLAT_H //////////////////////////////////////////////////////// #include #include /////////////////////////////////////////////////////// class Translation :public Transformation { public: Translation( const Point& Offset); //Translation::T(p) ADDS Offset to p void Transform(real& w, Point& p); private: Point TheOffset; }; //////////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'trnsfrm.h' then echo shar: will not over-write existing file "'trnsfrm.h'" else cat << \SHAR_EOF > 'trnsfrm.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : trnsfrm.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Transformation // ---------------------------------- // // BASECLASSES: // ReferenceCounting // // // PURPOSE: // a pure virtual base class providing a common interface // to all transformations. // // TEMPLATES: // None // // METHODS: // CONSTRUCTORS: // 1) Transformation() // -------------------- // // SELECTORS: // None // MODIFIERS: // None // OPERATORS: // None // SPECIAL: // 1) virtual void Transform (real& w, Point& p) // ----------------------------------------------- // Multiplies w by the Jacobian at p and then replaces p by // the transformed point. // /////////////////////////////////////////////////////////// #ifndef TRNSFRM_H #define TRNSFRM_H #include #include class Transformation: public ReferenceCounting { public: Transformation(); virtual void Transform (real& w, Point& p) =0; virtual ~Transformation(); }; #endif SHAR_EOF fi # end of overwriting check if test -f 'userint.h' then echo shar: will not over-write existing file "'userint.h'" else cat << \SHAR_EOF > 'userint.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : userint.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) // 8 Sep 1994 V0.1a(operator added) // 25 Jan 1996 V0.1f(typedef introduced, code from .c to .h) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS USERINTERFACE // ------------------------------------------------- // // BASECLASSES: // COMPOUND_REGION // // PURPOSE: // base class for end-user interfaces to geometries // // TEMPLATES: // a specific GEOMETRY (derived from Geometry) // must be provided // // METHODS: // CONSTRUCTORS: // 1) USERINTERFACE() // ------------------ // // 2) USERINTERFACE(const USERINTERFACE&) // ------------------------------------------------ // // SELECTORS: // None // // MODIFIERS: // 1) void Use(Processor* P) // ----------------------------------- // forces P to be used for Process()ing. // // 2) LocalIntegrand(Integrand* I) // ------------------------------ // sets the local integrand of all members to I // only to be called before Process(). // // 3) LocalIntegrand(Function F) // ------------------------------ // sets the local integrand of all members to F // only to be called before Process(). // // // OPERATORS: // 1) REGION_COLLECTION operator+(const COMPOUND_REGION&) // ----------------------------------------------------- // // SPECIAL: // 1)operator AtomicRegion*() // --------------------------- // conversion to an AtomicRegion. The USERINTERFACE // can't be used after a call of this operator. // ///////////////////////////////////////////////////////// #ifndef USERINT_H #define USERINT_H ///////////////////////////////////////////////// #include #include #include #include #include #include #include #include ///////////////////////////////////////////////// template class USERINTERFACE : public COMPOUND_REGION { public: typedef Stack StackAtomicRegion; typedef Heap HeapAtomicRegion; USERINTERFACE(); USERINTERFACE(const USERINTERFACE&); ~USERINTERFACE(); void Use( Processor*); REGION_COLLECTION operator+(const COMPOUND_REGION&); void LocalIntegrand(Integrand*); void LocalIntegrand(Function); operator AtomicRegion* () { Error (SAR_ptr->Empty(), "converting empty compound region to atomic."); return SAR_ptr->Pop(); } protected: Pointer< StackAtomicRegion> HopelessAR_ptr; Pointer< StackAtomicRegion> SAR_ptr; Pointer< HeapAtomicRegion > HAR_ptr; Pointer< Integrand > Int_ptr; void StoreAtomic(GEOMETRY*,Processor*); //void StoreAtomic(GEOMETRY*); void Preprocess(); void Improve(); real MaxAtomicError() const; COMPOUND_REGION* NewCopy() const; }; ////////////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif /////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'vector.h' then echo shar: will not over-write existing file "'vector.h'" else cat << \SHAR_EOF > 'vector.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : vector.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS Vector // -------------------------- // // BASECLASSES: // None // // // PURPOSE: // implements vectors of arbitrary length. // // TEMPLATES: // The type T of the elements is templated. T can be any // class with a copy constructor, a default constructor // and an assignment operator. // // METHODS: // CONSTRUCTORS: // 1) Vector() // ------------- // default constructor. the length is not defined so // the Vector must be initialized afterwards by an // assignment operation. use before this assignment // will result in an error. // // 2) Vector(const Vector&) // ----------------------- // copy constructor. // // 3) Vector(unsigned int n) // --------------------------- // constructs a vector of length n; // // 4) Vector(unsigned int n,T* p) // ------------------- // assumes p is pointing to a classical C array and // copies its elements. if the array has not the // expected dimension n, an error might occur . // // // SELECTORS: // 1) unsigned int Size() const // ---------------- // returns the length of a vector. // // MODIFIERS: // None // OPERATORS: // 1) Vector& operator=(const Vector&) // ----------------------------------------- // assignment operator. Sizes must be equal, // unless the lefthandside hasn't got // a Size. // // 2) Boolean operator ==(const Vector&) // ------------------------------------- // equality operator. Sizes must be equal // // 3) Boolean operator !=(const Vector&) // ------------------------------------- // !(==). Sizes must be equal // // 4) T& operator[](unsigned int) const // --------------------------- // selects the ith component. 0<=i ///////////////////////////////////////////////// template class Vector { public: Vector(); Vector(unsigned int length); Vector(unsigned int,T*); Vector(const Vector&); T& operator[](unsigned int) ; const T& operator[](unsigned int) const; Vector& operator=(const Vector&); Boolean operator == (const Vector&) const; Boolean operator != (const Vector&) const; ~Vector(); unsigned int Size() const; protected: unsigned int TheSize; T* Contents; }; /////////////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif #endif SHAR_EOF fi # end of overwriting check if test -f 'vstack.h' then echo shar: will not over-write existing file "'vstack.h'" else cat << \SHAR_EOF > 'vstack.h' ///////////////////////////////////////////////////////// // // // Cubpack++ // // // // A Package For Automatic Cubature // // // // Authors : Ronald Cools // // Dirk Laurie // // Luc Pluym // // // ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // File : vstack.h // History: // (date) (version) // 19 Aug 1994 V0.1 (first limited distribution) ///////////////////////////////////////////////////////// // DEFINITION OF CLASS VectorStack // ------------------------------------------------- // // BASECLASSES: // Vector // // PURPOSE: // implements a stack of elements T, with individual // access possible. // // TEMPLATES: // The type T of the elements to be stacked is // templated. They must have a copy constructor // // METHODS: // CONSTRUCTORS: // 1) VectorStack() // ----------------- // creates an empty VectorStack // // 2) VectorStack(const VectorStack& V) // ------------------------------------- // // SELECTORS: // None // // MODIFIERS: // None // // OPERATORS: // 1) void operator+=(const T& t) ; // ------------------------------ // pushes a copy of t on top of the stack. // // SPECIAL: // None // ///////////////////////////////////////////////////////// #ifndef VSTACK_H #define VSTACK_H ///////////////////////////////////////////////// #include #include ///////////////////////////////////////////////// template class VectorStack: public Vector { public: VectorStack(); VectorStack(const VectorStack&); VectorStack& operator=(const VectorStack&); void operator+=(const T&); }; /////////////////////////////////////////////////// #include #ifdef TEMPLATEINCLUDE #include #endif /////////////////////////////////////////////////////// #endif SHAR_EOF fi # end of overwriting check if test -f 'makefile' then echo shar: will not over-write existing file "'makefile'" else cat << \SHAR_EOF > 'makefile' CC = gcc CFLAGS = -x c++ -I. # COPTIONS = -DEGTRUSAGE COPTIONS = libdir = -L. libs = -lcubpack -lm -lg++ MYTESTPROG = main.o .c.o: ; $(CC) $(CFLAGS) -c $*.c chrono.o: chrono.c $(CC) $(CFLAGS) $(COPTIONS) -c chrono.c OBJS = \ point2D.o \ C2.o \ C2dv2.o \ C2dv4.o \ C2interf.o \ C2prc.o \ C2rule13.o \ C2toS2.o \ C2togr.o \ E2tostrp.o \ E2.o \ E2adapt.o \ E2interf.o \ E2sec.o \ E2secitf.o \ E2secprc.o \ S2.o \ S2adapt.o \ S2interf.o \ S2rule13.o \ T2.o \ T2dv4.o \ T2interf.o \ T2rule13.o \ T2tops.o \ atomreg.o \ boolean.o \ chrono.o \ compreg.o \ eval_ctr.o \ geometry.o \ gr.o \ gritf.o \ gs.o \ gsitf.o \ gsprc.o \ integran.o \ integrat.o \ invert.o \ outS2.o \ outS2itf.o \ polC2.o \ polC2itf.o \ polC2prc.o \ ps.o \ psitf.o \ refcount.o \ regcoll.o \ reginfo.o \ region.o \ semstitf.o \ semistrp.o \ sttosmst.o \ strip.o \ stripitf.o \ translat.o \ trnsfrm.o all:: libcubpack.a libcubpack.a: $(OBJS) ar ru libcubpack.a $(OBJS) ranlib libcubpack.a tst: $(MYTESTPROG) $(CC) $(MYTESTPROG) $(libdir) $(libs) -o tst clean: /bin/rm -f *.o tst core SHAR_EOF fi # end of overwriting check if test -f 'main.c' then echo shar: will not over-write existing file "'main.c'" else cat << \SHAR_EOF > 'main.c' // Example 28 from ditamo #include #include real f(const Point& p) { real y=p.Y(); return 1/(y*y); } int main () { Point A(2,-1), B(1,-1); SEMI_INFINITE_STRIP langelat(A,B); real Integral_est, Error_est; Boolean Success; EvaluationCounter TikTak; TikTak.Start(); cout.setf(ios::scientific,ios::floatfield); do { Integrate(f,langelat,Integral_est,Error_est,Success,0,0.5e-7,10000); cout <<"The integral is " << Integral_est; cout <<" with estimated absolute error " << Error_est << endl; cout <<"The real error is " << Integral_est - 1 < 'userman.ps' %!PS-Adobe-2.0 %%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software %%Title: userman.dvi %%Pages: 23 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%EndComments %DVIPSCommandLine: dvips -o userman.ps userman.dvi %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1996.05.31:1334 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 39158280 55380996 1000 300 300 (/home/ronald/Research/Puk93/Tekst/userman.dvi) @start /Fa 2 65 df<00000000001800000000003C00000000007C0000000000F80000000001F0 0000000003E00000000007C0000000000F80000000001F00000000003E00000000007C00 00000000F80000000001F00000000003E00000000007C0000000000F80000000001F0000 0000003E00000000007C0000000000F80000000001F00000000003E00000000007C00000 00000F80000000001F00000000003E00000000007C0000000000F80000000001F0000000 0003E00000000007C0000000000F80000000001F00000000003E00000000007C00000000 00F80000000001F00000000003E00000000007C0000000000F80000000001F0000000000 3E00000000007C0000000000F80000000000F000000000006000000000002E2E82AB2A> 0 D<600000000000F00000000000F800000000007C00000000003E00000000001F000000 00000F800000000007C00000000003E00000000001F00000000000F800000000007C0000 0000003E00000000001F00000000000F800000000007C00000000003E00000000001F000 00000000F800000000007C00000000003E00000000001F00000000000F800000000007C0 0000000003E00000000001F00000000000F800000000007C00000000003E00000000001F 00000000000F800000000007C00000000003E00000000001F00000000000F80000000000 7C00000000003E00000000001F00000000000F800000000007C00000000003E000000000 01F00000000000F800000000007C00000000003C0000000000182E2E82AB2A>64 D E /Fb 2 52 df<3F00FFC0F3E0F0E0F0E000E000E001E001C007800F001C0038607060 FFC0FFC00B107F8F0F>50 D<1F007F8071C079C071C003C00F800F8001C000E060E0F0E0 F0E0F1C07FC03F000B107F8F0F>I E /Fc 2 122 df<3EF07FF8E3B8C33807380600E600 E618EE38FFF07BE00D0B7E8A11>120 D<3C1C7E1CEE18CC180C381C30183018701CF01F E00FE0006030E073C07F803E000E107F8A10>I E /Fd 7 122 df58 D<0018001800380030003000700060006000E000C001C00180018003800300030007 00060006000E000C000C001C001800380030003000700060006000E000C000C0000D217E 9812>61 D<07DC1FFC3C7C783C703CE038E038E078E078C073E0F3F3F77FFE3E3C100E7F 8D13>97 D<7E007E001C001C003C003C003800380078007FE07FF07C70F838F038E038E0 38E078E070C070E0E0F3C07F803F000D177F960F>I<03F00FF83E3878387000E000E000 E000E000E000E018F0787FF01FC00D0E7F8D0F>I<1F9F003FFF8071F38061E380E1C300 01C00001C00003C00003C000E38300E38700E78E00FFFE007CF800110E7F8D14>120 D<1E03803F0380770380670780E707000F07000E07000E0F001E0E001C0E001C1E001E3E 000FFC0007FC00001C00183C0038780038F0003FE0001F80001114808D11>I E /Fe 2 50 df0 D<0FC00FC03FF03FF07DF87C78707CF0 38E01FE01CC00FC00CC00F800CC007C00CC00FC00CE01FE01C703CF83878F87EF83FF03F F00FC00FC01E0E7E8D23>49 D E /Ff 4 114 df20 DI< 00000003C000000007E00000000EF00000000EF00000001CF00000001CF00000001CF000 0000380000000038000000003800000000780000000078000000007000000000F0000000 00F000000000F000000000E000000001E000000001E000000001E000000001E000000003 C000000003C000000003C000000003C000000007C000000007C000000007800000000780 00000007800000000F800000000F800000000F800000000F000000001F000000001F0000 00001F000000001F000000003F000000003E000000003E000000003E000000003E000000 007E000000007C000000007C000000007C000000007C00000000FC00000000F800000000 F800000000F800000000F800000001F800000001F000000001F000000001F000000001F0 00000001E000000003E000000003E000000003E000000003C000000003C000000003C000 000007C000000007C000000007800000000780000000078000000007800000000F000000 000F000000000F000000000F000000000E000000001E000000001E000000001C00000000 1C000000003C000000003C000000003800000000380000000078000000F070000000F0F0 000000F0E0000000F1E0000000F3C00000007F800000003E00000000245C7E7F17>90 D<00000000060000000006000000000E000000000C000000000C000000001C0000000018 000000001800000000380000000030000000003000000000700000000060000000006000 000000E000000000C000000000C000000001C00000000180000000018000000003800000 00030000000003000000000700000000060000000006000000000E000000000C00000000 0C000000001C000000001800000000180000000038000000003000000000300000000070 000000006000000000600004000060000E0000E0001E0000C0003E0000C0003E0001C000 6F00018000EF000180004F0003800007800300000780030000078007000003C006000003 C006000003C00E000003C00C000001E00C000001E01C000001E018000000F018000000F0 38000000F030000000F0300000007870000000786000000078600000003CE00000003CC0 0000003CC00000001FC00000001F800000001F800000001F800000000F000000000F0000 00000F00000000060000000006000000274B7C812A>113 D E /Fg 10 117 df<000FE000007FF00000F8780001E0780003C078000780780007003000070000 00070000000700000007000000070000000700000007000000FFFFF800FFFFF800070078 000700380007003800070038000700380007003800070038000700380007003800070038 00070038000700380007003800070038000700380007003800070038007FE1FF807FE1FF 80192380A21B>12 D73 D<7FF807FF007FF807FF0007E003F00003E001E00001E001 C00000F003800000F80300000078060000007C0E0000003E0C0000001E180000001F3800 00000FB000000007E000000007E000000003E000000001E000000003F000000003F80000 0007780000000E7C0000000C3E0000001C1E000000181F000000300F8000007007800000 6007C00000C003E00001C001E000038001F000078000F0000FC001FC00FFE007FFC0FFE0 07FFC022227FA125>88 D<01FC0007FF001F0F803E03C03C01C07801E07801E0FFFFE0FF FFE0F00000F00000F00000F00000F000007800007800603C00E03E01C00F83C007FF0001 FC0013157F9416>101 D<1C003E003E003E001C00000000000000000000000000000000 000E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E00FFC0FFC00A227FA10E>105 D<0E3F80FEFFE0FFE1E01F80F00F00700F00700E00 700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00 70FFE7FFFFE7FF18157F941B>110 D<0E3FC0FEFFE0FFE1F00F80F80F007C0E003C0E00 3E0E001E0E001E0E001E0E001E0E001E0E001E0E003E0E003C0E003C0F007C0F80F80FE1 F00EFFE00E3F800E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE0 00171F7F941B>112 D<0E7EFEFFFFEF1F8F0F0F0F000F000E000E000E000E000E000E00 0E000E000E000E000E000E00FFF0FFF010157F9413>114 D<1FD83FF87878F038E018E0 18F018F8007F807FE01FF003F8007CC03CC01CE01CE01CF03CF878FFF0CFE00E157E9413 >I<060006000600060006000E000E000E001E003E00FFF8FFF80E000E000E000E000E00 0E000E000E000E000E000E0C0E0C0E0C0E0C0E0C0F1C073807F803E00E1F7F9E13>I E /Fh 1 115 df<0F003FC07FE07FE0FFF0FFF0FFF0FFF07FE07FE03FC00F000C0C8685 0C>114 D E /Fi 1 47 df46 D E /Fj 22 118 df<00F001E003E003C007800F000F001E001E003C003C003C007800780078007800 F800F000F000F000F000F000F000F000F000F000F000F000F000F8007800780078007800 3C003C003C001E001E000F000F00078003C003E001E000F00C2E7EA112>40 DI<001F0000001F0000 003F8000003B8000003B8000007BC0000073C0000071C00000F1E00000E1E00000E0E000 01E0F00001E0F00001C0F00003C0780003C078000380780007803C0007803C0007003C00 0FFFFE000FFFFE000FFFFE001E000F001E000F003C000F803C0007803C000780780007C0 780003C0780003C0F00003E01B207F9F1E>65 DI<003FE000FFF803FFFC07F07C0FC01C1F800C1F0000 3E00003C00007C0000780000780000F80000F00000F00000F00000F00000F00000F00000 F00000F00000F800007800007800007C00003C00003E00001F00001F80060FC00E07F03E 03FFFC00FFF8003FE017227DA01D>II72 DI<003F000000FFC00003FFF00007E1F8000F807C001F003E001E00 1E003C000F003C000F00780007807800078078000780F00003C0F00003C0F00003C0F000 03C0F00003C0F00003C0F00003C0F00003C0F00003C0F80007C078000780780007807800 07803C000F003C000F001E001E001F003E000F807C0007E1F80003FFF00000FFC000003F 00001A227DA021>79 DI82 D<0FF03FFC7FFE783E601F000F000F000F007F0FFF3FFF7E0FF80FF00FF00FF81FFC3F7F FF7FFF3F8F10147E9316>97 D<0007800007800007800007800007800007800007800007 8000078000078000078000078007E7801FFF803FFF803F1F807C0F80780780F80780F007 80F00780F00780F00780F00780F00780F80780780F807C0F803E3F803FFF801FF78007C7 8011207E9F17>100 D<03F0000FFC001FFE003E1F003C0700780700700380FFFF80FFFF 80FFFF80F00000F00000F000007000007800003C03003E0F001FFF0007FE0001F8001114 7F9314>I<07F1F00FFFF01FFFF03E3E007C1F00780F00780F00780F00780F00780F007C 1F003E3E003FFC003FF80037F0003000003800003FFE003FFFC03FFFE07FFFE0F803F0F0 01F0F000F0F000F0F801F07E07E03FFFC01FFF8003FC00141E7F9317>103 DI< F0F0F0F00000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F 0B>I110 D114 D<0FF03FFC3FFC7C1C780078007C007E003FE03FF01FF803FC007C003C003CC03CF87CFF F87FF01FE00E147F9311>I<1E001E001E001E001E001E00FFF0FFF0FFF01E001E001E00 1E001E001E001E001E001E001E001E001E001E001F601FF00FF00FC00C1A7F9910>II E /Fk 38 122 df<00003FC0FF800000FFE3FFE00001C1EF00E0 000381EE01E0000781FC01E00007001C01C00007003C0000000700380000000F00380000 000E00380000000E00380000000E0078000000FFFFFFFF8001FFFFFFFF80001C00700700 001C00700700001C00F00700001C00E00F00003C00E00E00003800E00E00003800E00E00 003801E01E00003801C01C00007801C01C00007001C01C00007001C03C60007003C038E0 0070038038C000F0038038C000E003803DC000E003801F8000E007800F0000E007000000 01E00700000001C00700000001C00E00000071CE0E0000007B8F1C000000FF1F38000000 7F0FF00000007E07E00000002B29829F28>14 D<000180000380000F00001E00001C0000 380000700000E00000E00001C00003C0000380000700000700000F00000E00000E00001C 00001C00001C000038000038000038000038000070000070000070000070000060000060 0000E00000E00000E00000E00000E00000E00000E0000060000060000070000070000030 00003800003800001C00000C0000112E7AA113>40 D<001C00000C00000E000007000007 000003000003800003800003800003800003800001800001800003800003800003800003 80000380000380000380000700000700000700000700000E00000E00000E00000E00001C 00001C0000380000380000380000700000700000E00001E00001C0000380000780000700 000E00001C0000380000700000E00000112E80A113>I<1C3C3C3C3C0C1C18383070E0C0 C0060E7D840E>44 DI<70F8F8F0F005057B840E>I<000F80 003FE000F0F001C0700380700380380700780F00780F00780E00781E00781E00703C00F0 3C00F03C00F03C00F07801E07801E07801E07801C07003C0F003C0F00380F00780F00700 700F00700E00701C003878001FF0000FC000151F7C9D17>48 D<0000E00000E00000E000 01E00001C00001C00001C0000380000380000780000700000700000E00000E00001C0000 1C0000380000380000700000F30000E70001C700038700078F000F0E001E0E003C0E007F 9E00FFFCC0C0FFC0001F80003C0000380000380000380000780000700000700000700013 277E9D17>52 D<00E03000FFF000FFE001FF800180000180000180000380000300000300 00030000077E0007FF0007C7800703800E03800E03C00003C00003C00007C00007803807 80780780780F80F80F00E01E00E01E00603C0078F8003FE0001F8000141F7C9D17>I<0F 0F1F1F0E0000000000000000000070F8F8F0F008147B930E>58 D<000007000000070000 000F0000000F0000001F0000003F0000003F0000006F0000006F000000CF000000CF0000 018F0000038F0000030F0000060F0000060F00000C0F80000C0780001807800018078000 3FFF80007FFF800060078000C0078000C00780018007800180078003000780070007801F 8007C07FC07FF8FFC07FF81D207E9F22>65 D<0001FE060007FF8E001F83CC007E00FC00 F8007C01F0007C03C0003807C000380F8000380F0000381E0000301E0000303C0000303C 0000007C000000780000007800000078000000F8000000F0000000F0000000F00001C0F0 000180F00001807000038078000300780007003C000E003E001C001F0078000FC1F00007 FFC00000FE00001F217A9F21>67 D<01FFF3FFE001FFF3FFE0001F003E00001E003C0000 1E007C00003E007C00003C007800003C007800003C00F800007C00F800007800F0000078 00F000007801F00000F801F00000FFFFE00000FFFFE00000F003E00001F003E00001E003 C00001E003C00001E007C00003E007C00003C007800003C007800003C00F800007C00F80 0007800F000007800F00000F801F0000FFF9FFF000FFF9FFF000231F7D9E22>72 D<01FFF001FFF0001F00001E00001E00003E00003C00003C00003C00007C000078000078 0000780000F80000F00000F00000F00001F00001E00001E00001E00003E00003C00003C0 0003C00007C0000780000780000F8000FFF800FFF800141F7D9E12>I<0007F0C0001FFD C0007C3F8000F00F8000E0078001C0078003C00300038003000380030003800300038000 0003C0000003E0000003FC000003FF800001FFE00000FFF000001FF8000003F8000000F8 00000078000000380000003800300038003000380070007800700070007000F0007801E0 00FC03C000FF078000CFFF0000C3FC00001A217D9F1A>83 D<00F9C003FFC0078FC00F0F 801E07803C07803C0780780700780700780F00F80F00F00E00F00E00F01E30F01E70F03C 60707C6078FEE03FCFC01F078014147C9317>97 D<07803F803F80070007000F000F000E 000E001E001E001C001CF83FFC3F1E3E0E3C0F780F780F700F700F701FF01FE01EE01EE0 3CE03CE07870F071E03FC01F0010207B9F15>I<007E0003FF0007C3800F07801E07803C 07803C0200780000780000780000F80000F00000F00000F00000F000007003007807003C 3E003FFC000FE00011147C9315>I<0000780003F80003F80000700000700000F00000F0 0000E00000E00001E00001E00001C000F9C003FFC0078FC00F0F801E07803C07803C0780 780700780700780F00F80F00F00E00F00E00F01E30F01E70F03C60707C6078FEE03FCFC0 1F078015207C9F17>I<00FE0003FF0007C7800F03801E01803C03807C0700781F007FFC 007FF000F80000F00000F00000F000007000007003007807003C3E001FFC000FE0001114 7C9315>I<0000F80001FC0003BC00073C00073C000700000700000E00000E00000E0000 0E00000E0001FFE001FFE0001C00001C00001C00003C0000380000380000380000380000 780000700000700000700000700000F00000E00000E00000E00000E00001E00001C00001 C00001C0007380007B8000FF00007F00007C00001629829F0E>I<003E7000FFF001E3F0 03C3E00781E00F01E00F01E01E01C01E01C01E03C03E03C03C03803C03803C07803C0780 3C0F001C1F001E3F000FFF0007CE00000E00001E00001E00001C00703C00787800F8F000 7FE0003F8000141D7E9315>I<01E0000FE0000FE00001C00001C00003C00003C0000380 00038000078000078000070000073F000FFF800FE3800F83C00F01C01F03C01E03801E03 801C03803C07803C0700380700380F00780E38780E30701E30701C70F01EE0F00FC0E007 8015207D9F17>I<00F000F000F000E000000000000000000000000000000F001F803BC0 71C063C06380E380078007000F000F000E001E001C701C603C6038E03DC01F800F000C1F 7D9E0E>I<01E0000FE0000FE00001C00001C00003C00003C00003800003800007800007 80000700000703C00F0FE00F1C600E39E00E71E01EE1E01FC1C01F80001F80003FE0003D F00038F0003878007878E07870C07070C07071C0F07B80F03F80E01F0013207D9F15> 107 D<03C01FC01FC00380038007800780070007000F000F000E000E001E001E001C001C 003C003C00380038007800780070007000F180F380E300E300F7007E003C000A207C9F0C >I<1E0FE0FC003F1FF3FE0077F8778E0063F07E0F0063E03C0700E7C07C0F00C780780E 000780780E000700700E000F00F01E000F00F01C000E00E01C000E00E03C001E01E038E0 1E01E038C01C01C078C01C01C071C03C03C07B803C03C03F003803801E0023147D9325> I<1E0FE03F1FF077F87063F07863E038E7C078C780700780700700700F00F00F00E00E00 E00E01E01E01C71E01C61C03C61C038E3C03DC3C01F83800F018147D931A>I<007E0003 FF8007C7800F03C01E01C03C01E03C01E07801E07801E07803E0F803E0F003C0F003C0F0 0780F00780700F00781E003C7C003FF8000FC00013147C9317>I<03C1F007E7F80EFE3C 0C7C1C0C781E1CF01E18F01E00E01E00E01E01E03E01E03E01C03C01C03C03C07803C078 03C0F003E1E007E3C007FF80073E000700000F00000F00000E00000E00001E00001E0000 FFC000FFC000171D809317>I<1E1F003F3F8077F1C063E3C063C3C0E783C0C783800700 000700000F00000F00000E00000E00001E00001E00001C00001C00003C00003C00003800 0012147D9313>114 D<01FC03FE07870F0F0E0F0E0F1E000F800FF80FFC03FC007E001E 701EF01CF01CF03CF0787FF01FC010147D9313>I<01C003C003C0038003800780078007 00FFF0FFF00F000E000E001E001E001C001C003C003C00380038007870786070E070C079 C03F801F000C1C7C9B0F>I<0F00701F80F03BC0F071C0E063C0E06381E0E381E00781C0 0701C00703C00F03C00E03800E03800E078C0E079C0E0F180E0F180F3FB807FBF003E1E0 16147D9318>I<0F01C01F83E03BC3E071C3E063C1E06380E0E380C00780C00700C00701 C00F01800E01800E01800E03000E03000E07000E0E000F1C0007F80003F00013147D9315 >I<0F0070E01F80F1F03BC0E1F071C0E1F063C0E0F06381E070E381C0600781C0600701 C0600703C0E00F03C0C00E0380C00E0380C00E0381C00E0781800E0783800E0F83000F1F CF0007FDFE0001F0F8001C147D931E>I<07C7801FFFC03CFCE07079E07071E060F1E0E0 E1C000E00000E00001E00001E00001C00001C00073C0E0F3C0C0F381C0F7C180EFC780FF FF007C7C0013147D9315>I<0F00701F80F03BC0E071C0E063C0E06381E0E381C00781C0 0701C00703C00F03800E03800E03800E07800E07000E0F000E0F000F3F0007FE0003EE00 000E00001E00101C00783C0078380078700071E0007FC0001F0000141D7D9316>I E /Fl 10 55 df<038007000F000E001C00380038003800700070007000E000E000E000 E000E000E000E000E000E000E000E000E0007000700070003800380038001C000E000F00 0700038009227E980E>40 DI<003000003000003000003000003000003000003000 003000003000003000003000FFFFFCFFFFFC003000003000003000003000003000003000 00300000300000300000300000300016187E931B>43 D<07C01FF03838701C600C600CE0 0EE00EE00EE00EE00EE00EE00EE00EE00E600C701C701C38381FF007C00F157F9412>48 D<03000F00FF00F700070007000700070007000700070007000700070007000700070007 0007007FF07FF00C157E9412>I<1F803FE071F0E0F8E078E078E0380078007800F000F0 01E003C007800E001C1838187038FFF0FFF0FFF00D157E9412>I<1FE03FF87078703C70 3C003C003C007800F807F007E00078003C001E001EE01EE01EE03E707C7FF81FE00F157F 9412>I<007000F000F001F003F0077006700E701C70187030707070E070FFFEFFFE0070 00700070007003FE03FE0F157F9412>I<70307FF07FE07FC060006000600060006FC07F E078F06070003800380038E038E038E070F0F07FE01F800D157E9412>I<03F00FF81E1C 3C1C781C70007000E080EFF0FFF8F81CF01EE00EE00EE00E600E700E701C3C3C1FF80FE0 0F157F9412>I E /Fm 22 123 df<007E000003FF800007C783000F03C3001E01E3003C 01E7003C00E6007800EE007800EC007800FC00F800F800F000F800F000F000F000E000F0 01E0007003E000780FF0007C3E73803FF87F000FE03E0019147E931D>11 D<0000FE000003FF0000078780000E0380001C038000380380007003800060038000E003 8000C0078001C0070001800E000187FE000387FC000307FC0003001E0003000E0007000F 0006000F0006000F0006000F000E001F000C001E000C001E000C001E001C003C001E003C 001E0078001F00F0003F81E00033FFC00030FF8000300800007000000060000000600000 0060000000E0000000C0000000C0000000C00000001929809F1A>I<003E00007F0000F7 8001C38003C3C00781C00701C00F01C00E03C01E03C01E03C03C03C03C03C03C07C07C07 807FFF807FFF80780F80F80F00F00F00F00F00F01E00F01E00F01C00E03C00E03800E078 00F0F00070E0007BC0003F80001F000012207E9F15>18 D<07FFFF0FFFFF1FFFFF3C3180 703180607380E0638000630000E30000E30000C30001C30001C300038300038380038380 0703800703C00F03C00E0180181480931A>25 D<000F80003FE00078F000E07001C07803 80780380780700780700780700F80F00F80E00F00E00F01E01E01E01E01E03C01F07803F 8F003FFE0039F800380000780000780000700000700000F00000F00000E00000E00000E0 0000151E7F9318>I<060001C00E0003C01C0003E0180003E0380001E0300000E0700E00 C0600E00C0600E00C0600E01C0E01C0180C01C0180C01C0380E0380700E07C0F00F0FC1E 00FFFFFC007FFFF8007FCFF0001F07C0001B1480931C>33 D<70F8F8F87005057C840D> 58 D<70F8FCFC7C0C0C0C1C183870F060060E7C840D>I<00030003000700060006000E00 0C000C001C0018001800380030003000700060006000E000C000C001C001800180018003 80030003000700060006000E000C000C001C0018001800380030003000700060006000E0 00C000C000102D7DA117>61 D<80000000E0000000F80000003E0000000F80000003E000 0000F80000003E0000000F80000003E0000000F80000003E0000000F80000003C0000003 C000000F8000003E000000F8000003E000000F8000003E000000F8000003E000000F8000 003E000000F8000000E0000000800000001A1C7C9823>I<00FFF9FFF000FFF9FFF0000F 801F00000F001E00000F003E00001F003E00001E003C00001E003C00001E007C00003E00 7C00003C007800003C007800003C00F800007C00F800007FFFF000007FFFF000007801F0 0000F801F00000F001E00000F001E00000F003E00001F003E00001E003C00001E003C000 01E007C00003E007C00003C007800003C007800007C00F80007FFCFFF800FFFCFFF80024 1F7E9E26>72 D<00F9C003FFC0078FC00F0F801E07803C07803C0780780700780700780F 00F80F00F00E00F00E00F01E38F01E30F03C30707C7078FE603FCFE01F07C015147E9318 >97 D<07803F803F80070007000F000F000E000E001E001E001C001CF83FFC3F1E3E0E3C 0F780F780F700F700F701FF01FE01EE01EE03CE03CE07870F071E03FC01F0010207E9F14 >I<00FC03FE07C70F0F1E0F3C0F3C04780078007800F800F000F000F000F000F003780F 7C3E3FFC0FE010147E9314>I<00FC03FE07C70F031E033C077C0E783E7FF87FE0F800F0 00F000F000F0007003780F3C3E1FFC0FE010147E9315>101 D<0000FC0001FE0003DE00 039E00079E000700000700000700000700000F00000E00000E0000FFF001FFF0001E0000 1C00001C00001C00001C00003C0000380000380000380000380000380000780000700000 700000700000700000F00000E00000E00000E00001E00001C00071C0007B8000FB80007F 00007E000017297E9F16>I<007000F000F000F000000000000000000000000000000F80 1FC039C071C061C061C0E3C003800780070007000F000E001E381C301C301C701CE01FC0 0F800D1F7F9E10>105 D<1F07E0003F9FF00033FC700071F0780061E0380063E07800E3 C0700003C07000038070000780F0000780E0000700E0000701E0000F01C3800F01C3000E 03C3000E0387001E03CE001E01FC001C00F80019147F931B>110 D<1F0F003FBF8033F9C071F3C061E3C063C3C0E3C3800380000380000780000780000700 000700000F00000F00000E00000E00001E00001E00001C000012147F9315>114 D<07C3C01FFFE03C7E70307CF07038F06078F0E070E000700000700000F00000F00000E0 0000E00071E070F1E060F1C0E0F3E0C0E7E3C07FFF803C3E0014147E931A>120 D<0F80381FC07839E07070E07061E07061C0F0E1C0E003C0E00380E00381E00781C00701 C00701C00703C0070380070780070780079F8003FF0001F700000700000F00080E003C1E 003C3C003C780038F0003FE0001F8000151D7F9316>I<01E06007F0E007FFC00E3F800C 0700000700000E00001C0000380000F00001E0000380000700000E01C01C01801C03803F 8F007FFF00E1FE00C0F80013147E9315>I E /Fn 80 127 df<4010F078F078F078E038 E038E038E038E038E038E038E038E038E0380D0E7B9C18>34 D<078F00078F00078F0007 8F00078F00078F00078F00FFFFE0FFFFE0FFFFE07FFFE00F1E000F1E000F1E000F1E000F 1E000F1E007FFFE0FFFFE0FFFFE0FFFFE01E3C001E3C001E3C001E3C001E3C001E3C001E 3C00131C7E9B18>I<03C0000FF0000FF0001E78001E78001C38001C38001C78001C7BF0 1CF3F01FF3F01FE7800FC7800F87000F0F001F0F003F8E007FDE00FBDE00F1FC00E1FC00 E0F800E0F870F0FC70F9FEF07FFFF03FCFE01F03C0141C7F9B18>38 D<007000F003F007E00F800F001E003E003C007800780070007000F000F000E000E000E0 00E000E000E000F000F00070007000780078003C003E001E000F000F8007E003F000F000 700C24799F18>40 DI<01C00001C00001C00001C000C1C180F1C780F9CF 807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C0 0001C00011147D9718>I<00F00000F00000F00000F00000F00000F00000F00000F000FF FFE0FFFFE0FFFFE0FFFFE000F00000F00000F00000F00000F00000F00000F00000F00013 147E9718>I<3C7E7F7F7F3F0F0F3EFEF8F0080C788518>II<78FCFCFCFC780606778518>I<000380000780000780000F80000F00001F 00001E00001E00003E00003C00007C0000780000780000F80000F00001F00001E00003E0 0003C00003C00007C0000780000F80000F00000F00001F00001E00003E00003C00003C00 007C0000780000F80000F00000F00000E0000011247D9F18>I<01F00007FC000FFE001F 1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0E0 00E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC0001 F000131C7E9B18>I<0380038007800F800F803F80FF80FB806380038003800380038003 8003800380038003800380038003800380038003800380FFFEFFFEFFFE0F1C7B9B18>I< 07F8001FFE003FFF807C0FC0F803C0F001E0F001E0F000E0F000E00000E00001E00001E0 0003C00003C0000780000F80001F00003E0000FC0001F80003E00007C0000F80003F00E0 7E00E0FFFFE0FFFFE0FFFFE0131C7E9B18>I<07F8001FFE007FFF807C0FC07803C07801 C07801C00001C00003C00007C0000F8003FF0003FE0003FF80000FC00003C00001E00001 E00000E00000E0F000E0F001E0F001E0F003C0FC0FC07FFF801FFE0007F800131C7E9B18 >I<001F00003F00007F0000770000F70001E70001C70003C7000787000707000E07001E 07003C0700380700780700F00700FFFFF8FFFFF8FFFFF800070000070000070000070000 070000070000FFF800FFF800FFF8151C7F9B18>I<3FFF803FFF803FFF80380000380000 3800003800003800003800003800003800003BFC003FFF003FFF803E07C03803C00001E0 0001E00000E06000E0F000E0F001E0F003E0F007C07C0F807FFF001FFE0007F800131C7E 9B18>I<007E0003FF8007FFC00FC3C01F03C03E03C03C03C0780000780000F00000F3F8 00EFFE00FFFF80FE0F80FC03C0F803E0F001E0F000E0F000E0F000E07000E07801E07803 E03C07C03E0F801FFF000FFE0003F800131C7E9B18>II<03F8000FFE001FFF003E0F803803807001C07001C07001C07001C0 3803803C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E000E0E000E0E000E0 E000E07001C07803C03E0F801FFF000FFE0003F800131C7E9B18>I<03F8000FFE003FFF 007E0F80780780F003C0F003C0E001C0E001E0E001E0F001E0F001E07803E07E0FE03FFF E00FFEE003F8E00001E00001E00001C00003C07807C0780780781F00783F007FFC003FF8 000FE000131C7E9B18>I<78FCFCFCFC78000000000000000078FCFCFCFC780614779318> I<3C7E7E7E7E3C00000000000000003C7E7E7E7E3E1E1E3CFCF8E0071A789318>I<0003 80000F80001F80003F8000FE0001FC0003F8000FE0001FC0003F8000FE0000FC0000FC00 00FE00003F80001FC0000FE00003F80001FC0000FE00003F80001F80000F800003801118 7D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FF FFE07FFFC0130C7E9318>II<00700000F80000F80000D80000D80001DC 0001DC0001DC00018C00038E00038E00038E00038E000306000707000707000707000707 000FFF800FFF800FFF800E03800E03801C01C01C01C0FF8FF8FF8FF8FF8FF8151C7F9B18 >65 DI<01FCE007FFE00FFFE01F07E03E03 E03C01E07801E07800E07000E0F00000F00000E00000E00000E00000E00000E00000E000 00F00000F000007000E07800E07800E03C01E03E03E01F07C00FFF8007FF0001FC00131C 7E9B18>IIII<01F9C007FFC00FFFC01F 0FC03E07C03C03C07803C07801C07001C0F00000F00000E00000E00000E00000E00000E0 1FF0E01FF0F01FF0F001C07003C07803C07803C03C07C03E0FC01F1FC00FFFC007FDC001 F9C0141C7E9B18>III76 DII<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380 E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780 700700780F007FFF003FFE000FF800111C7D9B18>II<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E0 0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E1E380E1E380F0 E78070F700787F007FFF003FFE000FFC00001C00001E00000E00000F0000070000070011 227D9B18>II<07F3801FFF803FFF807C1F 80F80780F00780E00380E00380F00000F000007800007F00003FF0000FFE0001FF80001F C00003C00001E00001E00000E0E000E0E000E0E001E0F003E0FC07C0FFFF80FFFF00E7FC 00131C7E9B18>III87 D<7F9FE07F9FE07F9FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F0 0000F00000700000F00000F80001F80001DC00039E00038E00070F000707000E07800E03 801E03C0FF8FF8FF8FF8FF8FF8151C7F9B18>II<7FFFE07FFFE07FFFE07003E07003C0700780700F80000F00001E00003E00003C00 00780000F80000F00001E00003E00003C0000780000F80000F00001E00E03E00E03C00E0 7800E0F800E0FFFFE0FFFFE0FFFFE0131C7E9B18>II93 D95 D<1FE0007FF8007FFE00783E00780F00 000F0000070001FF000FFF003FFF007F0700F80700F00700E00700E00700F00F00F83F00 7FFFF03FFFF00FE1F014147D9318>97 DI< 01FE000FFF801FFF803F07807C0780780000F00000F00000E00000E00000E00000E00000 F00000F000007801C07C03C03F07C01FFF800FFF0001FC0012147D9318>I<003F80003F 80003F8000038000038000038000038000038003F3800FFF801FFF803E1F807C0F807807 80F00780F00380E00380E00380E00380E00380F00780F00780780F80781F803E3F803FFF F80FFBF803E3F8151C7E9B18>I<03F0000FFE001FFF003E1F807C0780780380F003C0F0 03C0E001C0FFFFC0FFFFC0FFFFC0F00000F000007801C07C03C03F07C01FFF800FFF0001 FC0012147D9318>I<001FC0007FE000FFE001F1E001E0C001C00001C00001C000FFFFC0 FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<03F1F00FFFF81FFF F81E1F383C0F003C0F003807003807003807003C0F003C0F001E1E001FFE003FFC003FF0 003C00003C00001FFF003FFFC07FFFF07801F0F00078F00078E00038E00038F00078F800 F87E03F03FFFE00FFF8003FE00151F7F9318>II<03800007C00007C00007C000038000000000000000000000000000FFC000FFC000 FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C000FFFF80FFFF80FFFF80111D7C9C18>I107 DIII<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0 E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>II<03F3800FFF801FFF803E1F807C 0F80780780F00780F00780E00380E00380E00380E00380F00780F00780780F807C0F803E 1F801FFF800FFF8003F380000380000380000380000380000380000380000380003FF800 3FF8003FF8151E7E9318>II<0FF7003FFF007FFF00F81F00F00F00E00700F00700FC00007FF0001FFC 0007FF00001F80E00780E00380F00380F80780FC0F80FFFF00FFFE00E7F80011147D9318 >I<038000038000038000038000038000FFFFC0FFFFC0FFFFC003800003800003800003 80000380000380000380000380000380000380400380E00380E003C1E003E3E001FFC000 FF80007E0013197F9818>IIII<7F9FF0 7F9FF07F9FF0070700078E00039E0001DC0001F80000F80000700000F00000F80001DC00 039E00038E000707000F0780FF8FF8FF8FF8FF8FF815147F9318>II<7FFFF07FFFF07FFFF07003E07007C0700F8000 1F00003E00007C0000F80001F00003E00007C0000F80701F00703E00707C0070FFFFF0FF FFF0FFFFF014147F9318>I<0007E0003FE0007FE000FC0000F00000E00000E00000E000 00E00000E00000E00000E00000E00000E00000E00001E0007FE000FFC000FFC0007FE000 01E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000 00FC00007FE0003FE00007E013247E9F18>I125 D<0F0E3F9E7FBEFBFCF3F8E1E00F067C9B18>I E /Fo 28 122 df<0001800000018000 000180000001800000018000000180000003800000030000000300000003000000030000 00030000000700000006000000060000FFFFFFF0FFFFFFF000060000000E0000000C0000 000C0000000C0000000C0000000C0000001C000000180000001800000018000000180000 0038000000300000003000001C207B9A23>43 D<3C3E7E7E3E060E0C0C1C3870E0C0070E 7D840D>I<7878F8F87005057C840D>46 D<000018000000380000003800000078000000 7C000000FC000000FC000001BC000001BC0000033C0000033E0000061E0000061E00000C 1E00000C1E0000181E0000181F0000300F0000300F0000600F00007FFF0000FFFF0000C0 0F0001800780018007800300078003000780060007800E0007801F0007C0FFC07FFCFFC0 7FFC1E207E9F22>65 D<0003FC08001FFE18007F073800FC03F801F001F803E000F807C0 00F00F8000700F0000701F0000703E0000703E0000703E0000607C0000007C0000007C00 00007C000000FC000000F8000000F8000000F8000000F80000C0780001C0780001807C00 01807C0003803C0007003E0006001F000E000F803C0007E0F00003FFE000007F80001D21 7B9F21>67 D<07FFFF0007FFFFE0003C01F0003C00F8007C007C0078003C0078001E0078 001E0078001E0078001F00F8001F00F0001F00F0001F00F0001F00F0001F00F0001F01F0 001E01E0003E01E0003E01E0003E01E0003C01E0007C03E0007803C000F003C000F003C0 01E003C003C003C00F8007C03F007FFFFC00FFFFE000201F7E9E23>I<07FFF00007FFF0 00003C0000003C0000007C0000007800000078000000780000007800000078000000F800 0000F0000000F0000000F0000000F0000000F0000001F0000001E0000001E0000001E001 8001E0018001E0030003E0030003C0030003C0070003C0060003C00E0003C01E0007C07E 007FFFFC00FFFFFC00191F7E9E1C>76 D<07FC0000FFC007FC0001FFC0003E0001F80000 3E0003F800007E0003F800006E0006F000006E0006F000006E000CF0000067000CF00000 670019F00000E70019F00000C70031E00000C70031E00000C70061E00000C38061E00000 C380C3E00001C380C3E00001838183C00001838183C0000181C303C0000181C303C00001 81C607C0000381C607C0000301CC0780000301CC0780000300F80780000300F807800007 00F00F80000F80F00F80007FF0E0FFF800FFF0E1FFF8002A1F7E9E2A>I<07FFFF0007FF FFC0003C03E0003C01F0007C00F0007800F8007800F8007800F8007800F8007800F800F8 01F000F001F000F001E000F003C000F00F8000FFFE0001FFF80001E0000001E0000001E0 000001E0000001E0000003E0000003C0000003C0000003C0000003C0000003C0000007C0 00007FFC0000FFFC00001D1F7E9E1F>80 D<07FFFC0007FFFF00003C07C0003C03E0007C 01E0007801F0007801F0007801F0007801F0007801E000F803E000F003C000F0078000F0 1F0000FFFC0000FFF00001F0780001E03C0001E03C0001E01C0001E01E0001E01E0003E0 3E0003C03E0003C03E0003C03E0003C03E0603C03E0E07C03F0C7FFC1F1CFFFC1FF80000 07F01F207E9E21>82 D 85 D<07F8001FFE001E1F001E07001C070000070000070000070003FF000FFF003F0F00 7C0F00F80E00F00E30F00E30F01E30F03E30F8FE607FEFC03F8F0014147D9317>97 D<0700003F00007F00000F00000700000F00000E00000E00000E00000E00000E00001E00 001C7E001DFF801F87801E03C01C01C03C01E03801E03801E03801E03801E03803E07803 C07003C07003C0700780700F80781F00FC3E00EFFC00C3F00013207B9F19>I<01FE07FF 0F0F1E0F3C0E78007800F000F000F000F000F000E000F000F000F00E780C7C3C3FF80FE0 10147C9314>I<0000380001F80003F80000780000780000780000700000700000700000 700000F00000F001FCE003FFE00F87E01F03E01E01E03C01E03C01C07801C07801C07801 C07803C0F803C0F00380700380700380780780780F803C3F801FF7F00FC7F015207D9F19 >I<01FC0007FE000F0F001E07003C0780780380780380F00380FFFF80FFFF80F00000F0 0000E00000F00000F00000F007007806003E1E001FF8000FE00011147D9314>I<0007C0 001FE0007DE000F1E000E1C001E00001C00001C00001C00001C00001C00003C0007FF800 7FF8000380000380000380000780000700000700000700000700000700000F00000E0000 0E00000E00000E00001E00001E0000FFE000FFE00013207E9F0E>I<01C003E003E003E0 03C000000000000000000000000003801F801F8007800380078007000700070007000700 0F000E000E000E000E000E001E00FF80FF800B1F7F9E0C>105 D<00E00007E0000FE000 01E00000E00001E00001C00001C00001C00001C00001C00003C0000387FC0387FC0383E0 038380038700078E00071C0007380007F80007FC0007BC000F1E000E1E000E0F000E0F00 0E07800E07801E07C0FF8FF0FF8FF016207E9F18>107 D<00E007E00FE001E000E001E0 01C001C001C001C001C003C0038003800380038003800780070007000700070007000F00 0E000E000E000E001E001E00FFC0FFC00B207F9F0C>I<038FE0FE001FBFF3FF003FF0F7 0F0007E07E070003C07C0700078078070007807807000700700700070070070007007007 0007007007000F00F00F000E00E00E000E00E00E000E00E00E000E00E00E000E01E01E00 1E01E01E00FFCFFCFFC0FFCFFCFFC022147E9326>I<038FC01FBFE03FF1E007E0E003C0 E00780E00780E00700E00700E00700E00701E00F01E00E01C00E01C00E01C00E01C00E03 C01E03C0FFCFF8FFCFF815147E9319>I<00FC0003FF000F03801E01C03C00E03800E070 00F0F000F0F000F0F000F0F000F0E001E0E001E0E001C0F003C0F003807007003C1E001F FC0007E00014147D9317>I<00E3F007EFFC0FFC3C00F01E00E01E01E00F01C00F01C00F 01C00F01C00F01C01F03C01E03801E03803E03803C03807C03C0F807E1F0077FE0071F80 0700000700000F00000F00000E00000E00000E0000FFC000FFC000181D809319>I<039F 001FFF803FF78007E78003C7000780000780000700000700000700000700000F00000E00 000E00000E00000E00000E00001E0000FFE000FFE00011147E9312>114 D<03FE0FFE1F1E1C0E1C0E3C0E3C003F001FE00FF807FC007C603C601C601C703C7038F8 78FFF0CFC00F147E9312>I<0E01C07E0FC0FE1FC01E03C00E03C01E03C01C03801C0380 1C03801C03801C07803C0780380700380700380F00380F00381F00387F003FFFE01FCFE0 13147C9319>117 D<0FF87F800FF87F8001E03E0001C0180001E0180000E0300000E030 0000E0600000E0E00000E0C0000071C00000718000007300000073000000760000003E00 00003C0000003C000000380000003800000030000000300000006000000060000070C000 00F1800000F3800000FF0000007C000000191D809318>121 D E /Fp 39 121 df<003F800001FFF00007E0FC000FC07E001F803F001F001F003F001F803E 000F807E000FC07E000FC07E000FC07E000FC0FE000FE0FE000FE0FE000FE0FE000FE0FE 000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE 000FE0FE000FE07E000FC07E000FC07E000FC07E000FC03F001F803F001F801F001F001F 803F000FC07E0007E0FC0001FFF000003F80001B277DA622>48 D<000E00001E00007E00 07FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE 17277BA622>I<00FF800007FFF0000FFFFC001E03FE003800FF807C003F80FE003FC0FF 001FC0FF001FE0FF000FE0FF000FE07E000FE03C001FE000001FE000001FC000001FC000 003F8000003F0000007E000000FC000000F8000001F0000003E00000078000000F000000 1E0000003C00E0007000E000E000E001C001C0038001C0060001C00FFFFFC01FFFFFC03F FFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FF FC000F80FE001F007F003F807F003F803F803F803F803F803F801F803F801F003F800000 7F0000007F0000007E000000FC000001F8000007F00000FFC00000FFC0000001F8000000 7E0000003F0000003F8000001FC000001FC000001FE000001FE03C001FE07E001FE0FF00 1FE0FF001FE0FF001FC0FF003FC0FE003F807C007F003F00FE001FFFFC0007FFF00000FF 80001B277DA622>I<00000E0000001E0000003E0000007E000000FE000000FE000001FE 000003FE0000077E00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E 0001C07E0003807E0007007E000E007E000E007E001C007E0038007E0070007E00E0007E 00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE 000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<180003001F801F00 1FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF00001C0000001C0000001C000000 1C0000001C0000001C0000001C0000001C7FC0001DFFF8001F80FC001E003F0008003F00 00001F8000001FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0 FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFFC0003FFF000 00FF80001B277DA622>I<0007F800003FFE0000FFFF0001FC078003F00FC007C01FC00F 801FC01F801FC01F001FC03F000F803F0000007E0000007E0000007E000000FE020000FE 1FF000FE3FFC00FE603E00FE801F00FF801F80FF000FC0FF000FC0FE000FE0FE000FE0FE 000FE0FE000FE07E000FE07E000FE07E000FE07E000FE03E000FE03F000FC01F000FC01F 001F800F801F0007E07E0003FFFC0001FFF800003FC0001B277DA622>I<380000003E00 00003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF0070000E007000 0E0070001C00E0003800E0007000E000E0000001E0000001C00000038000000780000007 0000000F0000001F0000001E0000003E0000003E0000007E0000007C0000007C000000FC 000000FC000000FC000000FC000001FC000001FC000001FC000001FC000001FC000001FC 000001FC000000F80000007000001C297CA822>I<003FC00001FFF00003FFFC0007C07E 000F003F001E001F001E000F803E000F803E000F803F000F803F800F803FC00F803FF01F 001FFC1E001FFE3C000FFFF8000FFFE00007FFF80001FFFC0001FFFE0007FFFF000F0FFF 801E03FFC03E01FFC07C007FE07C001FE0F8000FE0F80007E0F80003E0F80003E0F80003 E0F80003C07C0003C07E0007803F000F001FC03F000FFFFC0003FFF800007FC0001B277D A622>I<007F800001FFF00007FFF8000FC0FC001F803E003F001F007E001F807E001F80 7E000F80FE000FC0FE000FC0FE000FC0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0 7E001FE07E001FE03F003FE01F002FE00F80CFE007FF8FE001FF0FE000080FE000000FC0 00000FC000000FC000001F803E001F807F001F807F003F007F003E007F007E007E00FC00 3E03F8001FFFE0000FFF800001FE00001B277DA622>I<00000780000000000780000000 000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000003FF0000000 003FF0000000003FF00000000077F80000000077F800000000F7FC00000000E3FC000000 00E3FC00000001C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF000000 07007F80000007007F8000000F007FC000000E003FC000000E003FC000001C001FE00000 1C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F80000 F00007FC0000E00003FC0000E00003FC0001C00001FE0001C00001FE0003C00001FF00FF FE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65 DI<00007FE0030007FFFC07001FFFFF0F 007FF00F9F00FF0001FF01FC0000FF03F800007F07F000003F0FE000001F1FC000001F1F C000000F3F8000000F3F800000077F800000077F800000077F00000000FF00000000FF00 000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF0000 00007F000000007F800000007F800000073F800000073F800000071FC00000071FC00000 0E0FE000000E07F000001C03F800003C01FC00007800FF0001F0007FF007C0001FFFFF80 0007FFFE0000007FF00028297CA831>III72 DI77 D82 D<7FFFFFFFFF807FFFFFFFFF807FFFFFFFFF807F80 7F807F807C007F800F8078007F80078078007F80078070007F800380F0007F8003C0F000 7F8003C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C00000 7F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000 7F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000 7F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000 7F80000000007F80000000007F80000000007F80000000FFFFFFC00000FFFFFFC00000FF FFFFC0002A287EA72F>84 D<03FF80000FFFF0001F01FC003F80FE003F807F003F803F00 3F803F801F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F800FE03F80 1F803F803F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00DF80 3F839FFC1FFE0FFC03F803FC1E1B7E9A21>97 DI<003FF00001FFFC0003F03E000FC07F001F807F003F 007F003F007F007F003E007E0000007E000000FE000000FE000000FE000000FE000000FE 000000FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007000F E00E0003F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF00000 07F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000 07F0000007F0000007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F00 07F07E0007F07E0007F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE00 07F0FE0007F0FE0007F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF007E0 7FFF01FFE7FF007F87FF202A7EA925>I<003FC00001FFF00003E07C000F803E001F801F 001F001F003F000F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FFFFFF C0FE000000FE000000FE0000007E0000007E0000007F0000003F0001C01F0001C00F8003 8007C0070003F01E0000FFFC00003FE0001A1B7E9A1F>I<0007F8003FFC007E3E01FC7F 03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0 FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF80 7FFF807FFF80182A7EA915>I<007F80F001FFE3F807C0FE1C0F807C7C1F003E7C1F003E 103F003F003F003F003F003F003F003F003F003F003F003F001F003E001F003E000F807C 0007C0F80005FFE0000C7F8000180000001C0000001C0000001E0000001FFFF8001FFFFF 000FFFFFC007FFFFE003FFFFF00FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000 F8F80000F87C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>I< FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE00000 0FE000000FE000000FE000000FE000000FE000000FE000000FE07E000FE1FF800FE30FC0 0FE40FE00FE807E00FF807F00FF007F00FF007F00FE007F00FE007F00FE007F00FE007F0 0FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0 0FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA925>I<07000F801F C03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE00F E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F E00FE0FFFEFFFEFFFE0F2B7EAA12>I108 DII<003FE00001FFFC0003F07E00 0FC01F801F800FC03F0007E03F0007E07E0003F07E0003F07E0003F0FE0003F8FE0003F8 FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F87E0003F07E0003F03F0007E0 3F0007E01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II114 D<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FE0000FFE0007FFF007FFF C03FFFE01FFFF007FFF800FFF80007FC0000FCE0007CE0003CF0003CF00038F80038FC00 70FF01E0E7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000 F00001F00003F00003F00007F0001FFFE0FFFFE0FFFFE007F00007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F07007F07007F07007 F07007F07007F07007F07003F0E001F8C000FFC0003F0014267FA51A>I I120 D E /Fq 9 121 df0 D2 D<0003FF0000000FFFC000003E01F00000F8007C0001E0001E000380 00070007000003800E000001C00C000000C01C000000E038000000703000000030300000 0030700000003860000000186000000018E00000001CC00000000CC00000000CC0000000 0CC00000000CC00000000CC00000000CC00000000CC00000000CC00000000CE00000001C 6000000018600000001870000000383000000030300000003038000000701C000000E00C 000000C00E000001C00700000380038000070001E0001E0000F8007C00003E01F000000F FFC0000003FF0000262B7DA02D>13 D<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF7FFE7FFE3FFC1FF807E010127D9317>15 D<000000C0000003C000000F80 00003E000000F8000003E000000F8000003E000000F8000003E000000F8000003E000000 F8000000E0000000F80000003E0000000F80000003E0000000F80000003E0000000F8000 0003E0000000F80000003E0000000F80000003C0000000C0000000000000000000000000 00000000000000000000000000000000FFFFFFC0FFFFFFC01A247C9C23>20 DI<00060000000600000006000000060000000600000006000000060000 000600000006000000060000000600000006000000060000000600000006000000060000 000600000006000000060000000600000006000000060000000600000006000000060000 00060000FFFFFFF0FFFFFFF01C1C7D9B23>63 D 106 D<0F803FC078E07070F070E070E070E000E000F000700078003C001F003FC079E070 F0F070E078E038E038E038F038707878703CF01FE007C001E000F0007000780038003870 3870387078707038F01FE00F800D297D9F14>120 D E /Fr 48 121 df<7CFEFEFFFFFF7F030707060E1C3C787008107C860F>44 D<7CFEFEFEFEFE7C07077C 860F>46 D<01FC0007FF001F07C01E03C03E03E07C01F07C01F07C01F0FC01F8FC01F8FC 01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C 01F07C01F03E03E01E03C01F8FC007FF0001FC00151D7E9C1A>48 D<00700000F0000FF000FFF000F3F00003F00003F00003F00003F00003F00003F00003F0 0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 0003F00003F00003F000FFFF80FFFF80111D7C9C1A>I<07F8003FFE00787F807C1FC0FE 1FC0FE0FE0FE0FE0FE07E07C07E0380FE0000FE0000FC0001FC0001F80003F00003E0000 7C0000F80001F00003C0600380600700600E00E01FFFE03FFFC07FFFC0FFFFC0FFFFC0FF FFC0131D7D9C1A>I<03FC000FFF801F1FC01F0FE03F87E03F87E03F87E03F8FE03F8FE0 1F0FC0001F80003F0001FE0001FE00001F800007E00007F00003F03C03F87E03F8FF03F8 FF03F8FF03F8FF03F8FF07F07E07E03E0FE01FFF8003FE00151D7E9C1A>I<0001C00003 C00007C00007C0000FC0001FC0003FC00077C00067C000C7C00187C00387C00707C00E07 C00C07C01807C03807C07007C0E007C0FFFFFEFFFFFE000FC0000FC0000FC0000FC0000F C0000FC001FFFE01FFFE171D7F9C1A>I<3803803FFF803FFF803FFF003FFC003FF8003F 800030000030000030000030000033F8003FFE003E3F80381FC0300FC0000FE0000FE000 0FE07C0FE0FE0FE0FE0FE0FE0FE0FE0FC0FC0FC0701F803C3F001FFE000FF000131D7D9C 1A>I<007F8001FFC007E0E00F81F01F03F03E03F03E03F07E03F07C01E07C0000FC1000 FCFF80FFFFC0FF83E0FF03F0FE01F0FE01F8FC01F8FC01F8FC01F8FC01F87C01F87C01F8 7C01F83E01F01F03E01F87C007FF8001FE00151D7E9C1A>I<6000007FFFF87FFFF87FFF F07FFFE07FFFE0FFFFC0E00380C00700C00E00C00C00001C0000380000780000780000F0 0000F00000F00001F00001F00001F00003F00003F00003F00003F00003F00003F00003F0 0003F00001E000151E7D9D1A>I<01FE0007FF800F0FC01E03C01C03E03C01E03E01E03F 01E03F81E03FE3C03FFFC01FFF801FFF800FFFC00FFFE01FFFF03E7FF07C3FF8F80FF8F0 03F8F000F8F000F8F00078F80078F800F07C00E03F03E01FFF8003FE00151D7E9C1A>I< 03FC000FFF001F0FC03E03E07C03E07C01F0FC01F0FC01F0FC01F8FC01F8FC01F8FC01F8 FC03F87C03F87E07F83E0FF81FFFF80FF9F80041F80001F03C01F07E03F07E03E07E03E0 7E07C07C0F803C3F001FFE0007F000151D7E9C1A>I<7CFEFEFEFEFE7C0000000000007C FEFEFEFEFE7C07147C930F>I<0000E000000000E000000001F000000001F000000001F0 00000003F800000003F800000007FC00000007FC0000000FFE0000000CFE0000000CFE00 0000187F000000187F000000307F800000303F800000703FC00000601FC00000601FC000 00C01FE00000C00FE00001FFFFF00001FFFFF000018007F000030003F800030003F80006 0003FC00060001FC000E0001FE00FFE01FFFE0FFE01FFFE0231F7E9E28>65 DI<000FFC06007FFF8E01FE03DE 03F800FE0FE0007E1FC0003E1F80001E3F80000E7F00000E7F00000E7F000006FE000006 FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007F000006 7F0000067F0000063F80000E1F80000C1FC0001C0FE0003803F800F001FF03E0007FFF80 000FFC001F1F7D9E26>III72 DI75 DII<03FC180FFFB83F07F87C00F87C0078F80038F80038F80018 FC0018FE0000FF0000FFF8007FFF807FFFC03FFFE01FFFF00FFFF803FFF8003FFC0003FC 0001FC0000FCC0007CC0007CC0007CE00078F000F8F800F0FF03F0EFFFC0C1FF00161F7D 9E1D>83 D<7FFFFFFC7FFFFFFC7C0FE07C700FE01C600FE00C600FE00CE00FE00EC00FE0 06C00FE006C00FE006C00FE006000FE000000FE000000FE000000FE000000FE000000FE0 00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0 00000FE000000FE00007FFFFC007FFFFC01F1E7E9D24>II<3FFFFF803FFFFF803F807F803E00FF003801FE003801FE007003FC007003 F8006007F800600FF000600FF000001FE000003FC000003FC000007F8000007F000000FF 000001FE000001FE018003FC018007F8018007F801800FF003800FE003801FE003003FC0 07003FC00F007F801F00FF007F00FFFFFF00FFFFFF00191F7D9E20>90 D<07FC001FFF803F0FC03F07C03F03E03F03E01E03E00003E001FFE00FFFE03FC3E07E03 E0FC03E0F803E0F803E0F803E0FC07E07E1FE03FFDFE0FF0FE17147F9319>97 DI<03FE000F FF801F8FC03F0FC07E0FC07C0FC0FC0780FC0000FC0000FC0000FC0000FC0000FC0000FC 00007E00007E00603F00E01FC3C00FFF8003FE0013147E9317>I<0007F80007F80000F8 0000F80000F80000F80000F80000F80000F80000F80000F80000F803FCF80FFFF81F87F8 3F01F87E00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F8 7E01F83E03F81F87F80FFEFF03F8FF18207E9F1D>I<01FF0007FFC01F87E03F01F07E00 F07E00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007E00003E00183F00 381FC0F007FFE001FF8015147F9318>I<003F8000FFC001FFE003E7E007E7E007C7E007 C3C007C00007C00007C00007C00007C000FFFC00FFFC0007C00007C00007C00007C00007 C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0003F FC003FFC0013207F9F10>I<03FE7C0FFFFE1F8FDE1F07DE3E03E03E03E03E03E03E03E0 3E03E01F07C01F8FC01FFF801FFE001800001C00001E00001FFFC01FFFF00FFFF83FFFFC 7C00FEF8003EF0001EF0001EF0001EF8003E7C007C3F01F81FFFF003FF80171E7F931A> II<3E007F00 7F007F007F007F003E00000000000000000000000000FF00FF001F001F001F001F001F00 1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B217EA00E>I107 DI< FE1FE07F80FE7FF9FFE01EF0FBC3E01FC0FF03F01F807E01F01F807E01F01F007C01F01F 007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F00 7C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D932C>II<01FF0007FFC0 1F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C 7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>II114 D<0FF63FFE781EE00EE006F006F800FFC07FF87FFC1FFE03FF003FC00F E007E007F00FFC1EFFFCCFF010147E9315>I<01800180018003800380038007800F803F 80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F860F860F860F860F CC07FC01F80F1D7F9C14>III 120 D E /Fs 36 122 df45 D<7CFEFEFEFEFE7C07077C8610>I<00FE0007FFC00F83E01F01F03E00F83E00F87C007C 7C007C7C007CFC007CFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E FC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F83E00F81F01F00F83E007FFC0 00FE0017207E9F1C>48 D<00180000780001F800FFF800FFF80001F80001F80001F80001 F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE013 207C9F1C>I<03FC001FFF803C1FC0700FE0FC07F0FE03F0FE03F8FE03F8FE01F87C01F8 3803F80003F80003F00007F00007E0000FC0000F80001F00003E00007C0000F80001F018 01C0180380180700180E00381FFFF03FFFF07FFFF0FFFFF0FFFFF0FFFFF015207D9F1C> I<01FF0007FFC01F07E01E03F03F03F83F01F83F81F83F01F83F03F80E03F80003F00007 F0000FE0001F8001FF0001FF000007E00003F80001FC0000FC0000FE0000FE7C00FEFE00 FEFE00FEFE00FEFE00FCFE01FC7803F83E07F01FFFE003FF0017207E9F1C>I<1800601E 03E01FFFE01FFFC01FFF801FFF001FFC001BE00018000018000018000018000019FE001F FF801F0FC01C07E01803F00003F00003F80003F80003F87803F8FC03F8FC03F8FC03F8FC 03F8FC03F06007F0780FE03C1FC01FFF0007FC0015207D9F1C>53 D<000070000000007000000000F800000000F800000000F800000001FC00000001FC0000 0003FE00000003FE00000003FE00000006FF000000067F0000000E7F8000000C3F800000 0C3F800000183FC00000181FC00000381FE00000300FE00000300FE00000600FF0000060 07F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE00030000 FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A>65 D<0007FE0180003FFFC38000FF01E78003FC007F8007F0001F800FE0000F801FC0000F80 1F800007803F800003807F000003807F000003807F00000180FE00000180FE00000000FE 00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 0000007F000001807F000001807F000001803F800003801F800003001FC00007000FE000 0E0007F0001C0003FC00380000FF01F000003FFFC0000007FF000021227DA128>67 DI76 D78 D80 D82 D87 D<07FE001FFF803F0FC03F07E03F07F03F03F01E03F00003F00003F001FFF00FFFF03FE3 F07F03F07E03F0FE03F0FC03F0FC03F0FC07F0FE0FF07F1FF83FFDFF0FF0FF18167E951B >97 DI<01FF8007FFE01FC3F03F03F03E03F07E03F07C01E0FC0000FC0000FC0000 FC0000FC0000FC0000FC0000FC00007E00007E00003F00303F80701FE1E007FFC001FF00 14167E9519>I<0003FE000003FE0000007E0000007E0000007E0000007E0000007E0000 007E0000007E0000007E0000007E0000007E0000007E0001FE7E0007FFFE001FC3FE003F 00FE003E007E007E007E007C007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC 007E00FC007E00FC007E007C007E007E007E003E00FE003F01FE001F83FE000FFF7FC001 FC7FC01A237EA21F>I<01FE0007FF801F87E03F03E03E01F07E00F07C00F8FC00F8FC00 F8FFFFF8FFFFF8FC0000FC0000FC0000FC00007E00007E00003F00181F80380FE0F007FF E000FF8015167E951A>I<003F8001FFC003F7E007E7E007E7E00FC7E00FC3C00FC0000F C0000FC0000FC0000FC0000FC000FFFC00FFFC000FC0000FC0000FC0000FC0000FC0000F C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F C0007FFC007FFC0013237FA211>I<01FE1F0007FFFF800F87F7801F03E7803E01F3003E 01F0003E01F0003E01F0003E01F0003E01F0003E01F0001F03E0000F87C0001FFF80001D FE0000180000001C0000001E0000001FFFE0001FFFFC001FFFFE000FFFFF003FFFFF007E 007F80FC001F80F8000F80F8000F80F8000F80FC001F807E003F003F80FE000FFFF80001 FFC00019217F951C>II<1F003F803F803F803F803F801F00000000000000000000 0000000000FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F 801F801F801F801F80FFF0FFF00C247FA30F>I107 DIII<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007C FC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E0 07FFC000FE0017167E951C>II114 D<0FFB003FFF007C1F00780700F00300F00300F80000FF0000FFF8007FFC 007FFE001FFF000FFF80007F80C00F80C00F80E00780F00780F80F00FC1F00FFFE00C7F8 0011167E9516>I<00C00000C00000C00000C00001C00001C00003C00007C0000FC0001F C000FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F C0000FC0000FC1800FC1800FC1800FC1800FC1800FE38007E70003FF0000FC0011207F9F 16>III121 D E /Ft 86 128 df<001FC3F0007FEFF801F0FE7803C0FC780780F8780700 7000070070000700700007007000070070000700700007007000FFFFFF80FFFFFF800700 700007007000070070000700700007007000070070000700700007007000070070000700 70000700700007007000070070000700700007007000070070007FE3FF007FE3FF001D20 809F1B>11 D<001F8000FFC001F1E003C1E00781E00701E0070000070000070000070000 070000070000FFFFE0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E0 0700E00700E00700E00700E00700E00700E00700E00700E07FC3FE7FC3FE1720809F19> I<001FE000FFE001F1E003C1E00781E00700E00700E00700E00700E00700E00700E00700 E0FFFFE0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700 E00700E00700E00700E00700E00700E00700E07FE7FE7FE7FE1720809F19>I<001FC1FC 00007FE7FE0001F0FF0F0003C0FC0F000780F80F000700F00F0007007000000700700000 0700700000070070000007007000000700700000FFFFFFFF00FFFFFFFF00070070070007 007007000700700700070070070007007007000700700700070070070007007007000700 700700070070070007007007000700700700070070070007007007000700700700070070 07007FE3FE3FF07FE3FE3FF02420809F26>I<70F8F8F8F8F8F8F8F8F870707070707070 707070707070000000000070F8F8F87005217CA00D>33 D<7038F87CFC7EFC7E7C3E0C06 0C060C061C0E180C381C7038F07860300F0E7E9F17>I<0F8000303FC0007039E000E070 F801E0707E0FC0E07FFF80E033FB80E0300700E0300600E0300E00E0301C00E0301800E0 7038007060700070E0600039C0E0003FC1C0000F818000000381E0000303F80007073800 0E0E1C000C0E0C001C1C0E00381C0600301C0600701C0600E01C0600C01C0601C01C0603 801C0603001C0E07000E0C0E000E1C0C0007381C0003F8180001E01F257DA126>37 D<70F8FCFC7C0C0C0C1C183870F060060E7C9F0D>39 D<00E001C003C0038007000E000E 001C001C003800380030007000700070006000E000E000E000E000E000E000E000E000E0 00E000E000E000E000E00060007000700070003000380038001C001C000E000E00070003 8003C001C000E00B2E7DA112>II<00060000000600000006000000060000000600000006000000060000000600 0000060000000600000006000000060000000600000006000000060000FFFFFFF0FFFFFF F00006000000060000000600000006000000060000000600000006000000060000000600 000006000000060000000600000006000000060000000600001C207D9A23>43 D<70F8FCFC7C0C0C0C1C183870F060060E7C840D>II<70F8 F8F87005057C840D>I<00030003000700060006000E000C000C001C0018001800380030 003000700060006000E000C000C001C00180018001800380030003000700060006000E00 0C000C001C0018001800380030003000700060006000E000C000C000102D7DA117>I<03 F0000FFC001E1E001C0E00380700780780700380700380700380F003C0F003C0F003C0F0 03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C070038070038070 03807807803807001C0E001E1E000FFC0003F000121F7E9D17>I<018003801F80FF80E3 800380038003800380038003800380038003800380038003800380038003800380038003 8003800380038003800380FFFEFFFE0F1E7C9D17>I<07F0001FFC003C3E00701F00600F 80E00780F807C0F807C0F803C0F803C07007C00007C00007C0000F80000F00001F00003E 00003C0000780000F00001E0000380000700000E00C01C00C03800C0700180FFFF80FFFF 80FFFF80121E7E9D17>I<07F0001FFC003C3F00380F00780F80780F807C0780780F8000 0F80000F80001F00001E00007E0003F80003F000003C00001F00000F80000F800007C000 07C07007C0F807C0F807C0F807C0F80F80E00F80701F003C3E001FFC0007F000121F7E9D 17>I<000E00000E00001E00003E00003E00006E0000EE0000CE00018E00038E00030E00 060E000E0E000C0E00180E00380E00300E00600E00E00E00FFFFF0FFFFF0000E00000E00 000E00000E00000E00000E00000E0000FFE000FFE0141E7F9D17>I<3807003FFF003FFE 003FFC003FF00030000030000030000030000030000030000031F80037FC003F1E003C0F 003807803807800003C00003C00003C00003C07003C0F003C0F003C0F003C0E007806007 80700F003C3E001FFC0007F000121F7E9D17>I<00FE0003FF0007C7800F07801E07803C 07803C0780780000780000700000F06000F3FC00F7FE00FE0F00FC0780F80780F80380F0 03C0F003C0F003C0F003C0F003C07003C07003C07803C07807803807803C0F001E1E000F FC0003F000121F7E9D17>I<6000007FFFC07FFFC07FFFC0600380C00300C00700C00E00 000C00001C0000380000300000700000E00000E00000C00001C00001C00003C000038000 038000038000038000078000078000078000078000078000078000078000078000121F7D 9D17>I<03F0000FFC001E1E003C0F003807807003807003807003807803807C07807E07 003F8E001FFC000FF80007F8000FFE001EFF003C3F80781F807007C0F003C0E003C0E001 C0E001C0E001C0F003C07003807807003E1F001FFC0007F000121F7E9D17>I<03F0000F FC001E1E003C0F00780700780780F00780F00380F00380F003C0F003C0F003C0F003C0F0 03C07007C07807C0780FC03C1FC01FFBC00FF3C00183C000038000078000078078070078 0F00781E00783C007878003FF0000FC000121F7E9D17>I<70F8F8F87000000000000000 00000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070F8F8F87818 181838303070E040051D7C930D>I61 D<003FC00000FFF00003E07C0007801E000E0007001C000380181F8180387FC1C070F8E0 E070E070E061E03C60E1C03C70C3C01C30C3801C30C3801C30C3801C30C3801C30C3801C 30C3801C30C3C01C30E1C03C3061E03C3070E07C6070F8FEE0387FCFC0181F87801C0000 000E000000078001F003E01FE000FFFF00003FF0001C207D9F23>64 D<0003800000038000000380000007C0000007C0000007C000000DE000000DE000000DE0 000018F0000018F0000018F00000307800003078000030780000603C0000603C0000603C 0000E01E0000C01E0000FFFE0001FFFF0001800F0001800F0003800F8003000780030007 80070007C0070003C00F8003C0FFE03FFEFFE03FFE1F207F9F22>II<001FC0C000FFF0C001F83DC007E00FC00F8007C00F 0007C01F0003C03E0001C03C0001C07C0001C07C0000C07C0000C0F80000C0F8000000F8 000000F8000000F8000000F8000000F8000000F8000000F80000007C0000C07C0000C07C 0000C03C0001C03E0001801F0001800F0003800F80070007E00E0001F83C0000FFF80000 1FE0001A217D9F21>IIII<001FE060007FF86001F83CE003E00FE007C007E00F8003E01F0001E03E 0000E03E0000E07C0000E07C0000607C000060F8000060F8000000F8000000F8000000F8 000000F8000000F8000000F8007FFCF8007FFC7C0001E07C0001E07C0001E03E0001E03E 0001E01F0001E00F8001E007C003E003E007E001FC1FE0007FFC60001FF0001E217D9F24 >III<0FFFC00FFFC0003C00003C00003C 00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C 00003C00003C00003C00003C00003C00003C00703C00F83C00F83C00F83C00F87C00E078 0078F0003FE0000FC00012207E9E17>IIII I<001F800000FFF00001E0780007C03E000F801F000F000F001E0007803C0003C03C0003 C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001 F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03E0007C01E0007 800F000F000F801F0007C03E0001F0F80000FFF000001F80001C217D9F23>II<001F800000FFF00001E0780007C03E000F 801F000F000F001E0007803E0007C03C0003C07C0003E07C0003E0780001E0F80001F0F8 0001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C 0003E07C0003E03C0003C03E0F07C01E1F87800F38CF000FB0FF0007F0FE0001F8F80000 FFF010001FF010000070100000783000007C7000003FF000003FE000001FE000001FC000 0007801C297D9F23>I I<07E1801FF9803C3F80780F80700780E00380E00380E00180E00180E00180F00000F800 007C00007F80003FF8003FFE000FFF0003FF00003F80000F800003C00003C00001C0C001 C0C001C0C001C0E001C0E00380F00380F80780FE0F00CFFE00C3F80012217D9F19>I<7F FFFFE07FFFFFE0780F01E0700F00E0600F0060600F0060E00F0070C00F0030C00F0030C0 0F0030C00F0030000F0000000F0000000F0000000F0000000F0000000F0000000F000000 0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 0F0000000F000007FFFE0007FFFE001C1F7E9E21>IIII<7FF83FF87FF83FF807E00F8003 C00F0001E00E0001F00C0000F0180000783800007C3000003C7000003E6000001EC00000 0FC000000F8000000780000007C0000007E000000DE000001DF0000018F8000038780000 307C0000603C0000E01E0000C01F0001800F0003800780078007C00FC007E0FFE01FFEFF E01FFE1F1F7F9E22>II91 D<180C3C1E381C70386030E070C060C060C060F87CFC7E FC7E7C3E381C0F0E7B9F17>II<183C387060E0C0 C0C0F8FCFC7C38060E7D9F0D>96 D<3FE0007FF800787C00781E00781E00000E00000E00 000E0007FE001FFE003F0E007C0E00F80E00F00E30F00E30F01E30F81E307C7F703FFFE0 1FC78014147E9317>I<0E0000FE0000FE00000E00000E00000E00000E00000E00000E00 000E00000E00000E00000E3F000EFFC00FC3E00F81E00F00F00E00F00E00780E00780E00 780E00780E00780E00780E00780E00780E00F00F00F00F81E00FC3C00CFF800C7F001520 7F9F19>I<03FC0FFE1E1E3C1E781E7800F000F000F000F000F000F000F000F80078007C 033E071F0E0FFC03F010147E9314>I<000380003F80003F800003800003800003800003 8000038000038000038000038000038007F3800FFF801E1F803C0780780780780380F003 80F00380F00380F00380F00380F00380F00380F003807803807807803C0F803E1F801FFB F807E3F815207E9F19>I<03F0000FFC001E1E003C0F00780700780780F00780F00380FF FF80FFFF80F00000F00000F00000F800007800007C01803E03801F87000FFE0003F80011 147F9314>I<007E00FF01EF038F078F0700070007000700070007000700FFF0FFF00700 0700070007000700070007000700070007000700070007000700070007007FF07FF01020 809F0E>I<0001E007F7F00FFF703E3E703C1E00780F00780F00780F00780F00780F0078 0F003C1E003E3E003FF80037F0003000003000003800003FFE001FFFC03FFFE07803E0F0 00F0E00070E00070E00070F000F07801E03E07C01FFF8003FC00141F7F9417>I<0E0000 FE0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E7F00 0EFF800FC7C00F83C00F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C0FFE7FCFFE7FC16207F9F19>I<1C003E003E003E00 1C000000000000000000000000000E007E007E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E000E00FFC0FFC00A1F809E0C>I<00E001F001F001F000E000 0000000000000000000000007007F007F000F00070007000700070007000700070007000 7000700070007000700070007000700070007000700070F0F0F0E0F1E0FFC03F000C2882 9E0E>I<0E0000FE0000FE00000E00000E00000E00000E00000E00000E00000E00000E00 000E00000E1FF00E1FF00E0F800E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC 000F3C000E1E000E0F000E0F000E07800E07800E03C0FFCFF8FFCFF815207F9F18>I<0E 00FE00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B20809F0C>I<0E3F 03F000FEFFCFFC00FFC3DC3C000F81F81E000F00F00E000F00F00E000E00E00E000E00E0 0E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E 000E00E00E000E00E00E000E00E00E00FFE7FE7FE0FFE7FE7FE023147F9326>I<0E7F00 FEFF80FFC7C00F83C00F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C0FFE7FCFFE7FC16147F9319>I<01F80007FE001E07 803C03C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07801 E03801C03C03C01E078007FE0001F80014147F9317>I<0E3F00FEFFC0FFC3E00F81E00F 01F00E00F00E00F80E00780E00780E00780E00780E00780E00780E00F80E00F00F01F00F 81E00FC7C00EFF800E7F000E00000E00000E00000E00000E00000E00000E0000FFE000FF E000151D7F9319>I<07F1800FF9801F1F803C0F807C0780780380F80380F00380F00380 F00380F00380F00380F00380F803807807807C07803C0F803E1F801FFB8007E380000380 000380000380000380000380000380000380003FF8003FF8151D7E9318>I<0E7CFFFEFF DE0F9E0F1E0F000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00F 147F9312>I<1FB07FF078F0E070E030E030F000FC007FC03FE00FF000F8C078C038E038 E038F078F8F0FFE0CFC00D147E9312>I<06000600060006000E000E001E003E00FFF8FF F80E000E000E000E000E000E000E000E000E000E000E180E180E180E180E180F3007F003 E00D1C7F9B12>I<0E01C0FE1FC0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E03C00E07C00F0FC007FDFC03F9FC16147F93 19>III<7FC7FC7FC7FC0F03E007038003830001C70000EE0000EC 00007800003800003C00007C0000EE0001C7000187000303800701C01F01E0FF87FEFF87 FE1714809318>II<3FFF3FFF381F 301E703C6078607860F001E003C003C007830F031E031E073C067806F81EFFFEFFFE1014 7F9314>II<78787878F87C787878780E057C9E17>127 D E /Fu 1 44 df<00000700000000000F80000000001FC0000000001FC0000000001FC0 000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 000000001FC0000000001FC000003FFFFFFFFFC07FFFFFFFFFE0FFFFFFFFFFF0FFFFFFFF FFF0FFFFFFFFFFF07FFFFFFFFFE03FFFFFFFFFC000001FC0000000001FC0000000001FC0 000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 000000001FC0000000001FC0000000000F8000000000070000002C2D7CB535>43 D E /Fv 7 118 df<000000007FFE0000060000000FFFFFC0001E0000007FFFFFF8003E 000003FFFFFFFE007E00000FFFF800FF80FE00003FFF80001FC1FE0000FFFC000007F3FE 0001FFF0000001FFFE0007FFC00000007FFE000FFF000000003FFE001FFE000000001FFE 003FFC000000000FFE007FF80000000007FE00FFF00000000007FE01FFF00000000003FE 01FFE00000000001FE03FFE00000000001FE07FFC00000000000FE07FFC00000000000FE 0FFF800000000000FE0FFF8000000000007E1FFF8000000000007E1FFF0000000000007E 3FFF0000000000003E3FFF0000000000003E3FFF0000000000003E7FFF0000000000003E 7FFE000000000000007FFE000000000000007FFE00000000000000FFFE00000000000000 FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000 FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000 FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000 7FFE000000000000007FFE000000000000007FFE000000000000007FFF00000000000000 3FFF0000000000001E3FFF0000000000001E3FFF0000000000001E1FFF0000000000001E 1FFF8000000000001E0FFF8000000000003E0FFF8000000000003C07FFC000000000003C 07FFC000000000003C03FFE000000000007801FFE000000000007801FFF00000000000F0 00FFF00000000001F0007FF80000000001E0003FFC0000000003C0001FFE000000000780 000FFF800000000F000007FFC00000003E000001FFF00000007C000000FFFC000001F800 00003FFF80000FF00000000FFFF8007FC000000003FFFFFFFF00000000007FFFFFFC0000 0000000FFFFFE00000000000007FFE00000047497AC754>67 D<0007FFE0000000007FFF FE00000001FFFFFFC0000003FC007FE0000007FE001FF8000007FE000FFC00000FFF0007 FE00000FFF0007FF00000FFF0003FF00000FFF0003FF80000FFF0001FF800007FE0001FF C00003FC0001FFC00001F80001FFC00000000001FFC00000000001FFC00000000001FFC0 0000000001FFC00000000001FFC0000000007FFFC00000003FFFFFC0000003FFFFFFC000 001FFFF1FFC000007FFC01FFC00001FFE001FFC00007FF8001FFC0000FFE0001FFC0001F FC0001FFC0003FF80001FFC0003FF80001FFC0007FF00001FFC0007FF00001FFC000FFE0 0001FFC000FFE00001FFC000FFE00001FFC000FFE00001FFC000FFE00003FFC000FFE000 03FFC0007FF00007FFC0007FF0000FFFC0003FF8001EFFC0001FFC003CFFF0000FFF01F8 7FFFE003FFFFE03FFFE000FFFF801FFFE0000FFE0003FFE0332E7CAD38>97 D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000 03FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 00000001FFC01FFC000001FFC0FFFF800001FFC3FFFFF00001FFCFE01FFC0001FFDF0003 FE0001FFFC0001FF0001FFF80000FF8001FFF000007FC001FFE000003FE001FFC000003F F001FFC000001FF801FFC000001FF801FFC000001FFC01FFC000001FFC01FFC000000FFE 01FFC000000FFE01FFC000000FFE01FFC000000FFE01FFC000000FFF01FFC000000FFF01 FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FF C000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFE01FFC000000FFE01FFC0 00000FFE01FFC000000FFC01FFC000001FFC01FFC000001FFC01FFC000001FF801FFC000 003FF001FFC000003FF001FFE000007FE001FFF000007FC001FFF80000FF8001FF3C0001 FF0001FE1F0007FE0001FC0FC03FF80001F803FFFFE00001F000FFFF800001E0001FF800 0038487CC741>I<00001FFF80000001FFFFF8000007FFFFFE00001FF800FF00007FE001 FF8000FF8001FF8001FF0003FFC003FE0003FFC007FE0003FFC00FFC0003FFC00FFC0003 FFC01FF80001FF803FF80000FF003FF800007E007FF8000000007FF0000000007FF00000 00007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF00000 0000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007FF00000 00007FF0000000007FF8000000007FF8000000003FF8000000003FF8000000001FFC0000 00F00FFC000000F00FFE000001E007FE000001E003FF000003C001FF8000078000FFC000 0F00007FF0003E00001FFC01FC000007FFFFF0000001FFFFC00000001FFE00002C2E7CAD 34>I<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC00000 000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000 0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF C00000000001FFC000FFFFE001FFC000FFFFE001FFC000FFFFE001FFC000FFFFE001FFC0 000FFC0001FFC00007E00001FFC0000FC00001FFC0001F800001FFC0003E000001FFC000 FC000001FFC001F8000001FFC003F0000001FFC007E0000001FFC00FC0000001FFC01F00 000001FFC07E00000001FFC0FC00000001FFC1FC00000001FFC3FE00000001FFC7FF0000 0001FFDFFF80000001FFFFFF80000001FFFFFFC0000001FFFDFFE0000001FFF9FFF00000 01FFE0FFF0000001FFC07FF8000001FF803FFC000001FF803FFC000001FF801FFE000001 FF800FFF000001FF8007FF800001FF8007FF800001FF8003FFC00001FF8001FFE00001FF 8001FFF00001FF8000FFF00001FF80007FF80001FF80003FFC0001FF80003FFE0001FF80 001FFE0001FF80001FFF80FFFFFF01FFFFFCFFFFFF01FFFFFCFFFFFF01FFFFFCFFFFFF01 FFFFFC36487CC73D>107 D<007FC01FFC0000FFFFC0FFFF8000FFFFC3FFFFF000FFFFCF E03FFC00FFFFDF0007FE0003FFFC0003FF0001FFF80001FF8001FFF00000FFC001FFE000 007FE001FFC000007FF001FFC000003FF801FFC000003FF801FFC000001FFC01FFC00000 1FFC01FFC000001FFE01FFC000001FFE01FFC000000FFE01FFC000000FFE01FFC000000F FF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF 01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFE01 FFC000001FFE01FFC000001FFE01FFC000001FFC01FFC000001FFC01FFC000003FFC01FF C000003FF801FFC000003FF001FFC000007FF001FFE00000FFE001FFF00000FFC001FFF8 0001FF8001FFFC0003FF0001FFDF000FFE0001FFCFC03FF80001FFC3FFFFE00001FFC0FF FF800001FFC01FF8000001FFC00000000001FFC00000000001FFC00000000001FFC00000 000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000 0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 01FFC00000000001FFC000000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FF FFFF8000000038427CAD41>112 D<007FC00000FF80FFFFC001FFFF80FFFFC001FFFF80 FFFFC001FFFF80FFFFC001FFFF8003FFC00007FF8001FFC00003FF8001FFC00003FF8001 FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC0 0003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC000 03FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003 FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF 8001FFC00007FF8001FFC00007FF8001FFC00007FF8000FFC0000FFF8000FFC0001FFF80 00FFC0001FFF80007FE0003BFF80003FE000F3FFC0001FF803E3FFFF000FFFFF83FFFF00 03FFFF03FFFF00003FF803FFFF382E7BAD41>117 D E /Fw 17 118 df<1E003F007F80FFC0FFC0FFC0FFC07F803F001E000A0A7A8916>46 D<000FF80000007FFF000001FC1FC00003F007E00007E003F0000FE003F8001FC001FC00 1FC001FC003FC001FE003F8000FE003F8000FE007F8000FF007F8000FF007F8000FF007F 8000FF00FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF80 00FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000 FF80FF8000FF80FF8000FF807F8000FF007F8000FF007F8000FF007F8000FF007F8000FF 003F8000FE003FC001FE001FC001FC001FC001FC000FE003F80007E003F00003F007E000 01FC1FC000007FFF0000000FF80000212E7DAD28>48 D<0001C0000003C000000FC00000 7FC0001FFFC000FFFFC000FFBFC000E03FC000003FC000003FC000003FC000003FC00000 3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 3FC000003FC000003FC000003FC0007FFFFFE07FFFFFE07FFFFFE01B2E7AAD28>I<0000 007800000000000078000000000000FC000000000000FC000000000000FC000000000001 FE000000000001FE000000000003FF000000000003FF000000000007FF800000000007FF 800000000007FF80000000000FFFC0000000000E7FC0000000001E7FE0000000001C3FE0 000000001C3FE000000000383FF000000000381FF000000000781FF800000000700FF800 000000700FF800000000E00FFC00000000E007FC00000001E007FE00000001C003FE0000 0001C003FE000000038003FF000000038001FF000000078001FF800000070000FF800000 070000FF8000000FFFFFFFC000000FFFFFFFC000001FFFFFFFE000001C00003FE000003C 00003FF000003800001FF000003800001FF000007000001FF800007000000FF80000F000 000FFC0000E0000007FC0000E0000007FC0001C0000007FE0003E0000003FE00FFFF8001 FFFFFCFFFF8001FFFFFCFFFF8001FFFFFC36317DB03D>65 D77 D85 DI< 00FFF0000003FFFE00000F803F80000FC00FE0001FE007F0001FE007F0001FE003F8000F C003FC00078003FC00000003FC00000003FC00000003FC00000003FC000000FFFC00001F FFFC0000FFE3FC0003FC03FC000FF003FC001FC003FC003FC003FC007F8003FC007F8003 FC00FF0003FC00FF0003FC00FF0003FC00FF0007FC00FF0007FC007F800DFC003FC019FE 001FE070FFF007FFE07FF000FF803FF024207E9F27>97 D<000FFC00007FFF8001FC0FC0 03F003E007E001F00FE001F81FC000FC3FC000FE3FC000FE7F80007E7F80007F7F80007F FF80007FFF80007FFFFFFFFFFFFFFFFFFF800000FF800000FF800000FF8000007F800000 7F8000007F8000003FC000071FC000071FC0000E0FE0000E07F0001C03F8007800FE03E0 003FFFC00007FE0020207E9F25>101 D<0001FE00000FFF80001FC3C0007F07E000FE0F F001FE0FF001FC0FF003FC0FF003FC07E003FC018003FC000003FC000003FC000003FC00 0003FC000003FC000003FC000003FC0000FFFFFC00FFFFFC00FFFFFC0003FC000003FC00 0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00 0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00 0003FC000003FC000003FC000003FC000003FC000003FC00007FFFF0007FFFF0007FFFF0 001C327EB119>I<03C00007E0000FF0001FF8001FF8001FF8001FF8000FF00007E00003 C00000000000000000000000000000000000000000000000000000000001F800FFF800FF F800FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 F80007F80007F800FFFF80FFFF80FFFF8011337DB217>105 D<01F800FFF800FFF800FF F8000FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 F80007F80007F80007F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB1 17>108 D<03F007F800FFF03FFE00FFF0783F00FFF0C03F800FF1801FC007F3001FC007 F6001FE007FC001FE007FC001FE007FC001FE007F8001FE007F8001FE007F8001FE007F8 001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800 1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F E007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28207D9F2D>110 D<0007FC0000007FFFC00001FC07F00003F001F80007E000FC000FC0007E001FC0007F00 3FC0007F803F80003F807F80003FC07F80003FC07F80003FC0FF80003FE0FF80003FE0FF 80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE07F80003FC07F80 003FC07F80003FC03FC0007F803FC0007F801FC0007F000FE000FE0007E000FC0003F803 F80001FE0FF000007FFFC0000007FC000023207E9F28>I<03F03F00FFF07FC0FFF1C3E0 FFF187E00FF30FF007F60FF007F60FF007FC07E007FC03C007FC000007FC000007F80000 07F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000 07F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000FFFFE000 FFFFE000FFFFE0001C207E9F21>114 D<01FF860007FFFE001F00FE003C003E0078001E 0078000E00F8000E00F8000E00F8000E00FC000000FF800000FFFC00007FFFC0007FFFF0 003FFFF8001FFFFC0007FFFE0001FFFF00003FFF000000FF8000003F8060001F80E0000F 80E0000F80F0000F80F0000F00F8000F00FC001E00FE001C00FF807800F3FFF000C07F80 0019207D9F20>I<01F80007E0FFF803FFE0FFF803FFE0FFF803FFE00FF8003FE007F800 1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0 07F8001FE007F8001FE007F8001FE007F8001FE007F8003FE007F8003FE003F8007FE003 F8007FE001FC00DFF000FE039FFF007FFF1FFF000FFC1FFF28207D9F2D>117 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%PaperSize: A4 %%EndSetup %%Page: 1 1 1 0 bop 622 871 a Fw(A)27 b(User)g(Man)n(ual)e(for)681 994 y Fv(Cubpac)m(k)p Fu(++)760 1163 y Fw(V)-7 b(ersion)26 b(1.0)785 1266 y Ft({)15 b(Ma)o(y)f(23,)h(1996)f({)192 1683 y Fs(Ronald)19 b(Co)r(ols)293 b(Dirk)19 b(Laurie)1421 1678 y(Luc)g(Pluym)490 2738 y Fr(Dept.)k(of)18 b(Computer)f(Science,)h (K.U.Leuv)o(en)p eop %%Page: 2 2 2 1 bop 37 199 a Ft(R)o(ONALD)17 b(COOLS)37 256 y(Dept.)e(of)g (Computer)g(Science,)h(Katholiek)o(e)h(Univ)o(ersiteit)f(Leuv)o(en)37 312 y(Celestijnenlaan)i(200A,)c(B-3001)g(Hev)o(erlee,)i(Belgium)37 369 y(e-mail:)22 b(ronald.co)q(ols@cs.kuleuv)o(en.ac.b)q(e)37 449 y(DIRK)17 b(LA)o(URIE)37 505 y(Dept.)e(of)g(Mathematics,)f(P)o(otc) o(hefstro)q(omse)g(Univ)o(ersiteit)i(vir)g(Christelik)o(e)h(Ho)o(\177) -21 b(er)14 b(Onderrig)37 562 y(P)l(.O.)h(Bo)o(x)g(1174,)f(V)l (anderbijlpark)j(1900,)c(South)j(Africa)37 618 y(e-mail:)22 b(dirk@calvyn.puk.ac.za)37 698 y(LUC)16 b(PLUYM)37 755 y(Dept.)f(of)g(Computer)g(Science,)h(Katholiek)o(e)h(Univ)o(ersiteit)f (Leuv)o(en)37 811 y(Celestijnenlaan)i(200A,)c(B-3001)g(Hev)o(erlee,)i (Belgium)37 868 y(\(Curren)o(t)f(address:)20 b(LMS)15 b(In)o(ternational,)h(In)o(terleuv)o(enlaan)h(68,)d(B-3001)g(Hev)o (erlee,)i(Belgium\))37 1868 y(Cop)o(yrigh)o(t)264 1867 y(c)251 1868 y Fq(\015)p Ft(1994,)e(1996)37 1983 y(Registered)24 b(system)e(holders)h(ma)o(y)f(repro)q(duce)h(all)g(or)f(an)o(y)g(part)g (of)g(this)h(publication)h(for)e(in)o(ternal)37 2040 y(purp)q(oses,)15 b(pro)o(vided)f(that)f(the)h(source)g(of)f(the)h (material)g(is)g(clearly)h(ac)o(kno)o(wledged,)f(and)g(the)g(title)g (page)37 2096 y(and)i(cop)o(yrigh)o(t)f(notice)h(are)e(retained.)37 2211 y(Note)19 b(that)e(the)i(Belgian)g(Soft)o(w)o(are-la)o(w)e(of)h (June)i(20,)e(1994,)g(whic)o(h)h(implemen)o(ts)h(the)e(corresp)q (onding)37 2268 y(Europ)q(ean)e(regulation)g(of)f(Ma)o(y)f(14,)g(1991,) g(is)i(applicable.)p eop %%Page: 3 3 3 2 bop 37 1384 a Fp(Con)n(ten)n(ts)37 1486 y Fr(1)43 b(In)o(tro)q(duction)1456 b(1)37 1588 y(2)43 b(An)17 b(example)1469 b(1)37 1690 y(3)43 b(Basic)18 b(classes)1456 b(2)37 1792 y(4)43 b(Describing)18 b(simple)f(regions)1158 b(3)37 1894 y(5)43 b(The)17 b(in)o(tegrators)1389 b(7)106 1950 y Ft(5.1)45 b(No-fuss)15 b(in)o(tegration)27 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)93 b(7)106 2007 y(5.2)45 b(Adv)m(anced)17 b(in)o(tegration)d(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)93 b(7)37 2108 y Fr(6)43 b(Handling)19 b(collections)g(of)f(regions)1042 b(8)37 2210 y(7)43 b(A)17 b(p)q(ossible)h(pitfall)1331 b(10)37 2312 y(8)43 b(Tigh)o(tening)19 b(the)e(tolerance)1155 b(11)37 2414 y(9)43 b(Measuring)17 b(the)h(p)q(erformance)1084 b(12)37 2516 y(10)17 b(Examples)1498 b(12)106 2573 y Ft(10.1)22 b(A)15 b(plane)i(sector)46 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(12)106 2629 y(10.2)22 b(When)16 b(geometry)e(should)i(not)f(rule)21 b(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)71 b(14)106 2685 y(10.3)22 b(When)16 b(a)f(circle)h(should)h(b)q(e)f(a)e(cut)i(circle)44 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)71 b(18)37 2787 y Fr(11)17 b(Installation)j (guide)1318 b(19)p eop %%Page: 1 4 1 3 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1182 b Ft(1)37 199 y Fp(1)67 b(In)n(tro)r(duction)37 301 y Fr(Cubpac)o(k)p Fn(++)15 b Ft(is)g(a)f(large)h(C)p Fn(++)f Ft(class)h(library)h(dealing)g(with)f(automatic)f(in)o(tegration)h(of)f (functions)i(o)o(v)o(er)37 357 y(t)o(w)o(o-dimensional)i(regions.)24 b(Here)17 b(w)o(e)f(will)i(discuss)g(its)e(user)h(in)o(terface,)g(a)f (small)h(collection)h(of)e(classes)37 414 y(that)c(mak)o(e)g(up)h(a)f (kind)h(of)f(language)g(for)g(describing)i(in)o(tegration)e(problems.) 20 b(This)13 b(User)f(Man)o(ual)g(is)h(one)37 470 y(of)k(t)o(w)o(o)f (complemen)o(tary)h(do)q(cumen)o(ts)g(in)g(whic)o(h)h(the)f(pac)o(k)m (age)g(is)g(describ)q(ed:)26 b(the)17 b(other)f(is)i(the)e(pap)q(er)37 527 y([2])i(whic)o(h)i(con)o(tains)f(the)g(mathematical)g(bac)o (kground)g(and)g(algorithmic)h(details.)32 b(F)l(ull)20 b(information)37 583 y(also)c(app)q(ears)f(in)h(the)f(include)j (\014les)e(of)f(the)g(source)g(co)q(de,)h(whic)o(h)g(are)f(elab)q (orately)h(commen)o(ted.)108 639 y(There)c(will)h(probably)f(nev)o(er)g (b)q(e)g(a)f(\014nal)h(v)o(ersion)g(of)f(this)h(User)f(Man)o(ual.)19 b(It)11 b(should)i(pro)o(vide)f(answ)o(ers)37 696 y(to)h(all)g(F)l (requen)o(tly)h(Ask)o(ed)f(Questions,)h(so)e(if)h(y)o(ou)g(encoun)o (ter)g(an)o(y)f(problems)i(when)f(using)h(our)e(soft)o(w)o(are,)37 752 y(please)17 b(let)e(us)h(kno)o(w.)108 809 y(Our)11 b(in)o(ten)o(tion)g(is)g(not)f(to)f(presen)o(t)i(a)f(\014nal)h (solution)g(to)f(the)g(problem)h(of)f(automatic)g(t)o(w)o (o-dimensional)37 865 y(cubature,)23 b(but)e(to)g(pro)o(vide)g(a)g (framew)o(ork)f(on)h(whic)o(h)h(others)e(ma)o(y)h(build.)39 b(W)l(e)21 b(will)i(w)o(elcome)e(an)o(y)37 922 y(attempt)15 b(to)f(extend)i(the)f(pac)o(k)m(age)h(b)o(y)f(adding)h(y)o(our)e(o)o (wn)h(classes)h(or)e(functions.)108 978 y(Y)l(ou)19 b(are)f(assumed)h (to)f(b)q(e)h(familiar)h(with)f(the)f(basics)i(of)e(the)g(language)h(C) p Fn(++)p Ft(,)g(but)g(not)f(to)g(b)q(e)h(an)37 1035 y(exp)q(ert)e(on)e(it.)22 b(In)17 b(fact,)e(most)g(of)g(the)h(time)g(y) o(ou)f(w)o(on't)g(need)i(an)o(y)e(C)p Fn(++)g Ft(feature)h(more)f(adv)m (anced)i(than)37 1091 y(kno)o(wing)f(ho)o(w)e(to)h(prin)o(t)h(out)e(y)o (our)h(results.)108 1148 y(Let's)g(start)f(with)i(an)f(example.)37 1291 y Fp(2)67 b(An)23 b(example)37 1392 y Ft(Supp)q(ose)c(w)o(e)e(w)o (ould)h(lik)o(e)h(to)d(in)o(tegrate)i Fm(x)785 1376 y Fl(2)822 1392 y Ft(o)o(v)o(er)e(the)i(triangle)g(with)g(v)o(ertices)f (\(0,0\),)f(\(1,1\))g(and)i(\(2,0\).)37 1449 y(Using)e Fr(Cubpac)o(k)p Fn(++)f Ft(w)o(e)g(pro)q(ceed)h(as)f(follo)o(ws)g (\(see)g(\014le)h Fn(Examples/vb1.c)p Ft(\):)37 1542 y Fn(#include)23 b()37 1599 y(#include)g()37 1712 y(real)h(f\(const)f(Point&)g(p\))85 1768 y({)h(real)f(x=p.X\(\);) 133 1825 y(return)g(x*x;)85 1881 y(})37 1994 y(main\(\))85 2051 y({)h(Point)f(p1\(0,0\),)g(p2\(1,1\),)g(p3\(2,0\);)133 2107 y(TRIANGLE)g(T\(p1,p2,p3\);)133 2164 y(cout)g(<<)h("The)f (integral)g(is)h(")f(<<)h(Integrate\(f,T\))e(<<)h(endl;)85 2220 y(})37 2314 y Ft(As)18 b(y)o(ou)g(see,)g(it)g(is)g(quite)h(easy)e (to)g(describ)q(e)j(regions)e(and)f(to)h(in)o(tegrate)f(o)o(v)o(er)g (them.)27 b(W)l(e)18 b(no)o(w)f(giv)o(e)h(a)37 2370 y(more)d (systematic)g(discussion)i(of)e Fr(Cubpac)o(k)p Fn(++)p Ft('s)f(class)i(library)l(.)p eop %%Page: 2 5 2 4 bop 37 50 a Ft(2)1136 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h(and)f (L.)g(Pluym)37 199 y Fp(3)67 b(Basic)22 b(classes)37 301 y Ft(The)16 b(follo)o(wing)g(simple)h(classes)e(are)g(built)i(in)o (to)e Fr(Cubpac)o(k)p Fn(++)p Ft(.)60 407 y Fn(real)g Ft(All)i(our)f(\015oating)f(p)q(oin)o(t)i(n)o(um)o(b)q(ers)e(are)h (instances)g(of)g(this)g(t)o(yp)q(e.)21 b(W)l(e)16 b(do)g(this)g (instead)g(of)f(using)151 463 y(a)k(prede\014ned)h(\015oating)f(p)q (oin)o(t)h(t)o(yp)q(e)f(lik)o(e)h Fn(float)e Ft(or)h Fn(double)f Ft(in)i(order)f(to)f(mak)o(e)h(it)g(as)g(easy)f(as)151 520 y(p)q(ossible)g(for)d(y)o(ou)h(to)f(c)o(hange)h(the)g(precision:)23 b(b)o(y)16 b(default)h Fn(real)e Ft(is)i(a)e(t)o(yp)q(edef)i(to)e(a)h (double,)h(but)151 576 y(y)o(ou)c(can)g(sp)q(ecify)h(single)g (precision)h(\(i.e.)d Fn(float)p Ft(\))g(simply)i(b)o(y)f(making)g (sure)g(that)f(the)h(precompiler)151 633 y(v)m(ariable)i(FLO)o(A)l(T)f (is)g(de\014ned)g(during)h(compilation.)20 b(In)14 b(the)g(un)o(usual)g (case)g(when)g(y)o(our)f(compiler)151 689 y(supp)q(orts)i(another)g (\015oating)g(p)q(oin)o(t)h(format,)d(y)o(ou)i(ma)o(y)g(as)g(a)g(last)g (resort)f(edit)i(the)f(\014le)h Fn(real.h)p Ft(.)60 783 y Fn(Point)h Ft(Tw)o(o-dimensional)h(p)q(oin)o(ts)g(are)f(though)o(t)f (of)h(as)g(en)o(tities)h(in)g Fr(Cubpac)o(k)p Fn(++)f Ft(except)g(when)h(it)f(is)151 840 y(essen)o(tial)i(to)d(extract)h(the) h(co)q(ordinates,)g(whic)o(h)g(y)o(ou)f(do)h(as)f(in)h(the)g(example:) 25 b(the)18 b(co)q(ordinates)151 896 y(of)d(the)g(p)q(oin)o(t)g Fn(P)g Ft(are)f Fn(P.X\(\))h Ft(and)g Fn(P.Y\(\))p Ft(.)k(Addition)d (and)f(similar)h(op)q(erations)f(on)g Fn(Point)p Ft(s)f(are)h(all)151 952 y(de\014ned.)60 1046 y Fn(Function)h Ft(Y)l(ou)h(will)i(normally)e (wish)h(to)e(in)o(tegrate)h(a)f Fn(real)h Ft(functions)g(of)g(a)g Fn(Point)p Ft(.)24 b(T)l(o)17 b(sa)o(v)o(e)f(us)h(all)151 1103 y(the)g(trouble)g(of)f(writing)h Fn(real)23 b(\(*\))h(\(const)f (Point&\))15 b Ft(ev)o(ery)i(time)g(w)o(e)f(need)h(to)f(refer)h(to)f (suc)o(h)151 1159 y(a)e(function,)h(the)f(class)g Fn(Function)f Ft(has)h(b)q(een)h(de\014ned.)21 b(A)14 b(function)h Fn(real)23 b(f\(const)g(Point&)g(p\))151 1216 y Ft(as)15 b(used)h(in)g(the)f(example)h(is)g(a)f(v)m(alid)i(argumen)o(t)d(to)g (an)o(y)h(routine)h(that)f(requires)g(a)g Fn(Function)p Ft(.)60 1309 y Fn(Boolean)j Ft(During)i(man)o(y)f(y)o(ears,)g(C)p Fn(++)g Ft(users)g(had)g(to)g(de\014ne)h(their)g(o)o(wn)f(Bo)q(olean)h (t)o(yp)q(e,)f(and)h(there)151 1366 y(w)o(as)h(some)f(con)o(tro)o(v)o (ersy)g(as)h(to)g(the)g(b)q(est)g(w)o(a)o(y)f(of)h(de\014ning)i(them.) 38 b(W)l(e)21 b(ha)o(v)o(e)g(opted)g(for)g(the)151 1422 y(simplest)h(solution:)33 b(our)21 b Fn(Boolean)f Ft(is)h(an)g Fn(enum)j({False,True})p Ft(.)36 b(Recen)o(tly)22 b(the)f(ANSI/ISO)151 1479 y(C)p Fn(++)14 b Ft(standards)f(committee)h(added)g(a)g(new)g (feature)g(to)f(the)h(language:)19 b(a)14 b(built-in)i(b)q(o)q(olean)f (t)o(yp)q(e)151 1535 y(`)p Fn(bool)p Ft(',)d(with)h(constan)o(ts)f(`)p Fn(true)p Ft(')g(and)h(`)p Fn(false)p Ft(')e(\(this)i(will)i(break)e (co)q(de)g(that)f(uses)i(these)f(k)o(eyw)o(ords)151 1592 y(as)19 b(v)m(ariable)i(names\).)31 b(This)20 b(new)g(feature)f(w)o(as) f(implemen)o(ted)j(in)f(v)o(ersion)g(2.6.0)d(of)i(gcc/g++.)151 1648 y(Ho)o(w)o(ev)o(er,)e(b)q(ecause)h(it)g(will)h(tak)o(e)d(some)h (time)h(b)q(efore)g(all)g(a)o(v)m(ailable)h(compilers)g(implemen)o(t)g (this)151 1705 y(new)d(feature,)e(w)o(e)h(con)o(tin)o(ue)h(to)e(use)i (our)f(o)o(wn)g(class.)p eop %%Page: 3 6 3 5 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1182 b Ft(3)37 199 y Fp(4)67 b(Describing)24 b(simple)f(regions)37 301 y Ft(A)16 b Fk(simple)h(r)n(e)n(gion)d Ft(is)j(roughly)f(de\014ned) h(as)e(a)h(region)g(that)f(can)h(b)q(e)g(sp)q(eci\014ed)i(using)e(a)g (small)g(n)o(um)o(b)q(er)g(of)37 357 y(parameters,)c(and)h(more)f (precisely)i(as)f(a)f(region)h(that)e(b)q(elongs)j(to)e(the)g(list)i(b) q(elo)o(w.)19 b(Lik)o(e)14 b Fn(Point)p Ft(s,)d(simple)37 414 y(regions)17 b(can)f(b)q(e)g(created)g(using)h(constructors.)k(W)l (e)16 b(ha)o(v)o(e)f(tried)i(as)e(far)h(as)f(p)q(ossible)j(to)d(use)h Fn(Point)p Ft(s)f(as)37 470 y(the)i(argumen)o(ts)e(to)g(the)h (constructors;)g(in)g(some)g(cases)g(in)o(v)o(olving)h(regions)g(b)q (ounded)g(b)o(y)f(circular)h(arcs)37 527 y(alternativ)o(es)h(in)h (terms)e(of)g(radii)i(and)e(angles)i(ha)o(v)o(e)e(also)g(b)q(een)i (supplied.)30 b(A)17 b(region)h(ma)o(y)f(ha)o(v)o(e)g(more)37 583 y(than)d(one)h(constructor:)j(C)p Fn(++)c Ft(can)g(recognise)g(b)o (y)g(the)g(t)o(yp)q(es)g(of)g(the)g(actual)g(argumen)o(ts)f(whic)o(h)i (one)f(y)o(ou)37 639 y(mean.)108 696 y(In)g(the)f(constructor)g (headers)g(b)q(elo)o(w,)h Fn(A,)f(B,)g(C,)g(D,)g(Center,)f (BoundaryPoint)g Ft(and)h Fn(P)g Ft(are)g Fn(Point)p Ft(s.)37 752 y(When)k(a)e(constructor)h(requires)g(more)g(than)g(one)g Fn(Point)p Ft(,)f(the)h Fn(Point)p Ft(s)f(should)i(b)q(e)g(distinct,)g (except)f(in)37 809 y(the)j(sp)q(ecial)g(cases)f(sp)q(eci\014ed)i(b)q (elo)o(w.)29 b Fn(Radius,)18 b(InnerRadius,)f(OuterRadius,)g(ScaleX,)g (ScaleY,)37 865 y(Alpha)h Ft(and)h Fn(Beta)f Ft(are)h Fn(real)p Ft(s.)29 b Fn(Height)18 b Ft(is)h(a)g Fn(Function)p Ft(,)f(and)h Fn(Rho)f Ft(is)h(a)f(standard)h(C)f(function)i(that)37 922 y(tak)o(es)15 b(one)g Fn(real)g Ft(argumen)o(t)f(and)i(returns)f(a) g Fn(real)f Ft(result.)108 978 y(Here)i(is)f(a)g(list)h(of)f(the)g (constructors)f(for)h(simple)i(regions)e(in)h Fr(Cubpac)o(k)p Fn(++)p Ft(.)37 1067 y Fn(TRIANGLE\()23 b(A,)h(B,)f(C\);)37 1124 y(PARALLELOGRAM\()f(A,)i(B,)g(C\);)37 1180 y(RECTANGLE\()f(A,)h (B,)f(C\);)37 1237 y(CIRCLE\()g(Center,)g(BoundaryPoint\);)37 1293 y(CIRCLE\()g(Center,)g(Radius\);)37 1350 y(OUT_CIRCLE\()g(Center,) g(BoundaryPoint\);)37 1406 y(OUT_CIRCLE\()g(Center,)g(Radius\);)37 1463 y(PLANE\(\);)37 1519 y(PLANE\()h(Center\);)37 1575 y(PLANE\()g(Center,)e(ScaleX,)h(ScaleY\);)37 1632 y (GENERALIZED_RECTANGLE\()e(Height,)i(A,)h(B\);)37 1688 y(POLAR_RECTANGLE)e(\()i(Center,)f(InnerRadius,)f(OuterRadius,)g (Alpha,)h(Beta)h(\);)37 1745 y(POLAR_RECTANGLE\()e(A,)i(B,)f(D\);)37 1801 y(GENERALIZED_SECTOR\()f(Rho,)h(Alpha,)g(Beta,)g(Center\);)37 1858 y(PARABOLIC_SEGMENT\()f(A,)h(B,)h(P\);)37 1914 y(INFINITE_STRIP\() e(A,)i(B\);)37 1971 y(SEMI_INFINITE_STRIP\()e(A,)h(B\);)37 2027 y(PLANE_SECTOR\()g(Center,)f(InnerRadius,)h(Alpha,)g(Beta\);)37 2084 y(PLANE_SECTOR\()g(A,)g(B,)h(D\);)108 2173 y Ft(Here)18 b(are)f(more)g(detailed)i(descriptions)g(of)e(the)g(simple)i(regions.) 27 b(They)17 b(are)g(sho)o(wn)g(in)i(Figures)e(1)37 2229 y(and)g(2.)23 b(In)17 b(Figure)f(1)g(the)h(region)f(is)h(the)g(in)o (ternal)g(of)f(the)g(solid)h(line.)25 b(In)17 b(Figure)g(2)f(the)g (region)h(is)g(that)37 2286 y(part)g(of)g(the)g(plane)h(mark)o(ed)f (with)g(X)h(and)f(b)q(ounded)h(b)o(y)f(the)h(solid)g(lines)h(where)e (lines)i(with)e(an)g(arro)o(w)37 2342 y(ha)o(v)o(e)e(to)g(b)q(e)h (extended)g(to)e(in\014nit)o(y)l(.)60 2443 y Fn(TRIANGLE)29 b Fj(A)q Ft(,)15 b Fj(B)g Ft(and)g Fj(C)h Ft(are)e(the)i(v)o(ertices.) 60 2535 y Fn(PARALLELOGRAM)34 b Fj(A)p Ft(,)19 b Fj(B)f Ft(and)g Fj(C)g Ft(are)f(v)o(ertices)h(suc)o(h)h(that)e Fj(BC)h Ft(is)g(a)g(diagonal)g(of)g(the)g(parallelogram.)151 2591 y Fn(RECTANGLE)f Ft(is)h(a)f(sp)q(ecial)j(case:)k(if)19 b(a)e(region)h(is)g(sp)q(eci\014ed)i(as)d(a)h Fn(RECTANGLE)p Ft(,)e(the)h(soft)o(w)o(are)f(will)151 2648 y(c)o(hec)o(k)g(that)e (angle)i Fj(BAC)g Ft(is)f(a)g(righ)o(t)g(angle.)60 2740 y Fn(CIRCLE)22 b Ft(The)11 b Fn(Center)g Ft(is)g(sp)q(eci\014ed,)j(and) e(either)f(a)g Fn(BoundaryPoint)f Ft(or)h(the)g Fn(Radius)p Ft(.)17 b(The)12 b(in)o(tegration)151 2796 y(region)k(is)f(the)h (enclosed)g(disk.)p eop %%Page: 4 7 4 6 bop 37 50 a Ft(4)1136 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h(and)f (L.)g(Pluym)1486 2043 y Fi(.)1486 2032 y(.)1485 2021 y(.)1483 2010 y(.)1480 1999 y(.)1476 1988 y(.)1471 1978 y(.)1466 1968 y(.)1460 1958 y(.)1454 1949 y(.)1446 1941 y(.)1561 2043 y(.)1561 2032 y(.)1560 2021 y(.)1559 2009 y(.)1557 1998 y(.)1554 1987 y(.)1430 2043 y(.)1430 2032 y(.)1428 2021 y(.)1424 2010 y(.)1420 2000 y(.)1414 1990 y(.)1336 2043 y(.)-6 b(.)1340 2042 y(.)f(.)1343 2041 y(.)g(.)h(.)1348 2040 y(.)f(.)1351 2039 y(.)h(.)f(.)1356 2038 y(.)g(.)1359 2037 y(.)h(.)1362 2036 y(.)g(.)f(.)1367 2035 y(.)h(.)1370 2034 y(.)g(.)1373 2033 y(.)g(.)g(.)1378 2032 y(.)g(.)1381 2031 y(.)g(.)g(.)1386 2030 y(.)g(.)1390 2029 y(.)f(.)1393 2028 y(.)g(.)h(.)1398 2027 y(.)f(.)1401 2026 y(.)g(.)h(.)1406 2025 y(.)f(.)1409 2024 y(.)g(.)1412 2023 y(.)h(.)f(.)1417 2022 y(.)g(.)1420 2021 y(.)h(.)1423 2020 y(.)g(.)g(.)1428 2019 y(.)g(.)1431 2018 y(.)g(.)g(.)1436 2017 y(.)g(.)1439 2016 y(.)g(.)1443 2015 y(.)f(.)h(.)1447 2014 y(.)g(.)1451 2013 y(.)f(.)h(.)1455 2012 y(.)g(.)1459 2011 y(.)f(.)1462 2010 y(.)h(.)f(.)1467 2009 y(.)g(.)1470 2008 y(.)h(.)1473 2007 y(.)g(.)f(.)1478 2006 y(.)h(.)1481 2005 y(.)g(.)f(.)1486 2004 y(.)h(.)1489 2003 y(.)g(.)1493 2002 y(.)f(.)h(.)1497 2001 y(.)g(.)1501 2000 y(.)f(.)1504 1999 y(.)g(.)h(.)1509 1998 y(.)f(.)1512 1997 y(.)g(.)h(.)1517 1996 y(.)f(.)1520 1995 y(.)g(.)1523 1994 y(.)h(.)f(.)1528 1993 y(.)h(.)1531 1992 y(.)g(.)f(.)1536 1991 y(.)h(.)1539 1990 y(.)g(.)1542 1989 y(.)g(.)g(.)1547 1988 y(.)g(.)1550 1987 y(.)g(.)1554 1986 y(.)f(.)h(.)1558 1985 y(.)g(.)1562 1984 y(.)f(.)h(.)1567 1983 y(.)f(.)1570 1982 y(.)g(.)1573 1981 y(.)h(.)f(.)1578 1980 y(.)g(.)1581 1979 y(.)h(.)f(.)1586 1978 y(.)g(.)1589 1977 y(.)h(.)1592 1976 y(.)g(.)f(.)1597 1975 y(.)h(.)1600 1974 y(.)g(.)1604 1973 y(.)f(.)h(.)1608 1972 y(.)g(.)1612 1971 y(.)f(.)h(.)1616 1970 y(.)g(.)1620 1969 y(.)f(.)1623 1968 y(.)g(.)h(.)1628 1967 y(.)f(.)1631 1966 y(.)g(.)h(.)1636 1965 y(.)f(.)1639 1964 y(.)h(.)1642 1963 y(.)g(.)f(.)1647 1962 y(.)h(.)1650 1961 y(.)g(.)1653 1960 y(.)g(.)g(.)1658 1959 y(.)g(.)1661 1958 y(.)g(.)g(.)1666 1957 y(.)g(.)1669 1956 y(.)g(.)1673 1955 y(.)f(.)h(.)1678 1954 y(.)f(.)1681 1953 y(.)g(.)h(.)1686 1952 y(.)f(.)1689 1951 y(.)g(.)1692 1950 y(.)h(.)f(.)1697 1949 y(.)g(.)1700 1948 y(.)h(.)1703 1947 y(.)g(.)f(.)1708 1946 y(.)h(.)1711 1945 y(.)g(.)g(.)1716 1944 y(.)g(.)1719 1943 y(.)g(.)1723 1942 y(.)f(.)h(.)1727 1941 y(.)g(.)1731 1940 y(.)f(.)h(.)1735 1939 y(.)g(.)1739 1938 y(.)f(.)1742 1937 y(.)h(.)f(.)1747 1936 y(.)g(.)1750 1935 y(.)h(.)1753 1934 y(.)g(.)f(.)1758 1933 y(.)h(.)1761 1932 y(.)g(.)f(.)1766 1931 y(.)h(.)1336 2043 y(.)1338 2042 y(.)1339 2041 y(.)1340 2040 y(.)1341 2039 y(.)1343 2037 y(.)1344 2036 y(.)1345 2035 y(.)1346 2034 y(.)1347 2033 y(.)1349 2032 y(.)1350 2031 y(.)1351 2029 y(.)1352 2028 y(.)1353 2027 y(.)1355 2026 y(.)1356 2025 y(.)1357 2024 y(.)1358 2023 y(.)1360 2021 y(.)1361 2020 y(.)1362 2019 y(.)1363 2018 y(.)1364 2017 y(.)1366 2016 y(.)1367 2015 y(.)1368 2014 y(.)1369 2012 y(.)1370 2011 y(.)1372 2010 y(.)1373 2009 y(.)1374 2008 y(.)1375 2007 y(.)1377 2006 y(.)1378 2004 y(.)1379 2003 y(.)1380 2002 y(.)1381 2001 y(.)1383 2000 y(.)1384 1999 y(.)1385 1998 y(.)1386 1996 y(.)1387 1995 y(.)1389 1994 y(.)1390 1993 y(.)1391 1992 y(.)1392 1991 y(.)1394 1990 y(.)1395 1988 y(.)1396 1987 y(.)1397 1986 y(.)1398 1985 y(.)1400 1984 y(.)1401 1983 y(.)1402 1982 y(.)1403 1981 y(.)1404 1979 y(.)1406 1978 y(.)1407 1977 y(.)1408 1976 y(.)1409 1975 y(.)1411 1974 y(.)1412 1973 y(.)1413 1971 y(.)1414 1970 y(.)1415 1969 y(.)1417 1968 y(.)1418 1967 y(.)1419 1966 y(.)1420 1965 y(.)1421 1963 y(.)1423 1962 y(.)1424 1961 y(.)1425 1960 y(.)1426 1959 y(.)1428 1958 y(.)1429 1957 y(.)1430 1955 y(.)1431 1954 y(.)1432 1953 y(.)1434 1952 y(.)1435 1951 y(.)1436 1950 y(.)1437 1949 y(.)1438 1947 y(.)1440 1946 y(.)1441 1945 y(.)1442 1944 y(.)1443 1943 y(.)1445 1942 y(.)1446 1941 y(.)1447 1940 y(.)1448 1938 y(.)1449 1937 y(.)1451 1936 y(.)1452 1935 y(.)1453 1934 y(.)1454 1933 y(.)1455 1932 y(.)1457 1930 y(.)1458 1929 y(.)1459 1928 y(.)1460 1927 y(.)1462 1926 y(.)1463 1925 y(.)1464 1924 y(.)1465 1922 y(.)1466 1921 y(.)1468 1920 y(.)1469 1919 y(.)1470 1918 y(.)1471 1917 y(.)1472 1916 y(.)1474 1914 y(.)1475 1913 y(.)1476 1912 y(.)1477 1911 y(.)1479 1910 y(.)1480 1909 y(.)1481 1908 y(.)1482 1907 y(.)1483 1905 y(.)1485 1904 y(.)1486 1903 y(.)1487 1902 y(.)1488 1901 y(.)1489 1900 y(.)1491 1899 y(.)1492 1897 y(.)1493 1896 y(.)1494 1895 y(.)1496 1894 y(.)1497 1893 y(.)1498 1892 y(.)1499 1891 y(.)1500 1889 y(.)1502 1888 y(.)1503 1887 y(.)1504 1886 y(.)1505 1885 y(.)1506 1884 y(.)1508 1883 y(.)1509 1881 y(.)1510 1880 y(.)1511 1879 y(.)1513 1878 y(.)1514 1877 y(.)1515 1876 y(.)1516 1875 y(.)1517 1873 y(.)1519 1872 y(.)1520 1871 y(.)1521 1870 y(.)1522 1869 y(.)1523 1868 y(.)1525 1867 y(.)1526 1866 y(.)1527 1864 y(.)1528 1863 y(.)1530 1862 y(.)1531 1861 y(.)1532 1860 y(.)1533 1859 y(.)1534 1858 y(.)1536 1856 y(.)1537 1855 y(.)1538 1854 y(.)1539 1853 y(.)1540 1852 y(.)1542 1851 y(.)1543 1850 y(.)1544 1848 y(.)1545 1847 y(.)1547 1846 y(.)1548 1845 y(.)1549 1844 y(.)1550 1843 y(.)1551 1842 y(.)1553 1840 y(.)1554 1839 y(.)1555 1838 y(.)1556 1837 y(.)1557 1836 y(.)1559 1835 y(.)1560 1834 y(.)1561 1833 y(.)1562 1831 y(.)1564 1830 y(.)1565 1829 y(.)1566 1828 y(.)1567 1827 y(.)1568 1826 y(.)1570 1825 y(.)1571 1823 y(.)1572 1822 y(.)1573 1821 y(.)1574 1820 y(.)1576 1819 y(.)1577 1818 y(.)1578 1817 y(.)1579 1815 y(.)1581 1814 y(.)1582 1813 y(.)1583 1812 y(.)1584 1811 y(.)1585 1810 y(.)1587 1809 y(.)1588 1807 y(.)1589 1806 y(.)1590 1805 y(.)1591 1804 y(.)1593 1803 y(.)1594 1802 y(.)1595 1801 y(.)1596 1799 y(.)1598 1798 y(.)1599 1797 y(.)1600 1796 y(.)1601 1795 y(.)1602 1794 y(.)1604 1793 y(.)1605 1792 y(.)1606 1790 y(.)1607 1789 y(.)1608 1788 y(.)1610 1787 y(.)1611 1786 y(.)1612 1785 y(.)1613 1784 y(.)1615 1782 y(.)1616 1781 y(.)1617 1780 y(.)1618 1779 y(.)1619 1778 y(.)1621 1777 y(.)1622 1776 y(.)1623 1774 y(.)1624 1773 y(.)1625 1772 y(.)1627 1771 y(.)1628 1770 y(.)1629 1769 y(.)1630 1768 y(.)1632 1766 y(.)1633 1765 y(.)1634 1764 y(.)1635 1763 y(.)1636 1762 y(.)1336 2043 y(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)530 1368 y(.)530 1366 y(.)530 1365 y(.)530 1363 y(.)530 1361 y(.)530 1360 y(.)530 1358 y(.)530 1356 y(.)530 1355 y(.)530 1353 y(.)529 1352 y(.)529 1350 y(.)529 1348 y(.)529 1347 y(.)529 1345 y(.)528 1343 y(.)528 1342 y(.)528 1340 y(.)528 1338 y(.)527 1337 y(.)527 1335 y(.)527 1334 y(.)526 1332 y(.)526 1330 y(.)526 1329 y(.)525 1327 y(.)525 1325 y(.)524 1324 y(.)524 1322 y(.)523 1321 y(.)523 1319 y(.)522 1317 y(.)522 1316 y(.)521 1314 y(.)521 1313 y(.)520 1311 y(.)520 1310 y(.)519 1308 y(.)519 1306 y(.)518 1305 y(.)517 1303 y(.)517 1302 y(.)516 1300 y(.)515 1299 y(.)515 1297 y(.)514 1296 y(.)513 1294 y(.)512 1293 y(.)512 1291 y(.)511 1290 y(.)510 1288 y(.)509 1287 y(.)509 1286 y(.)508 1284 y(.)507 1283 y(.)506 1281 y(.)505 1280 y(.)504 1278 y(.)503 1277 y(.)503 1276 y(.)502 1274 y(.)501 1273 y(.)500 1271 y(.)499 1270 y(.)498 1269 y(.)497 1267 y(.)496 1266 y(.)495 1265 y(.)494 1263 y(.)493 1262 y(.)492 1261 y(.)491 1260 y(.)490 1258 y(.)489 1257 y(.)487 1256 y(.)486 1255 y(.)485 1253 y(.)484 1252 y(.)483 1251 y(.)482 1250 y(.)481 1249 y(.)479 1247 y(.)478 1246 y(.)477 1245 y(.)476 1244 y(.)475 1243 y(.)473 1242 y(.)472 1241 y(.)471 1240 y(.)470 1239 y(.)468 1237 y(.)467 1236 y(.)466 1235 y(.)464 1234 y(.)463 1233 y(.)462 1232 y(.)460 1231 y(.)459 1230 y(.)458 1229 y(.)d(.)455 1228 y(.)454 1227 y(.)452 1226 y(.)451 1225 y(.)449 1224 y(.)448 1223 y(.)446 1222 y(.)h(.)444 1221 y(.)442 1220 y(.)441 1219 y(.)439 1218 y(.)g(.)436 1217 y(.)435 1216 y(.)433 1215 y(.)g(.)430 1214 y(.)429 1213 y(.)f(.)426 1212 y(.)424 1211 y(.)h(.)421 1210 y(.)f(.)418 1209 y(.)g(.)415 1208 y(.)413 1207 y(.)h(.)410 1206 y(.)f(.)h(.)405 1205 y(.)g(.)402 1204 y(.)f(.)h(.)397 1203 y(.)f(.)394 1202 y(.)g(.)h(.)f(.)387 1201 y(.)h(.)f(.)g(.)381 1200 y(.)g(.)g(.)h(.)f(.)h(.)f(.)g(.)368 1199 y(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)354 1200 y(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)341 1201 y(.)f(.)h(.)f(.)334 1202 y(.)h(.)f(.)h(.)328 1203 y(.)f(.)h(.)323 1204 y(.)f(.)320 1205 y(.)g(.)h(.)315 1206 y(.)f(.)312 1207 y(.)g(.)309 1208 y(.)g(.)305 1209 y(.)h(.)302 1210 y(.)301 1211 y(.)f(.)298 1212 y(.)g(.)295 1213 y(.)293 1214 y(.)h(.)290 1215 y(.)289 1216 y(.)287 1217 y(.)g(.)284 1218 y(.)283 1219 y(.)281 1220 y(.)g(.)278 1221 y(.)277 1222 y(.)275 1223 y(.)274 1224 y(.)273 1225 y(.)271 1226 y(.)g(.)268 1227 y(.)267 1228 y(.)266 1229 y(.)264 1230 y(.)263 1231 y(.)262 1232 y(.)260 1233 y(.)259 1234 y(.)258 1235 y(.)256 1236 y(.)255 1237 y(.)254 1238 y(.)252 1239 y(.)251 1240 y(.)250 1241 y(.)249 1242 y(.)248 1244 y(.)246 1245 y(.)245 1246 y(.)244 1247 y(.)243 1248 y(.)241 1249 y(.)240 1251 y(.)239 1252 y(.)238 1253 y(.)237 1254 y(.)236 1255 y(.)235 1257 y(.)234 1258 y(.)233 1259 y(.)231 1260 y(.)230 1262 y(.)229 1263 y(.)228 1264 y(.)227 1266 y(.)226 1267 y(.)225 1268 y(.)224 1270 y(.)223 1271 y(.)222 1272 y(.)222 1274 y(.)221 1275 y(.)220 1276 y(.)219 1278 y(.)218 1279 y(.)217 1281 y(.)216 1282 y(.)215 1284 y(.)215 1285 y(.)214 1286 y(.)213 1288 y(.)212 1289 y(.)211 1291 y(.)211 1292 y(.)210 1294 y(.)209 1295 y(.)208 1297 y(.)208 1298 y(.)207 1300 y(.)206 1301 y(.)206 1303 y(.)205 1304 y(.)205 1306 y(.)204 1308 y(.)203 1309 y(.)203 1311 y(.)202 1312 y(.)202 1314 y(.)201 1315 y(.)201 1317 y(.)200 1318 y(.)200 1320 y(.)199 1322 y(.)199 1323 y(.)198 1325 y(.)198 1327 y(.)197 1328 y(.)197 1330 y(.)197 1331 y(.)196 1333 y(.)196 1335 y(.)196 1336 y(.)195 1338 y(.)195 1339 y(.)195 1341 y(.)195 1343 y(.)194 1344 y(.)194 1346 y(.)194 1348 y(.)194 1349 y(.)194 1351 y(.)193 1353 y(.)193 1354 y(.)193 1356 y(.)193 1358 y(.)193 1359 y(.)193 1361 y(.)193 1363 y(.)193 1364 y(.)193 1366 y(.)193 1368 y(.)193 1369 y(.)193 1371 y(.)193 1373 y(.)193 1374 y(.)193 1376 y(.)193 1378 y(.)193 1379 y(.)193 1381 y(.)193 1383 y(.)193 1384 y(.)194 1386 y(.)194 1387 y(.)194 1389 y(.)194 1391 y(.)194 1392 y(.)195 1394 y(.)195 1396 y(.)195 1397 y(.)195 1399 y(.)196 1401 y(.)196 1402 y(.)196 1404 y(.)197 1405 y(.)197 1407 y(.)198 1409 y(.)198 1410 y(.)198 1412 y(.)199 1414 y(.)199 1415 y(.)200 1417 y(.)200 1418 y(.)201 1420 y(.)201 1421 y(.)202 1423 y(.)202 1425 y(.)203 1426 y(.)204 1428 y(.)204 1429 y(.)205 1431 y(.)205 1432 y(.)206 1434 y(.)207 1435 y(.)207 1437 y(.)208 1438 y(.)209 1440 y(.)209 1441 y(.)210 1443 y(.)211 1444 y(.)212 1446 y(.)212 1447 y(.)213 1449 y(.)214 1450 y(.)215 1452 y(.)216 1453 y(.)216 1455 y(.)217 1456 y(.)218 1457 y(.)219 1459 y(.)220 1460 y(.)221 1462 y(.)222 1463 y(.)223 1464 y(.)224 1466 y(.)225 1467 y(.)226 1468 y(.)227 1470 y(.)228 1471 y(.)229 1472 y(.)230 1474 y(.)231 1475 y(.)232 1476 y(.)233 1477 y(.)234 1479 y(.)235 1480 y(.)236 1481 y(.)237 1482 y(.)238 1484 y(.)240 1485 y(.)241 1486 y(.)242 1487 y(.)243 1488 y(.)244 1490 y(.)245 1491 y(.)247 1492 y(.)248 1493 y(.)249 1494 y(.)250 1495 y(.)252 1496 y(.)253 1497 y(.)254 1498 y(.)255 1499 y(.)257 1501 y(.)258 1502 y(.)259 1503 y(.)261 1504 y(.)262 1505 y(.)263 1506 y(.)j(.)266 1507 y(.)267 1508 y(.)269 1509 y(.)270 1510 y(.)272 1511 y(.)273 1512 y(.)274 1513 y(.)276 1514 y(.)f(.)279 1515 y(.)280 1516 y(.)282 1517 y(.)283 1518 y(.)h(.)286 1519 y(.)288 1520 y(.)289 1521 y(.)g(.)292 1522 y(.)294 1523 y(.)f(.)297 1524 y(.)298 1525 y(.)h(.)301 1526 y(.)g(.)304 1527 y(.)306 1528 y(.)g(.)309 1529 y(.)g(.)312 1530 y(.)g(.)316 1531 y(.)f(.)h(.)320 1532 y(.)g(.)324 1533 y(.)f(.)h(.)328 1534 y(.)g(.)g(.)333 1535 y(.)g(.)g(.)f(.)340 1536 y(.)h(.)f(.)h(.)f(.)h(.)350 1537 y(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)375 1536 y(.)f(.)h(.)g(.)f(.)h(.)385 1535 y(.)f(.)h(.)g(.)391 1534 y(.)g(.)f(.)396 1533 y(.)h(.)f(.)401 1532 y(.)h(.)404 1531 y(.)g(.)f(.)409 1530 y(.)h(.)412 1529 y(.)g(.)415 1528 y(.)g(.)418 1527 y(.)420 1526 y(.)g(.)423 1525 y(.)g(.)426 1524 y(.)428 1523 y(.)f(.)431 1522 y(.)432 1521 y(.)h(.)435 1520 y(.)437 1519 y(.)438 1518 y(.)g(.)441 1517 y(.)443 1516 y(.)444 1515 y(.)445 1514 y(.)g(.)448 1513 y(.)450 1512 y(.)451 1511 y(.)453 1510 y(.)454 1509 y(.)455 1508 y(.)457 1507 y(.)458 1506 y(.)f(.)461 1505 y(.)462 1504 y(.)463 1503 y(.)465 1502 y(.)466 1501 y(.)467 1500 y(.)469 1498 y(.)470 1497 y(.)471 1496 y(.)472 1495 y(.)474 1494 y(.)475 1493 y(.)476 1492 y(.)477 1491 y(.)479 1490 y(.)480 1488 y(.)481 1487 y(.)482 1486 y(.)483 1485 y(.)484 1484 y(.)486 1482 y(.)487 1481 y(.)488 1480 y(.)489 1479 y(.)490 1477 y(.)491 1476 y(.)492 1475 y(.)493 1474 y(.)494 1472 y(.)495 1471 y(.)496 1470 y(.)497 1468 y(.)498 1467 y(.)499 1466 y(.)500 1464 y(.)501 1463 y(.)502 1462 y(.)503 1460 y(.)504 1459 y(.)505 1457 y(.)506 1456 y(.)506 1455 y(.)507 1453 y(.)508 1452 y(.)509 1450 y(.)510 1449 y(.)510 1447 y(.)511 1446 y(.)512 1444 y(.)513 1443 y(.)513 1441 y(.)514 1440 y(.)515 1438 y(.)516 1437 y(.)516 1435 y(.)517 1434 y(.)518 1432 y(.)518 1431 y(.)519 1429 y(.)519 1428 y(.)520 1426 y(.)520 1425 y(.)521 1423 y(.)522 1421 y(.)522 1420 y(.)523 1418 y(.)523 1417 y(.)524 1415 y(.)524 1414 y(.)524 1412 y(.)525 1410 y(.)525 1409 y(.)526 1407 y(.)526 1405 y(.)526 1404 y(.)527 1402 y(.)527 1401 y(.)527 1399 y(.)528 1397 y(.)528 1396 y(.)528 1394 y(.)528 1392 y(.)529 1391 y(.)529 1389 y(.)529 1387 y(.)529 1386 y(.)529 1384 y(.)530 1383 y(.)530 1381 y(.)530 1379 y(.)530 1378 y(.)530 1376 y(.)530 1374 y(.)530 1373 y(.)530 1371 y(.)530 1369 y(.)1130 1368 y(.)1130 1366 y(.)1130 1365 y(.)1130 1363 y(.)1130 1361 y(.)1130 1360 y(.)1130 1358 y(.)1130 1356 y(.)1130 1355 y(.)1130 1353 y(.)1129 1352 y(.)1129 1350 y(.)1129 1348 y(.)1129 1347 y(.)1129 1345 y(.)1128 1343 y(.)1128 1342 y(.)1128 1340 y(.)1128 1338 y(.)1127 1337 y(.)1127 1335 y(.)1127 1334 y(.)1126 1332 y(.)1126 1330 y(.)1126 1329 y(.)1125 1327 y(.)1125 1325 y(.)1124 1324 y(.)1124 1322 y(.)1123 1321 y(.)1123 1319 y(.)1122 1317 y(.)1122 1316 y(.)1121 1314 y(.)1121 1313 y(.)1120 1311 y(.)1120 1310 y(.)1119 1308 y(.)1119 1306 y(.)1118 1305 y(.)1117 1303 y(.)1117 1302 y(.)1116 1300 y(.)1115 1299 y(.)1115 1297 y(.)1114 1296 y(.)1113 1294 y(.)1112 1293 y(.)1112 1291 y(.)1111 1290 y(.)1110 1288 y(.)1109 1287 y(.)1109 1286 y(.)1108 1284 y(.)1107 1283 y(.)1106 1281 y(.)1105 1280 y(.)1104 1278 y(.)1103 1277 y(.)1103 1276 y(.)1102 1274 y(.)1101 1273 y(.)1100 1271 y(.)1099 1270 y(.)1098 1269 y(.)1097 1267 y(.)1096 1266 y(.)1095 1265 y(.)1094 1263 y(.)1093 1262 y(.)1092 1261 y(.)1091 1260 y(.)1090 1258 y(.)1089 1257 y(.)1087 1256 y(.)1086 1255 y(.)1085 1253 y(.)1084 1252 y(.)1083 1251 y(.)1082 1250 y(.)1081 1249 y(.)1079 1247 y(.)1078 1246 y(.)1077 1245 y(.)1076 1244 y(.)1075 1243 y(.)1073 1242 y(.)1072 1241 y(.)1071 1240 y(.)1070 1239 y(.)1068 1237 y(.)1067 1236 y(.)1066 1235 y(.)1064 1234 y(.)1063 1233 y(.)1062 1232 y(.)1060 1231 y(.)1059 1230 y(.)1058 1229 y(.)d(.)1055 1228 y(.)1054 1227 y(.)1052 1226 y(.)1051 1225 y(.)1049 1224 y(.)1048 1223 y(.)1046 1222 y(.)h(.)1044 1221 y(.)1042 1220 y(.)1041 1219 y(.)1039 1218 y(.)g(.)1036 1217 y(.)1035 1216 y(.)1033 1215 y(.)g(.)1030 1214 y(.)1029 1213 y(.)f(.)1026 1212 y(.)1024 1211 y(.)h(.)1021 1210 y(.)f(.)1018 1209 y(.)g(.)1015 1208 y(.)1013 1207 y(.)h(.)1010 1206 y(.)f(.)h(.)1005 1205 y(.)g(.)1002 1204 y(.)f(.)h(.)997 1203 y(.)f(.)994 1202 y(.)g(.)h(.)f(.)987 1201 y(.)h(.)f(.)g(.)981 1200 y(.)g(.)g(.)h(.)f(.)h(.)f(.)g(.)968 1199 y(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)954 1200 y(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)941 1201 y(.)f(.)h(.)f(.)934 1202 y(.)h(.)f(.)h(.)928 1203 y(.)f(.)h(.)923 1204 y(.)f(.)920 1205 y(.)g(.)h(.)915 1206 y(.)f(.)912 1207 y(.)g(.)909 1208 y(.)g(.)905 1209 y(.)h(.)902 1210 y(.)901 1211 y(.)f(.)898 1212 y(.)g(.)895 1213 y(.)893 1214 y(.)h(.)890 1215 y(.)889 1216 y(.)887 1217 y(.)g(.)884 1218 y(.)883 1219 y(.)881 1220 y(.)g(.)878 1221 y(.)877 1222 y(.)875 1223 y(.)874 1224 y(.)873 1225 y(.)871 1226 y(.)g(.)868 1227 y(.)867 1228 y(.)866 1229 y(.)864 1230 y(.)863 1231 y(.)862 1232 y(.)860 1233 y(.)859 1234 y(.)858 1235 y(.)856 1236 y(.)855 1237 y(.)854 1238 y(.)852 1239 y(.)851 1240 y(.)850 1241 y(.)849 1242 y(.)848 1244 y(.)846 1245 y(.)845 1246 y(.)844 1247 y(.)843 1248 y(.)841 1249 y(.)840 1251 y(.)839 1252 y(.)838 1253 y(.)837 1254 y(.)836 1255 y(.)835 1257 y(.)834 1258 y(.)833 1259 y(.)831 1260 y(.)830 1262 y(.)829 1263 y(.)828 1264 y(.)827 1266 y(.)826 1267 y(.)825 1268 y(.)824 1270 y(.)823 1271 y(.)822 1272 y(.)822 1274 y(.)821 1275 y(.)820 1276 y(.)819 1278 y(.)818 1279 y(.)817 1281 y(.)816 1282 y(.)815 1284 y(.)815 1285 y(.)814 1286 y(.)813 1288 y(.)812 1289 y(.)811 1291 y(.)811 1292 y(.)810 1294 y(.)809 1295 y(.)808 1297 y(.)808 1298 y(.)807 1300 y(.)806 1301 y(.)806 1303 y(.)805 1304 y(.)805 1306 y(.)804 1308 y(.)803 1309 y(.)803 1311 y(.)802 1312 y(.)802 1314 y(.)801 1315 y(.)801 1317 y(.)800 1318 y(.)800 1320 y(.)799 1322 y(.)799 1323 y(.)798 1325 y(.)798 1327 y(.)797 1328 y(.)797 1330 y(.)797 1331 y(.)796 1333 y(.)796 1335 y(.)796 1336 y(.)795 1338 y(.)795 1339 y(.)795 1341 y(.)795 1343 y(.)794 1344 y(.)794 1346 y(.)794 1348 y(.)794 1349 y(.)794 1351 y(.)793 1353 y(.)793 1354 y(.)793 1356 y(.)793 1358 y(.)793 1359 y(.)793 1361 y(.)793 1363 y(.)793 1364 y(.)793 1366 y(.)793 1368 y(.)793 1369 y(.)793 1371 y(.)793 1373 y(.)793 1374 y(.)793 1376 y(.)793 1378 y(.)793 1379 y(.)793 1381 y(.)793 1383 y(.)793 1384 y(.)794 1386 y(.)794 1387 y(.)794 1389 y(.)794 1391 y(.)794 1392 y(.)795 1394 y(.)795 1396 y(.)795 1397 y(.)795 1399 y(.)796 1401 y(.)796 1402 y(.)796 1404 y(.)797 1405 y(.)797 1407 y(.)798 1409 y(.)798 1410 y(.)798 1412 y(.)799 1414 y(.)799 1415 y(.)800 1417 y(.)800 1418 y(.)801 1420 y(.)801 1421 y(.)802 1423 y(.)802 1425 y(.)803 1426 y(.)804 1428 y(.)804 1429 y(.)805 1431 y(.)805 1432 y(.)806 1434 y(.)807 1435 y(.)807 1437 y(.)808 1438 y(.)809 1440 y(.)809 1441 y(.)810 1443 y(.)811 1444 y(.)812 1446 y(.)812 1447 y(.)813 1449 y(.)814 1450 y(.)815 1452 y(.)816 1453 y(.)816 1455 y(.)817 1456 y(.)818 1457 y(.)819 1459 y(.)820 1460 y(.)821 1462 y(.)822 1463 y(.)823 1464 y(.)824 1466 y(.)825 1467 y(.)826 1468 y(.)827 1470 y(.)828 1471 y(.)829 1472 y(.)830 1474 y(.)831 1475 y(.)832 1476 y(.)833 1477 y(.)834 1479 y(.)835 1480 y(.)836 1481 y(.)837 1482 y(.)838 1484 y(.)840 1485 y(.)841 1486 y(.)842 1487 y(.)843 1488 y(.)844 1490 y(.)845 1491 y(.)847 1492 y(.)848 1493 y(.)849 1494 y(.)850 1495 y(.)852 1496 y(.)853 1497 y(.)854 1498 y(.)855 1499 y(.)857 1501 y(.)858 1502 y(.)859 1503 y(.)861 1504 y(.)862 1505 y(.)863 1506 y(.)j(.)866 1507 y(.)867 1508 y(.)869 1509 y(.)870 1510 y(.)872 1511 y(.)873 1512 y(.)874 1513 y(.)876 1514 y(.)f(.)879 1515 y(.)880 1516 y(.)882 1517 y(.)883 1518 y(.)h(.)886 1519 y(.)888 1520 y(.)889 1521 y(.)g(.)892 1522 y(.)894 1523 y(.)f(.)897 1524 y(.)898 1525 y(.)h(.)901 1526 y(.)g(.)904 1527 y(.)906 1528 y(.)g(.)909 1529 y(.)g(.)912 1530 y(.)g(.)916 1531 y(.)f(.)h(.)920 1532 y(.)g(.)924 1533 y(.)f(.)h(.)928 1534 y(.)g(.)g(.)933 1535 y(.)g(.)g(.)f(.)940 1536 y(.)h(.)f(.)h(.)f(.)h(.)950 1537 y(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)f(.)h(.)975 1536 y(.)f(.)h(.)g(.)f(.)h(.)985 1535 y(.)f(.)h(.)g(.)991 1534 y(.)g(.)f(.)996 1533 y(.)h(.)f(.)1001 1532 y(.)h(.)1004 1531 y(.)g(.)f(.)1009 1530 y(.)h(.)1012 1529 y(.)g(.)1015 1528 y(.)g(.)1018 1527 y(.)1020 1526 y(.)g(.)1023 1525 y(.)g(.)1026 1524 y(.)1028 1523 y(.)f(.)1031 1522 y(.)1032 1521 y(.)h(.)1035 1520 y(.)1037 1519 y(.)1038 1518 y(.)g(.)1041 1517 y(.)1043 1516 y(.)1044 1515 y(.)1045 1514 y(.)g(.)1048 1513 y(.)1050 1512 y(.)1051 1511 y(.)1053 1510 y(.)1054 1509 y(.)1055 1508 y(.)1057 1507 y(.)1058 1506 y(.)f(.)1061 1505 y(.)1062 1504 y(.)1063 1503 y(.)1065 1502 y(.)1066 1501 y(.)1067 1500 y(.)1069 1498 y(.)1070 1497 y(.)1071 1496 y(.)1072 1495 y(.)1074 1494 y(.)1075 1493 y(.)1076 1492 y(.)1077 1491 y(.)1079 1490 y(.)1080 1488 y(.)1081 1487 y(.)1082 1486 y(.)1083 1485 y(.)1084 1484 y(.)1086 1482 y(.)1087 1481 y(.)1088 1480 y(.)1089 1479 y(.)1090 1477 y(.)1091 1476 y(.)1092 1475 y(.)1093 1474 y(.)1094 1472 y(.)1095 1471 y(.)1096 1470 y(.)1097 1468 y(.)1098 1467 y(.)1099 1466 y(.)1100 1464 y(.)1101 1463 y(.)1102 1462 y(.)1103 1460 y(.)1104 1459 y(.)1105 1457 y(.)1106 1456 y(.)1106 1455 y(.)1107 1453 y(.)1108 1452 y(.)1109 1450 y(.)1110 1449 y(.)1110 1447 y(.)1111 1446 y(.)1112 1444 y(.)1113 1443 y(.)1113 1441 y(.)1114 1440 y(.)1115 1438 y(.)1116 1437 y(.)1116 1435 y(.)1117 1434 y(.)1118 1432 y(.)1118 1431 y(.)1119 1429 y(.)1119 1428 y(.)1120 1426 y(.)1120 1425 y(.)1121 1423 y(.)1122 1421 y(.)1122 1420 y(.)1123 1418 y(.)1123 1417 y(.)1124 1415 y(.)1124 1414 y(.)1124 1412 y(.)1125 1410 y(.)1125 1409 y(.)1126 1407 y(.)1126 1405 y(.)1126 1404 y(.)1127 1402 y(.)1127 1401 y(.)1127 1399 y(.)1128 1397 y(.)1128 1396 y(.)1128 1394 y(.)1128 1392 y(.)1129 1391 y(.)1129 1389 y(.)1129 1387 y(.)1129 1386 y(.)1129 1384 y(.)1130 1383 y(.)1130 1381 y(.)1130 1379 y(.)1130 1378 y(.)1130 1376 y(.)1130 1374 y(.)1130 1373 y(.)1130 1371 y(.)1130 1369 y(.)816 1236 y Fj(B)864 1232 y Fh(r)361 1368 y Fi(.)366 1358 y(.)371 1348 y(.)377 1338 y(.)382 1328 y(.)387 1318 y(.)392 1308 y(.)397 1298 y(.)402 1288 y(.)407 1278 y(.)412 1267 y(.)417 1257 y(.)422 1247 y(.)427 1237 y(.)432 1227 y(.)430 1248 y(.)430 1247 y(.)430 1245 y(.)431 1243 y(.)431 1242 y(.)432 1240 y(.)432 1238 y(.)432 1237 y(.)433 1235 y(.)433 1233 y(.)433 1232 y(.)434 1230 y(.)434 1228 y(.)435 1227 y(.)435 1225 y(.)435 1223 y(.)436 1221 y(.)436 1220 y(.)436 1218 y(.)f(.)435 1219 y(.)434 1221 y(.)433 1222 y(.)432 1223 y(.)431 1225 y(.)430 1226 y(.)429 1227 y(.)428 1229 y(.)426 1230 y(.)425 1231 y(.)424 1232 y(.)423 1234 y(.)422 1235 y(.)421 1236 y(.)420 1238 y(.)419 1239 y(.)417 1240 y(.)416 1242 y(.)p 947 1368 38 3 v 965 1386 3 38 v 1340 1517 3 300 v 1341 1518 375 3 v 1715 1517 3 132 v 1404 1488 a(.)1404 1490 y(.)1405 1491 y(.)1405 1493 y(.)1406 1495 y(.)1406 1496 y(.)1406 1498 y(.)1407 1500 y(.)1407 1501 y(.)1408 1503 y(.)1408 1505 y(.)1409 1506 y(.)1409 1508 y(.)1409 1510 y(.)1410 1511 y(.)1410 1513 y(.)1411 1515 y(.)1411 1516 y(.)1411 1518 y(.)g(.)1412 1516 y(.)1412 1515 y(.)1413 1513 y(.)1413 1511 y(.)1414 1510 y(.)1414 1508 y(.)1414 1506 y(.)1415 1505 y(.)1415 1503 y(.)1416 1501 y(.)1416 1500 y(.)1416 1498 y(.)1417 1496 y(.)1417 1495 y(.)1418 1493 y(.)1418 1491 y(.)1419 1490 y(.)1419 1488 y(.)1411 1518 y(.)1411 1507 y(.)1411 1496 y(.)1411 1484 y(.)1411 1473 y(.)1411 1462 y(.)1411 1451 y(.)1411 1439 y(.)1411 1428 y(.)1411 1417 y(.)1411 1406 y(.)1411 1394 y(.)1411 1383 y(.)1411 1372 y(.)1419 1398 y(.)1419 1396 y(.)1418 1395 y(.)1418 1393 y(.)1417 1391 y(.)1417 1390 y(.)1416 1388 y(.)1416 1386 y(.)1416 1385 y(.)1415 1383 y(.)1415 1381 y(.)1414 1380 y(.)1414 1378 y(.)1414 1376 y(.)1413 1375 y(.)1413 1373 y(.)1412 1371 y(.)1412 1370 y(.)1411 1368 y(.)g(.)1411 1370 y(.)1411 1371 y(.)1410 1373 y(.)1410 1375 y(.)1409 1376 y(.)1409 1378 y(.)1409 1380 y(.)1408 1381 y(.)1408 1383 y(.)1407 1385 y(.)1407 1386 y(.)1406 1388 y(.)1406 1390 y(.)1406 1391 y(.)1405 1393 y(.)1405 1395 y(.)1404 1396 y(.)1404 1398 y(.)1430 1462 y(.)g(.)286 1968 y(.)286 1966 y(.)286 1965 y(.)286 1963 y(.)286 1961 y(.)286 1960 y(.)286 1958 y(.)286 1957 y(.)286 1955 y(.)285 1953 y(.)285 1952 y(.)285 1950 y(.)285 1948 y(.)284 1947 y(.)284 1945 y(.)283 1943 y(.)283 1942 y(.)283 1940 y(.)282 1939 y(.)282 1937 y(.)281 1935 y(.)281 1934 y(.)280 1932 y(.)279 1931 y(.)279 1929 y(.)278 1928 y(.)278 1926 y(.)277 1925 y(.)276 1923 y(.)275 1922 y(.)275 1920 y(.)274 1919 y(.)273 1917 y(.)272 1916 y(.)271 1914 y(.)270 1913 y(.)270 1912 y(.)269 1910 y(.)268 1909 y(.)267 1908 y(.)266 1906 y(.)265 1905 y(.)264 1904 y(.)263 1902 y(.)586 1968 y(.)586 1966 y(.)586 1965 y(.)586 1963 y(.)586 1961 y(.)586 1960 y(.)586 1958 y(.)586 1956 y(.)586 1955 y(.)586 1953 y(.)586 1951 y(.)586 1950 y(.)586 1948 y(.)586 1946 y(.)586 1945 y(.)586 1943 y(.)586 1942 y(.)585 1940 y(.)585 1938 y(.)585 1937 y(.)585 1935 y(.)585 1933 y(.)585 1932 y(.)585 1930 y(.)584 1928 y(.)584 1927 y(.)584 1925 y(.)584 1923 y(.)584 1922 y(.)584 1920 y(.)583 1918 y(.)583 1917 y(.)583 1915 y(.)583 1914 y(.)582 1912 y(.)582 1910 y(.)582 1909 y(.)582 1907 y(.)582 1905 y(.)581 1904 y(.)581 1902 y(.)581 1900 y(.)580 1899 y(.)580 1897 y(.)580 1896 y(.)580 1894 y(.)579 1892 y(.)579 1891 y(.)579 1889 y(.)578 1887 y(.)578 1886 y(.)578 1884 y(.)577 1883 y(.)577 1881 y(.)577 1879 y(.)576 1878 y(.)576 1876 y(.)575 1874 y(.)575 1873 y(.)575 1871 y(.)574 1870 y(.)574 1868 y(.)573 1866 y(.)573 1865 y(.)573 1863 y(.)572 1861 y(.)572 1860 y(.)571 1858 y(.)571 1857 y(.)570 1855 y(.)570 1853 y(.)569 1852 y(.)569 1850 y(.)568 1849 y(.)568 1847 y(.)567 1846 y(.)567 1844 y(.)566 1842 y(.)566 1841 y(.)565 1839 y(.)565 1838 y(.)564 1836 y(.)564 1834 y(.)563 1833 y(.)563 1831 y(.)562 1830 y(.)561 1828 y(.)561 1827 y(.)560 1825 y(.)560 1824 y(.)559 1822 y(.)558 1821 y(.)558 1819 y(.)557 1817 y(.)557 1816 y(.)556 1814 y(.)555 1813 y(.)555 1811 y(.)554 1810 y(.)553 1808 y(.)553 1807 y(.)552 1805 y(.)551 1804 y(.)551 1802 y(.)550 1801 y(.)549 1799 y(.)549 1798 y(.)548 1796 y(.)547 1795 y(.)547 1793 y(.)546 1792 y(.)545 1790 y(.)544 1789 y(.)544 1787 y(.)543 1786 y(.)542 1784 y(.)541 1783 y(.)541 1781 y(.)540 1780 y(.)539 1778 y(.)538 1777 y(.)537 1775 y(.)537 1774 y(.)536 1773 y(.)535 1771 y(.)534 1770 y(.)533 1768 y(.)533 1767 y(.)532 1765 y(.)531 1764 y(.)530 1762 y(.)529 1761 y(.)528 1760 y(.)527 1758 y(.)527 1757 y(.)526 1755 y(.)525 1754 y(.)524 1753 y(.)523 1751 y(.)522 1750 y(.)521 1748 y(.)520 1747 y(.)519 1746 y(.)518 1744 y(.)518 1743 y(.)517 1741 y(.)516 1740 y(.)515 1739 y(.)514 1737 y(.)513 1736 y(.)512 1735 y(.)511 1733 y(.)510 1732 y(.)509 1731 y(.)508 1729 y(.)507 1728 y(.)506 1727 y(.)505 1725 y(.)504 1724 y(.)503 1723 y(.)502 1721 y(.)501 1720 y(.)500 1719 y(.)499 1717 y(.)498 1716 y(.)497 1715 y(.)496 1713 y(.)495 1712 y(.)494 1711 y(.)493 1710 y(.)p 291 1968 300 3 v 262 1902 a(.)264 1901 y(.)265 1900 y(.)266 1899 y(.)267 1898 y(.)269 1897 y(.)270 1895 y(.)271 1894 y(.)273 1893 y(.)274 1892 y(.)275 1891 y(.)276 1890 y(.)278 1889 y(.)279 1888 y(.)280 1887 y(.)281 1886 y(.)283 1885 y(.)284 1884 y(.)285 1883 y(.)287 1882 y(.)288 1880 y(.)289 1879 y(.)290 1878 y(.)292 1877 y(.)293 1876 y(.)294 1875 y(.)296 1874 y(.)297 1873 y(.)298 1872 y(.)299 1871 y(.)301 1870 y(.)302 1869 y(.)303 1868 y(.)304 1867 y(.)306 1865 y(.)307 1864 y(.)308 1863 y(.)310 1862 y(.)311 1861 y(.)312 1860 y(.)313 1859 y(.)315 1858 y(.)316 1857 y(.)317 1856 y(.)318 1855 y(.)320 1854 y(.)321 1853 y(.)322 1852 y(.)324 1850 y(.)325 1849 y(.)326 1848 y(.)327 1847 y(.)329 1846 y(.)330 1845 y(.)331 1844 y(.)333 1843 y(.)334 1842 y(.)335 1841 y(.)336 1840 y(.)338 1839 y(.)339 1838 y(.)340 1837 y(.)341 1835 y(.)343 1834 y(.)344 1833 y(.)345 1832 y(.)347 1831 y(.)348 1830 y(.)349 1829 y(.)350 1828 y(.)352 1827 y(.)353 1826 y(.)354 1825 y(.)356 1824 y(.)357 1823 y(.)358 1822 y(.)359 1820 y(.)361 1819 y(.)362 1818 y(.)363 1817 y(.)364 1816 y(.)366 1815 y(.)367 1814 y(.)368 1813 y(.)370 1812 y(.)371 1811 y(.)372 1810 y(.)373 1809 y(.)375 1808 y(.)376 1807 y(.)377 1805 y(.)378 1804 y(.)380 1803 y(.)381 1802 y(.)382 1801 y(.)384 1800 y(.)385 1799 y(.)386 1798 y(.)387 1797 y(.)389 1796 y(.)390 1795 y(.)391 1794 y(.)393 1793 y(.)394 1792 y(.)395 1790 y(.)396 1789 y(.)398 1788 y(.)399 1787 y(.)400 1786 y(.)401 1785 y(.)403 1784 y(.)404 1783 y(.)405 1782 y(.)407 1781 y(.)408 1780 y(.)409 1779 y(.)410 1778 y(.)412 1777 y(.)413 1775 y(.)414 1774 y(.)416 1773 y(.)417 1772 y(.)418 1771 y(.)419 1770 y(.)421 1769 y(.)422 1768 y(.)423 1767 y(.)424 1766 y(.)426 1765 y(.)427 1764 y(.)428 1763 y(.)430 1762 y(.)431 1760 y(.)432 1759 y(.)433 1758 y(.)435 1757 y(.)436 1756 y(.)437 1755 y(.)438 1754 y(.)440 1753 y(.)441 1752 y(.)442 1751 y(.)444 1750 y(.)445 1749 y(.)446 1748 y(.)447 1747 y(.)449 1745 y(.)450 1744 y(.)451 1743 y(.)453 1742 y(.)454 1741 y(.)455 1740 y(.)456 1739 y(.)458 1738 y(.)459 1737 y(.)460 1736 y(.)461 1735 y(.)463 1734 y(.)464 1733 y(.)465 1732 y(.)467 1730 y(.)468 1729 y(.)469 1728 y(.)470 1727 y(.)472 1726 y(.)473 1725 y(.)474 1724 y(.)476 1723 y(.)477 1722 y(.)478 1721 y(.)479 1720 y(.)481 1719 y(.)482 1718 y(.)483 1717 y(.)484 1715 y(.)486 1714 y(.)487 1713 y(.)488 1712 y(.)490 1711 y(.)491 1710 y(.)492 1709 y(.)p 167 1968 38 3 v 186 1986 3 38 v 66 1143 1800 3 v 66 618 V 66 1668 V 66 2193 V 1336 2043 a(.)1346 2037 y(.)1355 2030 y(.)1364 2024 y(.)1373 2017 y(.)1382 2011 y(.)1392 2004 y(.)1401 1998 y(.)1410 1991 y(.)1419 1985 y(.)1428 1978 y(.)1438 1972 y(.)1447 1965 y(.)1456 1959 y(.)1465 1952 y(.)1474 1946 y(.)1484 1939 y(.)1493 1933 y(.)1502 1926 y(.)1511 1920 y(.)1520 1913 y(.)1530 1907 y(.)1539 1900 y(.)1548 1894 y(.)1557 1887 y(.)1566 1881 y(.)1576 1874 y(.)1585 1868 y(.)1594 1861 y(.)1603 1855 y(.)1612 1848 y(.)1622 1842 y(.)1631 1835 y(.)1640 1829 y(.)1649 1822 y(.)1635 1842 y(.)1636 1840 y(.)1637 1839 y(.)1638 1838 y(.)1640 1836 y(.)1641 1835 y(.)1642 1834 y(.)1643 1832 y(.)1644 1831 y(.)1645 1830 y(.)1646 1829 y(.)1647 1827 y(.)1648 1826 y(.)1650 1825 y(.)1651 1823 y(.)1652 1822 y(.)1653 1821 y(.)1654 1819 y(.)1655 1818 y(.)g(.)1654 1819 y(.)e(.)1650 1820 y(.)1649 1821 y(.)g(.)1646 1822 y(.)g(.)1642 1823 y(.)1641 1824 y(.)g(.)1638 1825 y(.)1636 1826 y(.)g(.)1633 1827 y(.)g(.)1630 1828 y(.)1628 1829 y(.)g(.)p 65 2192 3 1576 v 1865 2192 V 665 1142 3 526 v 665 2192 V 1265 2192 3 1576 v 1396 974 378 3 v 1396 749 V 1396 974 3 228 v 1771 974 V 755 749 a(.)756 751 y(.)756 753 y(.)757 754 y(.)757 756 y(.)758 757 y(.)758 759 y(.)759 761 y(.)759 762 y(.)760 764 y(.)760 765 y(.)761 767 y(.)762 768 y(.)762 770 y(.)763 772 y(.)763 773 y(.)764 775 y(.)764 776 y(.)765 778 y(.)765 780 y(.)766 781 y(.)766 783 y(.)767 784 y(.)767 786 y(.)768 787 y(.)768 789 y(.)769 791 y(.)769 792 y(.)770 794 y(.)771 795 y(.)771 797 y(.)772 799 y(.)772 800 y(.)773 802 y(.)773 803 y(.)774 805 y(.)774 807 y(.)775 808 y(.)775 810 y(.)776 811 y(.)776 813 y(.)777 814 y(.)777 816 y(.)778 818 y(.)778 819 y(.)779 821 y(.)780 822 y(.)780 824 y(.)781 826 y(.)781 827 y(.)782 829 y(.)782 830 y(.)783 832 y(.)783 833 y(.)784 835 y(.)784 837 y(.)785 838 y(.)785 840 y(.)786 841 y(.)786 843 y(.)787 845 y(.)787 846 y(.)788 848 y(.)788 849 y(.)789 851 y(.)790 852 y(.)790 854 y(.)791 856 y(.)791 857 y(.)792 859 y(.)792 860 y(.)793 862 y(.)793 864 y(.)794 865 y(.)794 867 y(.)795 868 y(.)795 870 y(.)796 871 y(.)796 873 y(.)797 875 y(.)797 876 y(.)798 878 y(.)799 879 y(.)799 881 y(.)800 883 y(.)800 884 y(.)801 886 y(.)801 887 y(.)802 889 y(.)802 890 y(.)803 892 y(.)803 894 y(.)804 895 y(.)804 897 y(.)805 898 y(.)805 900 y(.)806 902 y(.)806 903 y(.)807 905 y(.)807 906 y(.)808 908 y(.)809 909 y(.)809 911 y(.)810 913 y(.)810 914 y(.)811 916 y(.)811 917 y(.)812 919 y(.)812 921 y(.)813 922 y(.)813 924 y(.)814 925 y(.)814 927 y(.)815 929 y(.)815 930 y(.)816 932 y(.)816 933 y(.)817 935 y(.)818 936 y(.)818 938 y(.)819 940 y(.)819 941 y(.)820 943 y(.)820 944 y(.)821 946 y(.)821 948 y(.)822 949 y(.)822 951 y(.)823 952 y(.)823 954 y(.)824 955 y(.)824 957 y(.)825 959 y(.)825 960 y(.)826 962 y(.)827 963 y(.)827 965 y(.)828 967 y(.)828 968 y(.)829 970 y(.)829 971 y(.)830 973 y(.)830 974 y(.)p 834 974 301 3 v 292 w(.)1130 973 y(.)1129 971 y(.)1129 970 y(.)1128 968 y(.)1128 967 y(.)1127 965 y(.)1127 963 y(.)1126 962 y(.)1125 960 y(.)1125 959 y(.)1124 957 y(.)1124 955 y(.)1123 954 y(.)1123 952 y(.)1122 951 y(.)1122 949 y(.)1121 948 y(.)1121 946 y(.)1120 944 y(.)1120 943 y(.)1119 941 y(.)1119 940 y(.)1118 938 y(.)1118 936 y(.)1117 935 y(.)1116 933 y(.)1116 932 y(.)1115 930 y(.)1115 929 y(.)1114 927 y(.)1114 925 y(.)1113 924 y(.)1113 922 y(.)1112 921 y(.)1112 919 y(.)1111 917 y(.)1111 916 y(.)1110 914 y(.)1110 913 y(.)1109 911 y(.)1109 910 y(.)1108 908 y(.)1107 906 y(.)1107 905 y(.)1106 903 y(.)1106 902 y(.)1105 900 y(.)1105 898 y(.)1104 897 y(.)1104 895 y(.)1103 894 y(.)1103 892 y(.)1102 890 y(.)1102 889 y(.)1101 887 y(.)1101 886 y(.)1100 884 y(.)1100 883 y(.)1099 881 y(.)1099 879 y(.)1098 878 y(.)1097 876 y(.)1097 875 y(.)1096 873 y(.)1096 871 y(.)1095 870 y(.)1095 868 y(.)1094 867 y(.)1094 865 y(.)1093 864 y(.)1093 862 y(.)1092 860 y(.)1092 859 y(.)1091 857 y(.)1091 856 y(.)1090 854 y(.)1090 852 y(.)1089 851 y(.)1088 849 y(.)1088 848 y(.)1087 846 y(.)1087 845 y(.)1086 843 y(.)1086 841 y(.)1085 840 y(.)1085 838 y(.)1084 837 y(.)1084 835 y(.)1083 833 y(.)1083 832 y(.)1082 830 y(.)1082 829 y(.)1081 827 y(.)1081 826 y(.)1080 824 y(.)1080 822 y(.)1079 821 y(.)1078 819 y(.)1078 818 y(.)1077 816 y(.)1077 814 y(.)1076 813 y(.)1076 811 y(.)1075 810 y(.)1075 808 y(.)1074 807 y(.)1074 805 y(.)1073 803 y(.)1073 802 y(.)1072 800 y(.)1072 799 y(.)1071 797 y(.)1071 795 y(.)1070 794 y(.)1069 792 y(.)1069 791 y(.)1068 789 y(.)1068 787 y(.)1067 786 y(.)1067 784 y(.)1066 783 y(.)1066 781 y(.)1065 780 y(.)1065 778 y(.)1064 776 y(.)1064 775 y(.)1063 773 y(.)1063 772 y(.)1062 770 y(.)1062 768 y(.)1061 767 y(.)1060 765 y(.)1060 764 y(.)1059 762 y(.)1059 761 y(.)1058 759 y(.)1058 757 y(.)1057 756 y(.)1057 754 y(.)1056 753 y(.)1056 751 y(.)1055 749 y(.)p 759 749 300 3 v 215 974 a(.)216 973 y(.)218 972 y(.)219 971 y(.)220 970 y(.)221 969 y(.)222 967 y(.)223 966 y(.)225 965 y(.)226 964 y(.)227 963 y(.)228 962 y(.)229 960 y(.)231 959 y(.)232 958 y(.)233 957 y(.)234 956 y(.)235 954 y(.)236 953 y(.)238 952 y(.)239 951 y(.)240 950 y(.)241 949 y(.)242 947 y(.)243 946 y(.)245 945 y(.)246 944 y(.)247 943 y(.)248 941 y(.)249 940 y(.)251 939 y(.)252 938 y(.)253 937 y(.)254 936 y(.)255 934 y(.)256 933 y(.)258 932 y(.)259 931 y(.)260 930 y(.)261 929 y(.)262 927 y(.)264 926 y(.)265 925 y(.)266 924 y(.)267 923 y(.)268 921 y(.)269 920 y(.)271 919 y(.)272 918 y(.)273 917 y(.)274 916 y(.)275 914 y(.)276 913 y(.)278 912 y(.)279 911 y(.)280 910 y(.)281 909 y(.)282 907 y(.)284 906 y(.)285 905 y(.)286 904 y(.)287 903 y(.)288 901 y(.)289 900 y(.)291 899 y(.)292 898 y(.)293 897 y(.)294 896 y(.)295 894 y(.)296 893 y(.)298 892 y(.)299 891 y(.)300 890 y(.)301 888 y(.)302 887 y(.)304 886 y(.)305 885 y(.)306 884 y(.)307 883 y(.)308 881 y(.)309 880 y(.)311 879 y(.)312 878 y(.)313 877 y(.)314 876 y(.)315 874 y(.)317 873 y(.)318 872 y(.)319 871 y(.)320 870 y(.)321 868 y(.)322 867 y(.)324 866 y(.)325 865 y(.)326 864 y(.)327 863 y(.)328 861 y(.)329 860 y(.)331 859 y(.)332 858 y(.)333 857 y(.)334 855 y(.)335 854 y(.)337 853 y(.)338 852 y(.)339 851 y(.)340 850 y(.)341 848 y(.)342 847 y(.)344 846 y(.)345 845 y(.)346 844 y(.)347 843 y(.)348 841 y(.)350 840 y(.)351 839 y(.)352 838 y(.)353 837 y(.)354 835 y(.)355 834 y(.)357 833 y(.)358 832 y(.)359 831 y(.)360 830 y(.)361 828 y(.)362 827 y(.)364 826 y(.)365 825 y(.)366 824 y(.)367 823 y(.)368 821 y(.)370 820 y(.)371 819 y(.)372 818 y(.)373 817 y(.)374 815 y(.)375 814 y(.)377 813 y(.)378 812 y(.)379 811 y(.)380 810 y(.)381 808 y(.)382 807 y(.)384 806 y(.)385 805 y(.)386 804 y(.)387 802 y(.)388 801 y(.)390 800 y(.)391 799 y(.)392 798 y(.)393 797 y(.)394 795 y(.)395 794 y(.)397 793 y(.)398 792 y(.)399 791 y(.)400 790 y(.)401 788 y(.)403 787 y(.)404 786 y(.)405 785 y(.)406 784 y(.)407 782 y(.)408 781 y(.)410 780 y(.)411 779 y(.)412 778 y(.)413 777 y(.)414 775 y(.)415 774 y(.)417 773 y(.)418 772 y(.)419 771 y(.)420 770 y(.)421 768 y(.)423 767 y(.)424 766 y(.)425 765 y(.)426 764 y(.)427 762 y(.)428 761 y(.)430 760 y(.)431 759 y(.)432 758 y(.)433 757 y(.)434 755 y(.)435 754 y(.)437 753 y(.)438 752 y(.)439 751 y(.)440 749 y(.)i(.)441 751 y(.)441 753 y(.)441 754 y(.)442 756 y(.)442 758 y(.)442 759 y(.)443 761 y(.)443 763 y(.)443 764 y(.)444 766 y(.)444 767 y(.)444 769 y(.)445 771 y(.)445 772 y(.)445 774 y(.)446 776 y(.)446 777 y(.)446 779 y(.)447 780 y(.)447 782 y(.)448 784 y(.)448 785 y(.)448 787 y(.)449 789 y(.)449 790 y(.)449 792 y(.)450 793 y(.)450 795 y(.)450 797 y(.)451 798 y(.)451 800 y(.)451 802 y(.)452 803 y(.)452 805 y(.)452 807 y(.)453 808 y(.)453 810 y(.)453 811 y(.)454 813 y(.)454 815 y(.)455 816 y(.)455 818 y(.)455 820 y(.)456 821 y(.)456 823 y(.)456 824 y(.)457 826 y(.)457 828 y(.)457 829 y(.)458 831 y(.)458 833 y(.)458 834 y(.)459 836 y(.)459 837 y(.)459 839 y(.)460 841 y(.)460 842 y(.)460 844 y(.)461 846 y(.)461 847 y(.)462 849 y(.)462 851 y(.)462 852 y(.)463 854 y(.)463 855 y(.)463 857 y(.)464 859 y(.)464 860 y(.)464 862 y(.)465 864 y(.)465 865 y(.)465 867 y(.)466 868 y(.)466 870 y(.)466 872 y(.)467 873 y(.)467 875 y(.)467 877 y(.)468 878 y(.)468 880 y(.)468 881 y(.)469 883 y(.)469 885 y(.)470 886 y(.)470 888 y(.)470 890 y(.)471 891 y(.)471 893 y(.)471 895 y(.)472 896 y(.)472 898 y(.)472 899 y(.)473 901 y(.)473 903 y(.)473 904 y(.)474 906 y(.)474 908 y(.)474 909 y(.)475 911 y(.)475 912 y(.)475 914 y(.)476 916 y(.)476 917 y(.)477 919 y(.)477 921 y(.)477 922 y(.)478 924 y(.)478 926 y(.)478 927 y(.)479 929 y(.)479 930 y(.)479 932 y(.)480 934 y(.)480 935 y(.)480 937 y(.)481 939 y(.)481 940 y(.)481 942 y(.)482 943 y(.)482 945 y(.)482 947 y(.)483 948 y(.)483 950 y(.)484 952 y(.)484 953 y(.)484 955 y(.)485 956 y(.)485 958 y(.)485 960 y(.)486 961 y(.)486 963 y(.)486 965 y(.)487 966 y(.)487 968 y(.)487 970 y(.)488 971 y(.)488 973 y(.)488 974 y(.)489 976 y(.)489 978 y(.)489 979 y(.)490 981 y(.)490 983 y(.)490 984 y(.)491 986 y(.)491 987 y(.)492 989 y(.)492 991 y(.)492 992 y(.)493 994 y(.)493 996 y(.)493 997 y(.)494 999 y(.)494 1000 y(.)494 1002 y(.)495 1004 y(.)495 1005 y(.)495 1007 y(.)496 1009 y(.)496 1010 y(.)496 1012 y(.)g(.)f(.)493 1011 y(.)f(.)h(.)f(.)h(.)485 1010 y(.)f(.)h(.)f(.)478 1009 y(.)h(.)f(.)g(.)h(.)470 1008 y(.)f(.)h(.)f(.)g(.)462 1007 y(.)g(.)g(.)h(.)455 1006 y(.)f(.)h(.)f(.)g(.)447 1005 y(.)g(.)g(.)h(.)440 1004 y(.)g(.)f(.)g(.)h(.)432 1003 y(.)f(.)h(.)f(.)425 1002 y(.)h(.)f(.)g(.)h(.)417 1001 y(.)f(.)h(.)f(.)410 1000 y(.)h(.)f(.)g(.)h(.)402 999 y(.)f(.)h(.)f(.)396 998 y(.)g(.)g(.)h(.)f(.)387 997 y(.)h(.)f(.)g(.)381 996 y(.)g(.)g(.)h(.)f(.)372 995 y(.)h(.)f(.)g(.)h(.)364 994 y(.)f(.)h(.)f(.)357 993 y(.)h(.)f(.)h(.)f(.)349 992 y(.)h(.)f(.)g(.)343 991 y(.)g(.)g(.)h(.)f(.)334 990 y(.)h(.)f(.)g(.)328 989 y(.)g(.)g(.)h(.)f(.)319 988 y(.)h(.)f(.)g(.)313 987 y(.)g(.)h(.)f(.)g (.)305 986 y(.)g(.)g(.)h(.)298 985 y(.)f(.)h(.)f(.)g(.)290 984 y(.)g(.)g(.)h(.)283 983 y(.)f(.)h(.)f(.)g(.)275 982 y(.)g(.)g(.)h(.)f(.)266 981 y(.)h(.)f(.)h(.)260 980 y(.)f(.)h(.)f(.)g (.)252 979 y(.)g(.)g(.)h(.)245 978 y(.)f(.)h(.)f(.)g(.)237 977 y(.)g(.)g(.)h(.)230 976 y(.)f(.)h(.)f(.)g(.)222 975 y(.)g(.)h(.)f(.)215 974 y(.)1336 1218 y(.)1337 1220 y(.)1338 1221 y(.)1339 1223 y(.)1340 1225 y(.)1341 1227 y(.)i(.)1341 1228 y(.)1342 1230 y(.)1343 1231 y(.)1344 1233 y(.)1344 1235 y(.)g(.)1345 1236 y(.)1346 1238 y(.)1347 1239 y(.)1347 1241 y(.)1348 1242 y(.)g(.)1349 1244 y(.)1350 1245 y(.)1351 1247 y(.)1351 1248 y(.)1352 1250 y(.)g(.)1353 1251 y(.)1354 1253 y(.)1354 1255 y(.)1355 1256 y(.)1356 1258 y(.)1357 1259 y(.)1358 1261 y(.)1358 1262 y(.)1359 1264 y(.)g(.)1360 1266 y(.)1361 1267 y(.)1362 1269 y(.)1363 1270 y(.)1363 1272 y(.)1364 1274 y(.)1365 1275 y(.)1366 1277 y(.)g(.)1367 1278 y(.)1368 1280 y(.)1368 1281 y(.)1369 1283 y(.)1370 1284 y(.)1371 1286 y(.)1372 1287 y(.)1372 1289 y(.)g(.)1373 1290 y(.)1374 1292 y(.)1375 1294 y(.)1376 1295 y(.)1377 1297 y(.)1378 1298 y(.)1378 1300 y(.)g(.)1379 1301 y(.)1380 1303 y(.)1381 1304 y(.)1382 1306 y(.)1383 1307 y(.)1383 1309 y(.)1384 1310 y(.)g(.)1385 1312 y(.)1386 1313 y(.)1387 1315 y(.)1388 1316 y(.)1389 1318 y(.)1390 1319 y(.)g(.)1391 1321 y(.)1392 1322 y(.)1393 1323 y(.)1394 1325 y(.)1394 1326 y(.)1395 1327 y(.)g(.)1396 1329 y(.)1397 1331 y(.)1398 1332 y(.)1400 1334 y(.)1401 1335 y(.)g(.)1402 1336 y(.)1403 1338 y(.)1404 1339 y(.)1405 1340 y(.)1406 1342 y(.)1407 1343 y(.)1408 1344 y(.)1409 1346 y(.)1410 1347 y(.)1411 1348 y(.)g(.)1412 1350 y(.)1413 1351 y(.)1414 1352 y(.)1416 1354 y(.)1417 1355 y(.)1418 1357 y(.)1419 1358 y(.)1420 1359 y(.)g(.)1422 1361 y(.)1423 1362 y(.)1425 1363 y(.)1426 1364 y(.)1427 1366 y(.)1429 1367 y(.)1430 1368 y(.)g(.)1432 1369 y(.)1433 1370 y(.)1434 1371 y(.)1436 1372 y(.)1437 1373 y(.)1439 1374 y(.)1440 1375 y(.)1441 1376 y(.)1443 1377 y(.)1444 1378 y(.)g(.)1446 1379 y(.)1447 1380 y(.)1449 1381 y(.)1451 1382 y(.)1452 1383 y(.)g(.)1454 1384 y(.)1455 1385 y(.)i(.)1458 1386 y(.)1460 1387 y(.)1461 1388 y(.)e(.)1463 1389 y(.)i(.)1466 1390 y(.)1468 1391 y(.)1469 1392 y(.)g(.)e(.)1473 1393 y(.)1474 1394 y(.)1476 1395 y(.)i(.)1479 1396 y(.)1481 1397 y(.)e(.)1483 1398 y(.)h(.)1486 1399 y(.)1488 1400 y(.)1490 1401 y(.)g(.)f(.)1493 1402 y(.)1495 1403 y(.)i(.)1498 1404 y(.)1500 1405 y(.)g(.)e(.)1504 1406 y(.)1505 1407 y(.)i(.)1509 1408 y(.)1511 1409 y(.)g(.)e(.)1514 1410 y(.)i(.)1518 1411 y(.)1520 1412 y(.)f(.)1523 1413 y(.)f(.)i(.)1527 1414 y(.)f(.)1530 1415 y(.)h(.)1534 1416 y(.)e(.)h(.)1537 1417 y(.)h(.)1541 1418 y(.)f(.)1544 1419 y(.)f(.)i(.)f(.)1549 1420 y(.)h(.)f(.)1554 1421 y(.)f(.)i(.)1558 1422 y(.)g(.)f(.)1563 1423 y(.)f(.)i(.)g(.)g(.)1570 1424 y(.)g(.)e(.)i(.)g(.)g(.)g(.)e(.)i(.) g(.)f(.)h(.)g(.)f(.)f(.)i(.)g(.)g(.)1598 1423 y(.)g(.)g(.)e(.)h(.)1605 1422 y(.)h(.)g(.)1611 1421 y(.)f(.)h(.)e(.)1616 1420 y(.)i(.)1620 1419 y(.)f(.)1623 1418 y(.)h(.)1627 1417 y(.)g(.)e(.)h(.)1632 1416 y(.)g(.)1635 1415 y(.)h(.)e(.)1638 1414 y(.)i(.)1642 1413 y(.)1643 1412 y(.)g(.)e(.)1647 1411 y(.)i(.)1651 1410 y(.)1652 1409 y(.)g(.)e(.)1656 1408 y(.)i(.)1659 1407 y(.)1661 1406 y(.)f(.)1664 1405 y(.)f(.)i(.)1668 1404 y(.)1669 1403 y(.)g(.)1673 1402 y(.)1675 1401 y(.)e(.)h(.)1678 1400 y(.)1680 1399 y(.)g(.)1683 1398 y(.)h(.)1686 1397 y(.)e(.)1688 1396 y(.)i(.)1691 1395 y(.)1693 1394 y(.)1695 1393 y(.)g(.)1698 1392 y(.)e(.)1700 1391 y(.)i(.)1703 1390 y(.)g(.)1707 1389 y(.)1708 1388 y(.)g(.)1711 1387 y(.)1636 1762 y(.)1637 1764 y(.)1638 1765 y(.)1638 1767 y(.)1639 1769 y(.)1639 1770 y(.)1640 1772 y(.)e(.)1640 1774 y(.)1641 1776 y(.)1642 1777 y(.)1642 1779 y(.)1643 1781 y(.)g(.)1643 1783 y(.)1644 1785 y(.)1645 1786 y(.)1645 1788 y(.)1646 1790 y(.)g(.)1646 1791 y(.)1647 1793 y(.)1647 1795 y(.)1648 1796 y(.)1649 1798 y(.)g(.)1649 1799 y(.)1650 1801 y(.)1650 1802 y(.)1651 1804 y(.)1651 1806 y(.)1652 1807 y(.)1653 1809 y(.)1653 1810 y(.)1654 1812 y(.)g(.)1654 1814 y(.)1655 1815 y(.)1656 1817 y(.)1656 1819 y(.)1657 1820 y(.)1658 1822 y(.)1658 1824 y(.)g(.)1659 1825 y(.)1660 1827 y(.)1660 1829 y(.)1661 1831 y(.)1662 1832 y(.)1663 1834 y(.)g(.)1663 1836 y(.)1664 1837 y(.)1665 1839 y(.)1666 1841 y(.)1666 1842 y(.)g(.)1667 1844 y(.)1668 1845 y(.)1669 1847 y(.)1670 1848 y(.)1671 1850 y(.)1671 1851 y(.)1672 1853 y(.)1673 1854 y(.)1674 1856 y(.)g(.)1675 1857 y(.)1676 1858 y(.)1677 1860 y(.)1678 1861 y(.)1680 1863 y(.)1681 1864 y(.)1682 1865 y(.)1683 1867 y(.)1684 1868 y(.)1685 1870 y(.)g(.)1686 1871 y(.)1688 1872 y(.)1689 1874 y(.)1690 1875 y(.)1691 1876 y(.)1692 1878 y(.)g(.)1694 1879 y(.)1695 1880 y(.)1696 1882 y(.)1698 1883 y(.)1699 1884 y(.)1700 1886 y(.)g(.)1702 1887 y(.)1703 1888 y(.)1704 1890 y(.)1706 1891 y(.)1707 1892 y(.)1708 1893 y(.)g(.)1710 1895 y(.)1711 1896 y(.)1712 1897 y(.)1714 1898 y(.)1715 1899 y(.)1717 1901 y(.)g(.)1718 1902 y(.)1719 1903 y(.)1721 1904 y(.)1722 1905 y(.)1723 1906 y(.)1725 1907 y(.)1726 1909 y(.)1727 1910 y(.)1729 1911 y(.)1730 1912 y(.)g(.)1732 1913 y(.)1733 1914 y(.)1735 1915 y(.)1737 1916 y(.)h(.)1740 1917 y(.)1741 1918 y(.)1743 1919 y(.)f(.)1745 1920 y(.)1746 1921 y(.)1748 1922 y(.)1750 1923 y(.)i(.)1753 1924 y(.)e(.)1755 1925 y(.)1757 1926 y(.)h(.)1760 1927 y(.)1761 1928 y(.)1763 1929 y(.)g(.)1766 1930 y(.)1768 1931 y(.)366 1404 y Fj(C)366 1292 y(R)947 1404 y(C)1284 1517 y(A)1416 1554 y(P)1753 1536 y(B)1434 1479 y(Height\(P\))150 2004 y(O)108 b(A)307 b(B)1303 2079 y Ft(Cen)o(ter)909 1629 y(Circle)-733 b(Circle)234 2117 y(P)o(olar)15 b(rectangle)1584 2023 y Fm(\013)1491 1967 y(\014)1659 1798 y(\032)p Ft(\()p Fm(\022)q Ft(\))1434 2004 y Fm(\022)272 1067 y Ft(T)l(riangle)400 b(P)o(arallelogram)344 b(Rectangle)534 992 y Fj(C)-404 b(A)441 711 y(B)722 748 y(B)778 992 y(A)1359 748 y(B)1359 973 y(A)1416 2117 y Ft(Generalized)17 b(sector)1341 1629 y(Generalized)g(rectangle)422 1723 y Fj(D)1809 973 y(C)1172 992 y(C)805 2117 y Ft(P)o(arab)q(olic)f (segmen)o(t)p 809 2067 2 2 v 810 2064 V 812 2062 V 813 2060 V 815 2057 V 816 2055 V 818 2053 V 820 2050 V 821 2048 V 823 2046 V 824 2044 V 826 2041 V 827 2039 V 829 2037 V 830 2035 V 832 2033 V 834 2031 V 835 2028 V 837 2026 V 838 2024 V 840 2022 V 841 2020 V 843 2018 V 844 2016 V 846 2014 V 848 2012 V 849 2010 V 851 2008 V 852 2006 V 854 2004 V 855 2002 V 857 2000 V 858 1998 V 860 1996 V 861 1994 V 863 1992 V 864 1991 V 866 1989 V 867 1987 V 869 1985 V 870 1983 V 872 1981 V 874 1980 V 875 1978 V 877 1976 V 878 1974 V 880 1973 V 881 1971 V 883 1969 V 884 1967 V 886 1966 V 887 1964 V 889 1963 V 890 1961 V 892 1959 V 893 1958 V 895 1956 V 896 1955 V 898 1953 V 899 1951 V 901 1950 V 902 1948 V 904 1947 V 905 1945 V 907 1944 V 908 1942 V 910 1941 V 911 1940 V 913 1938 V 914 1937 V 916 1935 V 917 1934 V 919 1933 V 920 1931 V 921 1930 V 923 1929 V 924 1927 V 926 1926 V 927 1925 V 929 1923 V 930 1922 V 932 1921 V 933 1920 V 935 1918 V 936 1917 V 938 1916 V 939 1915 V 941 1914 V 942 1913 V 944 1911 V 945 1910 V 946 1909 V 948 1908 V 949 1907 V 951 1906 V 952 1905 V 954 1904 V 955 1903 V 957 1902 V 958 1901 V 959 1900 V 961 1899 V 962 1898 V 964 1897 V 965 1896 V 967 1895 V 968 1894 V 970 1893 V 971 1893 V 972 1892 V 974 1891 V 975 1890 V 977 1889 V 978 1888 V 980 1888 V 981 1887 V 982 1886 V 984 1885 V 985 1885 V 987 1884 V 988 1883 V 990 1883 V 991 1882 V 992 1881 V 994 1881 V 995 1880 V 997 1879 V 998 1879 V 999 1878 V 1001 1878 V 1002 1877 V 1004 1876 V 1005 1876 V 1006 1875 V 1008 1875 V 1009 1874 V 1011 1874 V 1012 1873 V 1013 1873 V 1015 1873 V 1016 1872 V 1018 1872 V 1019 1871 V 1020 1871 V 1022 1871 V 1023 1870 V 1024 1870 V 1026 1870 V 1027 1869 V 1029 1869 V 1030 1869 V 1031 1868 V 1033 1868 V 1034 1868 V 1036 1868 V 1037 1868 V 1038 1867 V 1040 1867 V 1041 1867 V 1042 1867 V 1044 1867 V 1045 1867 V 1046 1866 V 1048 1866 V 1049 1866 V 1051 1866 V 1052 1866 V 1053 1866 V 1055 1866 V 1056 1866 V 1057 1866 V 1059 1866 V 1060 1866 V 1061 1866 V 1063 1866 V 1064 1866 V 1065 1866 V 1067 1866 V 1068 1866 V 1069 1867 V 1071 1867 V 1072 1867 V 1073 1867 V 1075 1867 V 1076 1867 V 1077 1868 V 1079 1868 V 1080 1868 V 1081 1868 V 1083 1869 V 1084 1869 V 1085 1869 V 1087 1869 V 1088 1870 V 1089 1870 V 1091 1870 V 1092 1871 V 1093 1871 V 1095 1872 V 1096 1872 V 1097 1872 V 1099 1873 V 1100 1873 V 1101 1874 V 1103 1874 V 1104 1875 V 1105 1875 V 1106 1876 V 1108 1876 V 1109 1877 V 1110 1877 V 1112 1878 V 1113 1878 V 1114 1879 V 1116 1880 V 1117 1880 V 1118 1881 V 1119 1881 V 1121 1882 V 1122 1883 V 1123 1883 V 1125 1884 V 1126 1885 V 1127 1886 V 1128 1886 V 1130 1887 V 1131 1888 V 1132 1889 V 1134 1890 V 1135 1890 V 1136 1891 V 1137 1892 V 1139 1893 V 1140 1894 V 1141 1895 V 1142 1896 V 1144 1896 V 1145 1897 V 1146 1898 V 1147 1899 V 1149 1900 V 1150 1901 V 1151 1902 V 1152 1903 V 1154 1904 V 1155 1905 V 1156 1906 V 1158 1907 V 1159 1909 V 1160 1910 V 1161 1911 V 1162 1912 V 1164 1913 V 1165 1914 V 1166 1915 V 1167 1916 V 1169 1918 V 1170 1919 V 1171 1920 V 1172 1921 V 1174 1923 V 1175 1924 V 1176 1925 V 1177 1926 V 1179 1928 V 1180 1929 V 1181 1930 V 1182 1932 V 1183 1933 V 1185 1934 V 1186 1936 V 1187 1937 V 1188 1939 V 1190 1940 V 1191 1941 V 1192 1943 V 1193 1944 V 1194 1946 V 1196 1947 V 1197 1949 V 1198 1950 V 1199 1952 V 1200 1954 V 1202 1955 V 1203 1957 V 1204 1958 V 1205 1960 V 1206 1961 V 1208 1963 V 1209 1965 V 1210 1966 V 1211 1968 V 1212 1970 V 1214 1972 V 1215 1973 V 1216 1975 V 1217 1977 V 1218 1978 V 1220 1980 V 1221 1982 V 1222 1984 V 801 2067 a Fi(.)-6 b(.)804 2066 y(.)g(.)g(.)809 2065 y(.)g(.)f(.)814 2064 y(.)h(.)f(.)819 2063 y(.)h(.)f(.)824 2062 y(.)h(.)f(.)h(.)830 2061 y(.)g(.)g(.)835 2060 y(.)g(.)g(.)840 2059 y(.)g(.)f(.)845 2058 y(.)h(.)f(.)850 2057 y(.)h(.)f(.)855 2056 y(.)h(.)f(.)860 2055 y(.)g(.)h(.)865 2054 y(.)f(.)h(.)870 2053 y(.)f(.)h(.)f(.)876 2052 y(.)h(.)f(.)881 2051 y(.)h(.)f(.)886 2050 y(.)h(.)f(.)891 2049 y(.)g(.)h(.)896 2048 y(.)f(.)h(.)901 2047 y(.)f(.)h(.)905 2046 y(.)g(.)g(.)910 2045 y(.)g(.)g(.)915 2044 y(.)g(.)g(.)f(.)922 2043 y(.)g(.)h(.)927 2042 y(.)f(.)h(.)932 2041 y(.)f(.)h(.)936 2040 y(.)g(.)g(.)941 2039 y(.)g(.)g(.)946 2038 y(.)g(.)f(.)951 2037 y(.)h(.)f(.)956 2036 y(.)h(.)f(.)961 2035 y(.)h(.)f(.)966 2034 y(.)g(.)h(.)g(.)972 2033 y(.)g(.)g(.)977 2032 y(.)g(.)f(.)982 2031 y(.)h(.)f(.)987 2030 y(.)h(.)f(.)992 2029 y(.)h(.)f(.)997 2028 y(.)g(.)h(.)1002 2027 y(.)f(.)h(.)1007 2026 y(.)f(.)h(.)1011 2025 y(.)g(.)g(.)f(.)1018 2024 y(.)h(.)f(.)1023 2023 y(.)h(.)f(.)1028 2022 y(.)g(.)h(.)1033 2021 y(.)f(.)h(.)1038 2020 y(.)f(.)h(.)1042 2019 y(.)g(.)g(.)1047 2018 y(.)g(.)g(.)1052 2017 y(.)g(.)g(.)1057 2016 y(.)g(.)f(.)h(.)1064 2015 y(.)f(.)h(.)1069 2014 y(.)f(.)h(.)1073 2013 y(.)g(.)g(.)1078 2012 y(.)g(.)g(.)1083 2011 y(.)g(.)g(.)1088 2010 y(.)g(.)f(.)1093 2009 y(.)h(.)f(.)1098 2008 y(.)h(.)f(.)1103 2007 y(.)g(.)h(.)g(.)1109 2006 y(.)g(.)g(.)1114 2005 y(.)g(.)g(.)1119 2004 y(.)g(.)f(.)1124 2003 y(.)h(.)f(.)1129 2002 y(.)h(.)f(.)1134 2001 y(.)g(.)h(.)1139 2000 y(.)f(.)h(.)1144 1999 y(.)f(.)h(.)1149 1998 y(.)f(.)h(.)f(.)1155 1997 y(.)h(.)f(.)1160 1996 y(.)h(.)f(.)1165 1995 y(.)g(.)h(.)1170 1994 y(.)f(.)h(.)1175 1993 y(.)f(.)h(.)1180 1992 y(.)f(.)h(.)1184 1991 y(.)g(.)g(.)1189 1990 y(.)g(.)g(.)1194 1989 y(.)g(.)f(.)h(.)1201 1988 y(.)f(.)h(.)1206 1987 y(.)f(.)h(.)1211 1986 y(.)f(.)h(.)1215 1985 y(.)g(.)g(.)1220 1984 y(.)801 2067 y(.)802 2066 y(.)803 2064 y(.)804 2063 y(.)805 2061 y(.)806 2060 y(.)807 2059 y(.)807 2057 y(.)808 2056 y(.)809 2055 y(.)818 2042 y(.)819 2041 y(.)820 2039 y(.)820 2038 y(.)821 2037 y(.)822 2035 y(.)823 2034 y(.)824 2032 y(.)825 2031 y(.)826 2030 y(.)834 2017 y(.)835 2016 y(.)836 2014 y(.)837 2013 y(.)838 2012 y(.)839 2010 y(.)840 2009 y(.)841 2007 y(.)842 2006 y(.)843 2005 y(.)851 1992 y(.)852 1991 y(.)853 1989 y(.)854 1988 y(.)855 1987 y(.)856 1985 y(.)856 1984 y(.)857 1982 y(.)858 1981 y(.)859 1980 y(.)868 1967 y(.)869 1966 y(.)869 1964 y(.)870 1963 y(.)871 1962 y(.)872 1960 y(.)873 1959 y(.)874 1957 y(.)875 1956 y(.)876 1955 y(.)884 1942 y(.)885 1941 y(.)886 1939 y(.)887 1938 y(.)888 1937 y(.)889 1935 y(.)890 1934 y(.)891 1933 y(.)892 1931 y(.)893 1930 y(.)901 1917 y(.)902 1916 y(.)903 1914 y(.)904 1913 y(.)905 1912 y(.)905 1910 y(.)906 1909 y(.)907 1908 y(.)908 1906 y(.)909 1905 y(.)918 1892 y(.)918 1891 y(.)919 1889 y(.)920 1888 y(.)921 1887 y(.)922 1885 y(.)923 1884 y(.)924 1883 y(.)925 1881 y(.)926 1880 y(.)934 1867 y(.)935 1866 y(.)936 1865 y(.)937 1863 y(.)938 1862 y(.)939 1860 y(.)940 1859 y(.)941 1858 y(.)942 1856 y(.)942 1855 y(.)951 1842 y(.)952 1841 y(.)953 1840 y(.)954 1838 y(.)954 1837 y(.)955 1835 y(.)956 1834 y(.)957 1833 y(.)958 1831 y(.)959 1830 y(.)967 1817 y(.)968 1816 y(.)969 1815 y(.)970 1813 y(.)971 1812 y(.)972 1810 y(.)973 1809 y(.)974 1808 y(.)975 1806 y(.)976 1805 y(.)984 1792 y(.)985 1791 y(.)986 1790 y(.)987 1788 y(.)988 1787 y(.)989 1786 y(.)990 1784 y(.)991 1783 y(.)991 1781 y(.)992 1780 y(.)1001 1767 y(.)1002 1766 y(.)1003 1765 y(.)1003 1763 y(.)1004 1762 y(.)1005 1761 y(.)1006 1759 y(.)1007 1758 y(.)1008 1756 y(.)1009 1755 y(.)1017 1742 y(.)1018 1741 y(.)1019 1740 y(.)1020 1738 y(.)1021 1737 y(.)1022 1736 y(.)1023 1734 y(.)1024 1733 y(.)1025 1731 y(.)1026 1730 y(.)1034 1718 y(.)1035 1716 y(.)1036 1715 y(.)1037 1713 y(.)f(.)1039 1715 y(.)1040 1716 y(.)1040 1717 y(.)1041 1719 y(.)1042 1720 y(.)1051 1733 y(.)1052 1734 y(.)1053 1735 y(.)1054 1737 y(.)1054 1738 y(.)1055 1740 y(.)1056 1741 y(.)1057 1742 y(.)1058 1744 y(.)1059 1745 y(.)1068 1758 y(.)1068 1759 y(.)1069 1760 y(.)1070 1762 y(.)1071 1763 y(.)1072 1764 y(.)1073 1766 y(.)1074 1767 y(.)1075 1769 y(.)1076 1770 y(.)1084 1782 y(.)1085 1784 y(.)1086 1785 y(.)1087 1787 y(.)1088 1788 y(.)1089 1789 y(.)1090 1791 y(.)1091 1792 y(.)1092 1793 y(.)1093 1795 y(.)1101 1807 y(.)1102 1809 y(.)1103 1810 y(.)1104 1811 y(.)1105 1813 y(.)1106 1814 y(.)1107 1816 y(.)1108 1817 y(.)1108 1818 y(.)1109 1820 y(.)1118 1832 y(.)1119 1834 y(.)1120 1835 y(.)1121 1836 y(.)1122 1838 y(.)1122 1839 y(.)1123 1840 y(.)1124 1842 y(.)1125 1843 y(.)1126 1845 y(.)1135 1857 y(.)1136 1858 y(.)1136 1860 y(.)1137 1861 y(.)1138 1863 y(.)1139 1864 y(.)1140 1865 y(.)1141 1867 y(.)1142 1868 y(.)1143 1869 y(.)1151 1882 y(.)1152 1883 y(.)1153 1885 y(.)1154 1886 y(.)1155 1887 y(.)1156 1889 y(.)1157 1890 y(.)1158 1892 y(.)1159 1893 y(.)1160 1894 y(.)1168 1907 y(.)1169 1908 y(.)1170 1910 y(.)1171 1911 y(.)1172 1912 y(.)1173 1914 y(.)1174 1915 y(.)1175 1916 y(.)1176 1918 y(.)1176 1919 y(.)1185 1932 y(.)1186 1933 y(.)1187 1934 y(.)1188 1936 y(.)1189 1937 y(.)1190 1939 y(.)1190 1940 y(.)1191 1941 y(.)1192 1943 y(.)1193 1944 y(.)1202 1957 y(.)1203 1958 y(.)1203 1959 y(.)1204 1961 y(.)1205 1962 y(.)1206 1963 y(.)1207 1965 y(.)1208 1966 y(.)1209 1968 y(.)1210 1969 y(.)1218 1981 y(.)1219 1983 y(.)1220 1984 y(.)746 2066 y Fj(A)1219 1948 y(B)994 1723 y(P)463 2340 y Ft(Figure)15 b(1:)20 b(Finite)c(regions)g(a)o(v)m (ailable)g(in)h Fr(Cubpac)o(k)p Fn(++)p Ft(.)p eop %%Page: 5 8 5 7 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1182 b Ft(5)503 906 y Fi(.)503 904 y(.)503 903 y(.)503 901 y(.)503 899 y(.)503 898 y(.)503 896 y(.)503 894 y(.)503 893 y(.)502 891 y(.)502 889 y(.)502 888 y(.)502 886 y(.)502 884 y(.)502 883 y(.)501 881 y(.)501 879 y(.)501 878 y(.)500 876 y(.)500 875 y(.)500 873 y(.)500 871 y(.)499 870 y(.)499 868 y(.)498 866 y(.)498 865 y(.)498 863 y(.)497 862 y(.)497 860 y(.)496 858 y(.)496 857 y(.)495 855 y(.)495 854 y(.)494 852 y(.)494 850 y(.)493 849 y(.)493 847 y(.)492 846 y(.)491 844 y(.)491 843 y(.)490 841 y(.)490 840 y(.)489 838 y(.)488 837 y(.)488 835 y(.)487 834 y(.)486 832 y(.)485 831 y(.)485 829 y(.)484 828 y(.)483 826 y(.)482 825 y(.)482 823 y(.)481 822 y(.)480 820 y(.)479 819 y(.)478 818 y(.)477 816 y(.)476 815 y(.)475 813 y(.)475 812 y(.)474 811 y(.)473 809 y(.)472 808 y(.)471 807 y(.)470 805 y(.)469 804 y(.)468 803 y(.)467 801 y(.)466 800 y(.)465 799 y(.)464 797 y(.)463 796 y(.)461 795 y(.)460 794 y(.)459 792 y(.)458 791 y(.)457 790 y(.)456 789 y(.)455 788 y(.)454 786 y(.)452 785 y(.)451 784 y(.)450 783 y(.)449 782 y(.)447 781 y(.)446 780 y(.)445 778 y(.)444 777 y(.)442 776 y(.)441 775 y(.)440 774 y(.)439 773 y(.)437 772 y(.)436 771 y(.)435 770 y(.)433 769 y(.)432 768 y(.)431 767 y(.)429 766 y(.)428 765 y(.)426 764 y(.)-9 b(.)424 763 y(.)422 762 y(.)421 761 y(.)419 760 y(.)418 759 y(.)416 758 y(.)g(.)414 757 y(.)412 756 y(.)411 755 y(.)f(.)408 754 y(.)406 753 y(.)405 752 y(.)g(.)402 751 y(.)400 750 y(.)h(.)397 749 y(.)f(.)394 748 y(.)392 747 y(.)h(.)389 746 y(.)g(.)386 745 y(.)g(.)383 744 y(.)f(.)380 743 y(.)g(.)377 742 y(.)g(.)g(.)372 741 y(.)g(.)g(.)367 740 y(.)g(.)h(.)362 739 y(.)f(.)h(.)f(.)355 738 y(.)h(.)f(.)g(.)h(.)f(.)345 737 y(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)322 738 y(.)g(.)f(.)g(.)h(.)f(.)312 739 y(.)h(.)f(.)g(.)306 740 y(.)g(.)g(.)h(.)299 741 y(.)g(.)296 742 y(.)f(.)h(.)291 743 y(.)g(.)288 744 y(.)f(.)285 745 y(.)g(.)282 746 y(.)g(.)278 747 y(.)h(.)275 748 y(.)g(.)272 749 y(.)271 750 y(.)f(.)268 751 y(.)266 752 y(.)h(.)263 753 y(.)262 754 y(.)f(.)259 755 y(.)257 756 y(.)256 757 y(.)g(.)253 758 y(.)251 759 y(.)250 760 y(.)248 761 y(.)247 762 y(.)h(.)244 763 y(.)243 764 y(.)241 765 y(.)240 766 y(.)239 767 y(.)237 768 y(.)236 769 y(.)235 770 y(.)233 771 y(.)232 772 y(.)231 773 y(.)229 774 y(.)228 775 y(.)227 776 y(.)225 777 y(.)224 778 y(.)223 779 y(.)222 780 y(.)220 781 y(.)219 782 y(.)218 784 y(.)217 785 y(.)216 786 y(.)214 787 y(.)213 788 y(.)212 790 y(.)211 791 y(.)210 792 y(.)209 793 y(.)208 794 y(.)207 796 y(.)205 797 y(.)204 798 y(.)203 800 y(.)202 801 y(.)201 802 y(.)200 803 y(.)199 805 y(.)198 806 y(.)197 807 y(.)196 809 y(.)195 810 y(.)194 811 y(.)194 813 y(.)193 814 y(.)192 816 y(.)191 817 y(.)190 818 y(.)189 820 y(.)188 821 y(.)187 823 y(.)187 824 y(.)186 826 y(.)185 827 y(.)184 829 y(.)184 830 y(.)183 832 y(.)182 833 y(.)181 835 y(.)181 836 y(.)180 838 y(.)179 839 y(.)179 841 y(.)178 842 y(.)177 844 y(.)177 845 y(.)176 847 y(.)176 848 y(.)175 850 y(.)175 852 y(.)174 853 y(.)174 855 y(.)173 856 y(.)173 858 y(.)172 859 y(.)172 861 y(.)171 863 y(.)171 864 y(.)170 866 y(.)170 868 y(.)170 869 y(.)169 871 y(.)169 872 y(.)169 874 y(.)168 876 y(.)168 877 y(.)168 879 y(.)167 881 y(.)167 882 y(.)167 884 y(.)167 885 y(.)167 887 y(.)166 889 y(.)166 890 y(.)166 892 y(.)166 894 y(.)166 895 y(.)166 897 y(.)166 899 y(.)166 900 y(.)166 902 y(.)166 904 y(.)166 905 y(.)166 907 y(.)166 909 y(.)166 910 y(.)166 912 y(.)166 914 y(.)166 915 y(.)166 917 y(.)166 919 y(.)166 920 y(.)166 922 y(.)167 924 y(.)167 925 y(.)167 927 y(.)167 929 y(.)167 930 y(.)168 932 y(.)168 933 y(.)168 935 y(.)168 937 y(.)169 938 y(.)169 940 y(.)169 942 y(.)170 943 y(.)170 945 y(.)171 946 y(.)171 948 y(.)171 950 y(.)172 951 y(.)172 953 y(.)173 954 y(.)173 956 y(.)174 958 y(.)174 959 y(.)175 961 y(.)175 962 y(.)176 964 y(.)176 965 y(.)177 967 y(.)178 969 y(.)178 970 y(.)179 972 y(.)180 973 y(.)180 975 y(.)181 976 y(.)182 978 y(.)182 979 y(.)183 981 y(.)184 982 y(.)185 984 y(.)185 985 y(.)186 987 y(.)187 988 y(.)188 989 y(.)189 991 y(.)189 992 y(.)190 994 y(.)191 995 y(.)192 997 y(.)193 998 y(.)194 999 y(.)195 1001 y(.)196 1002 y(.)197 1003 y(.)198 1005 y(.)199 1006 y(.)200 1008 y(.)201 1009 y(.)202 1010 y(.)203 1011 y(.)204 1013 y(.)205 1014 y(.)206 1015 y(.)207 1017 y(.)208 1018 y(.)209 1019 y(.)210 1020 y(.)211 1021 y(.)212 1023 y(.)214 1024 y(.)215 1025 y(.)216 1026 y(.)217 1027 y(.)218 1029 y(.)220 1030 y(.)221 1031 y(.)222 1032 y(.)223 1033 y(.)225 1034 y(.)226 1035 y(.)227 1036 y(.)228 1037 y(.)230 1038 y(.)231 1039 y(.)232 1040 y(.)234 1041 y(.)235 1042 y(.)236 1043 y(.)238 1044 y(.)239 1045 y(.)240 1046 y(.)242 1047 y(.)243 1048 y(.)245 1049 y(.)246 1050 y(.)247 1051 y(.)j(.)250 1052 y(.)252 1053 y(.)253 1054 y(.)255 1055 y(.)f(.)258 1056 y(.)259 1057 y(.)261 1058 y(.)g(.)264 1059 y(.)265 1060 y(.)h(.)268 1061 y(.)270 1062 y(.)f(.)273 1063 y(.)274 1064 y(.)h(.)277 1065 y(.)g(.)280 1066 y(.)g(.)284 1067 y(.)f(.)287 1068 y(.)g(.)290 1069 y(.)h(.)293 1070 y(.)g(.)g(.)298 1071 y(.)g(.)f(.)303 1072 y(.)h(.)f(.)308 1073 y(.)h(.)f(.)h(.)f(.)316 1074 y(.)h(.)f(.)h(.)g(.)f(.)h(.)328 1075 y(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h (.)343 1074 y(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)356 1073 y(.)h(.)f(.)h(.)362 1072 y(.)g(.)g(.)367 1071 y(.)g(.)g(.)372 1070 y(.)g(.)f(.)377 1069 y(.)h(.)380 1068 y(.)g(.)383 1067 y(.)g(.)387 1066 y(.)f(.)390 1065 y(.)g(.)393 1064 y(.)g(.)396 1063 y(.)398 1062 y(.)g(.)401 1061 y(.)402 1060 y(.)h(.)405 1059 y(.)407 1058 y(.)f(.)410 1057 y(.)411 1056 y(.)413 1055 y(.)g(.)416 1054 y(.)417 1053 y(.)418 1052 y(.)420 1051 y(.)g(.)423 1050 y(.)424 1049 y(.)426 1048 y(.)427 1047 y(.)428 1046 y(.)430 1045 y(.)431 1044 y(.)432 1043 y(.)434 1042 y(.)435 1041 y(.)436 1040 y(.)438 1039 y(.)439 1038 y(.)440 1037 y(.)442 1036 y(.)443 1035 y(.)444 1034 y(.)445 1033 y(.)447 1032 y(.)448 1031 y(.)449 1030 y(.)450 1029 y(.)452 1027 y(.)453 1026 y(.)454 1025 y(.)455 1024 y(.)456 1023 y(.)457 1021 y(.)459 1020 y(.)460 1019 y(.)461 1018 y(.)462 1017 y(.)463 1015 y(.)464 1014 y(.)465 1013 y(.)466 1011 y(.)467 1010 y(.)468 1009 y(.)469 1008 y(.)470 1006 y(.)471 1005 y(.)472 1004 y(.)473 1002 y(.)474 1001 y(.)475 999 y(.)476 998 y(.)477 997 y(.)478 995 y(.)478 994 y(.)479 992 y(.)480 991 y(.)481 989 y(.)482 988 y(.)483 987 y(.)483 985 y(.)484 984 y(.)485 982 y(.)486 981 y(.)486 979 y(.)487 978 y(.)488 976 y(.)488 975 y(.)489 973 y(.)490 972 y(.)490 970 y(.)491 969 y(.)492 967 y(.)492 965 y(.)493 964 y(.)493 962 y(.)494 961 y(.)494 959 y(.)495 958 y(.)496 956 y(.)496 954 y(.)496 953 y(.)497 951 y(.)497 950 y(.)498 948 y(.)498 946 y(.)499 945 y(.)499 943 y(.)499 942 y(.)500 940 y(.)500 938 y(.)500 937 y(.)501 935 y(.)501 933 y(.)501 932 y(.)501 930 y(.)502 929 y(.)502 927 y(.)502 925 y(.)502 924 y(.)502 922 y(.)503 920 y(.)503 919 y(.)503 917 y(.)503 915 y(.)503 914 y(.)503 912 y(.)503 910 y(.)503 909 y(.)503 907 y(.)1103 906 y(.)1103 904 y(.)1103 903 y(.)1103 901 y(.)1103 899 y(.)1103 898 y(.)1103 896 y(.)1103 894 y(.)1103 893 y(.)1102 891 y(.)1102 889 y(.)1102 888 y(.)1102 886 y(.)1102 884 y(.)1102 883 y(.)1101 881 y(.)1101 879 y(.)1101 878 y(.)1100 876 y(.)1100 875 y(.)1100 873 y(.)1100 871 y(.)1099 870 y(.)1099 868 y(.)1098 866 y(.)1098 865 y(.)1098 863 y(.)1097 862 y(.)1097 860 y(.)1096 858 y(.)1096 857 y(.)1095 855 y(.)1095 854 y(.)1094 852 y(.)1094 850 y(.)1093 849 y(.)1093 847 y(.)1092 846 y(.)1091 844 y(.)1091 843 y(.)1090 841 y(.)1090 840 y(.)1089 838 y(.)1088 837 y(.)1088 835 y(.)1087 834 y(.)1086 832 y(.)1085 831 y(.)1085 829 y(.)1084 828 y(.)1083 826 y(.)1082 825 y(.)1082 823 y(.)1081 822 y(.)1080 820 y(.)1079 819 y(.)1078 818 y(.)1077 816 y(.)1076 815 y(.)1075 813 y(.)1075 812 y(.)1074 811 y(.)1073 809 y(.)1072 808 y(.)1071 807 y(.)1070 805 y(.)1069 804 y(.)1068 803 y(.)1067 801 y(.)1066 800 y(.)1065 799 y(.)1064 797 y(.)1063 796 y(.)1061 795 y(.)1060 794 y(.)1059 792 y(.)1058 791 y(.)1057 790 y(.)1056 789 y(.)1055 788 y(.)1054 786 y(.)1052 785 y(.)1051 784 y(.)1050 783 y(.)1049 782 y(.)1047 781 y(.)1046 780 y(.)1045 778 y(.)1044 777 y(.)1042 776 y(.)1041 775 y(.)1040 774 y(.)1039 773 y(.)1037 772 y(.)1036 771 y(.)1035 770 y(.)1033 769 y(.)1032 768 y(.)1031 767 y(.)1029 766 y(.)1028 765 y(.)1026 764 y(.)e(.)1024 763 y(.)1022 762 y(.)1021 761 y(.)1019 760 y(.)1018 759 y(.)1016 758 y(.)g(.)1014 757 y(.)1012 756 y(.)1011 755 y(.)f(.)1008 754 y(.)1006 753 y(.)1005 752 y(.)g(.)1002 751 y(.)1000 750 y(.)h(.)997 749 y(.)f(.)994 748 y(.)992 747 y(.)h(.)989 746 y(.)g(.)986 745 y(.)g(.)983 744 y(.)f(.)980 743 y(.)g(.)977 742 y(.)g(.)g(.)972 741 y(.)g(.)g(.)967 740 y(.)g(.)h(.)962 739 y(.)f(.)h(.)f(.)955 738 y(.)h(.)f(.)g(.)h(.)f(.)945 737 y(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)922 738 y(.)g(.)f(.)g(.)h(.)f(.)912 739 y(.)h(.)f(.)g(.)906 740 y(.)g(.)g(.)h(.)899 741 y(.)g(.)896 742 y(.)f(.)h(.)891 743 y(.)g(.)888 744 y(.)f(.)885 745 y(.)g(.)882 746 y(.)g(.)878 747 y(.)h(.)875 748 y(.)g(.)872 749 y(.)871 750 y(.)f(.)868 751 y(.)866 752 y(.)h(.)863 753 y(.)862 754 y(.)f(.)859 755 y(.)857 756 y(.)856 757 y(.)g(.)853 758 y(.)851 759 y(.)850 760 y(.)848 761 y(.)847 762 y(.)h(.)844 763 y(.)843 764 y(.)841 765 y(.)840 766 y(.)839 767 y(.)837 768 y(.)836 769 y(.)835 770 y(.)833 771 y(.)832 772 y(.)831 773 y(.)829 774 y(.)828 775 y(.)827 776 y(.)825 777 y(.)824 778 y(.)823 779 y(.)822 780 y(.)820 781 y(.)819 782 y(.)818 784 y(.)817 785 y(.)816 786 y(.)814 787 y(.)813 788 y(.)812 790 y(.)811 791 y(.)810 792 y(.)809 793 y(.)808 794 y(.)807 796 y(.)805 797 y(.)804 798 y(.)803 800 y(.)802 801 y(.)801 802 y(.)800 803 y(.)799 805 y(.)798 806 y(.)797 807 y(.)796 809 y(.)795 810 y(.)794 811 y(.)794 813 y(.)793 814 y(.)792 816 y(.)791 817 y(.)790 818 y(.)789 820 y(.)788 821 y(.)787 823 y(.)787 824 y(.)786 826 y(.)785 827 y(.)784 829 y(.)784 830 y(.)783 832 y(.)782 833 y(.)781 835 y(.)781 836 y(.)780 838 y(.)779 839 y(.)779 841 y(.)778 842 y(.)777 844 y(.)777 845 y(.)776 847 y(.)776 848 y(.)775 850 y(.)775 852 y(.)774 853 y(.)774 855 y(.)773 856 y(.)773 858 y(.)772 859 y(.)772 861 y(.)771 863 y(.)771 864 y(.)770 866 y(.)770 868 y(.)770 869 y(.)769 871 y(.)769 872 y(.)769 874 y(.)768 876 y(.)768 877 y(.)768 879 y(.)767 881 y(.)767 882 y(.)767 884 y(.)767 885 y(.)767 887 y(.)766 889 y(.)766 890 y(.)766 892 y(.)766 894 y(.)766 895 y(.)766 897 y(.)766 899 y(.)766 900 y(.)766 902 y(.)766 904 y(.)766 905 y(.)766 907 y(.)766 909 y(.)766 910 y(.)766 912 y(.)766 914 y(.)766 915 y(.)766 917 y(.)766 919 y(.)766 920 y(.)766 922 y(.)767 924 y(.)767 925 y(.)767 927 y(.)767 929 y(.)767 930 y(.)768 932 y(.)768 933 y(.)768 935 y(.)768 937 y(.)769 938 y(.)769 940 y(.)769 942 y(.)770 943 y(.)770 945 y(.)771 946 y(.)771 948 y(.)771 950 y(.)772 951 y(.)772 953 y(.)773 954 y(.)773 956 y(.)774 958 y(.)774 959 y(.)775 961 y(.)775 962 y(.)776 964 y(.)776 965 y(.)777 967 y(.)778 969 y(.)778 970 y(.)779 972 y(.)780 973 y(.)780 975 y(.)781 976 y(.)782 978 y(.)782 979 y(.)783 981 y(.)784 982 y(.)785 984 y(.)785 985 y(.)786 987 y(.)787 988 y(.)788 989 y(.)789 991 y(.)789 992 y(.)790 994 y(.)791 995 y(.)792 997 y(.)793 998 y(.)794 999 y(.)795 1001 y(.)796 1002 y(.)797 1003 y(.)798 1005 y(.)799 1006 y(.)800 1008 y(.)801 1009 y(.)802 1010 y(.)803 1011 y(.)804 1013 y(.)805 1014 y(.)806 1015 y(.)807 1017 y(.)808 1018 y(.)809 1019 y(.)810 1020 y(.)811 1021 y(.)812 1023 y(.)814 1024 y(.)815 1025 y(.)816 1026 y(.)817 1027 y(.)818 1029 y(.)820 1030 y(.)821 1031 y(.)822 1032 y(.)823 1033 y(.)825 1034 y(.)826 1035 y(.)827 1036 y(.)828 1037 y(.)830 1038 y(.)831 1039 y(.)832 1040 y(.)834 1041 y(.)835 1042 y(.)836 1043 y(.)838 1044 y(.)839 1045 y(.)840 1046 y(.)842 1047 y(.)843 1048 y(.)845 1049 y(.)846 1050 y(.)847 1051 y(.)j(.)850 1052 y(.)852 1053 y(.)853 1054 y(.)855 1055 y(.)f(.)858 1056 y(.)859 1057 y(.)861 1058 y(.)g(.)864 1059 y(.)865 1060 y(.)h(.)868 1061 y(.)870 1062 y(.)f(.)873 1063 y(.)874 1064 y(.)h(.)877 1065 y(.)g(.)880 1066 y(.)g(.)884 1067 y(.)f(.)887 1068 y(.)g(.)890 1069 y(.)h(.)893 1070 y(.)g(.)g(.)898 1071 y(.)g(.)f(.)903 1072 y(.)h(.)f(.)908 1073 y(.)h(.)f(.)h(.)f(.)916 1074 y(.)h(.)f(.)h(.)g(.)f(.)h(.)928 1075 y(.)f(.)h(.)g(.)f(.)h(.)g(.)f (.)h(.)943 1074 y(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)956 1073 y(.)h(.)f(.)h(.)962 1072 y(.)g(.)g(.)967 1071 y(.)g(.)g(.)972 1070 y(.)g(.)f(.)977 1069 y(.)h(.)980 1068 y(.)g(.)983 1067 y(.)g(.)987 1066 y(.)f(.)990 1065 y(.)g(.)993 1064 y(.)g(.)996 1063 y(.)998 1062 y(.)g(.)1001 1061 y(.)1002 1060 y(.)h(.)1005 1059 y(.)1007 1058 y(.)f(.)1010 1057 y(.)1011 1056 y(.)1013 1055 y(.)g(.)1016 1054 y(.)1017 1053 y(.)1018 1052 y(.)1020 1051 y(.)g(.)1023 1050 y(.)1024 1049 y(.)1026 1048 y(.)1027 1047 y(.)1028 1046 y(.)1030 1045 y(.)1031 1044 y(.)1032 1043 y(.)1034 1042 y(.)1035 1041 y(.)1036 1040 y(.)1038 1039 y(.)1039 1038 y(.)1040 1037 y(.)1042 1036 y(.)1043 1035 y(.)1044 1034 y(.)1045 1033 y(.)1047 1032 y(.)1048 1031 y(.)1049 1030 y(.)1050 1029 y(.)1052 1027 y(.)1053 1026 y(.)1054 1025 y(.)1055 1024 y(.)1056 1023 y(.)1057 1021 y(.)1058 1020 y(.)1060 1019 y(.)1061 1018 y(.)1062 1017 y(.)1063 1015 y(.)1064 1014 y(.)1065 1013 y(.)1066 1011 y(.)1067 1010 y(.)1068 1009 y(.)1069 1008 y(.)1070 1006 y(.)1071 1005 y(.)1072 1004 y(.)1073 1002 y(.)1074 1001 y(.)1075 999 y(.)1076 998 y(.)1077 997 y(.)1078 995 y(.)1078 994 y(.)1079 992 y(.)1080 991 y(.)1081 989 y(.)1082 988 y(.)1083 987 y(.)1083 985 y(.)1084 984 y(.)1085 982 y(.)1086 981 y(.)1086 979 y(.)1087 978 y(.)1088 976 y(.)1088 975 y(.)1089 973 y(.)1090 972 y(.)1090 970 y(.)1091 969 y(.)1092 967 y(.)1092 965 y(.)1093 964 y(.)1093 962 y(.)1094 961 y(.)1094 959 y(.)1095 958 y(.)1096 956 y(.)1096 954 y(.)1096 953 y(.)1097 951 y(.)1097 950 y(.)1098 948 y(.)1098 946 y(.)1099 945 y(.)1099 943 y(.)1099 942 y(.)1100 940 y(.)1100 938 y(.)1100 937 y(.)1101 935 y(.)1101 933 y(.)1101 932 y(.)1101 930 y(.)1102 929 y(.)1102 927 y(.)1102 925 y(.)1102 924 y(.)1102 922 y(.)1103 920 y(.)1103 919 y(.)1103 917 y(.)1103 915 y(.)1103 914 y(.)1103 912 y(.)1103 910 y(.)1103 909 y(.)1103 907 y(.)334 906 y(.)335 904 y(.)336 903 y(.)337 901 y(.)337 900 y(.)338 898 y(.)339 897 y(.)340 896 y(.)340 894 y(.)341 893 y(.)342 891 y(.)343 890 y(.)343 888 y(.)344 887 y(.)345 885 y(.)345 884 y(.)346 882 y(.)347 881 y(.)348 879 y(.)348 878 y(.)349 876 y(.)350 875 y(.)351 873 y(.)351 872 y(.)352 870 y(.)353 869 y(.)354 867 y(.)354 866 y(.)355 864 y(.)356 863 y(.)357 861 y(.)357 860 y(.)358 858 y(.)359 857 y(.)360 855 y(.)360 854 y(.)361 852 y(.)362 851 y(.)363 849 y(.)363 848 y(.)364 846 y(.)365 845 y(.)366 844 y(.)366 842 y(.)367 841 y(.)368 839 y(.)369 838 y(.)369 836 y(.)370 835 y(.)371 833 y(.)371 832 y(.)372 830 y(.)373 829 y(.)374 827 y(.)374 826 y(.)375 824 y(.)376 823 y(.)377 821 y(.)377 820 y(.)378 818 y(.)379 817 y(.)380 815 y(.)380 814 y(.)381 812 y(.)382 811 y(.)383 809 y(.)383 808 y(.)384 806 y(.)385 805 y(.)386 803 y(.)386 802 y(.)387 800 y(.)388 799 y(.)389 797 y(.)389 796 y(.)390 795 y(.)391 793 y(.)392 792 y(.)392 790 y(.)393 789 y(.)394 787 y(.)395 786 y(.)395 784 y(.)396 783 y(.)397 781 y(.)397 780 y(.)398 778 y(.)399 777 y(.)400 775 y(.)400 774 y(.)401 772 y(.)402 771 y(.)403 769 y(.)403 768 y(.)404 766 y(.)405 765 y(.)406 763 y(.)406 762 y(.)407 760 y(.)408 759 y(.)409 757 y(.)409 756 y(.)403 786 y(.)403 784 y(.)403 783 y(.)404 781 y(.)404 779 y(.)404 778 y(.)405 776 y(.)405 774 y(.)406 773 y(.)406 771 y(.)406 769 y(.)407 768 y(.)407 766 y(.)407 764 y(.)408 763 y(.)408 761 y(.)409 759 y(.)409 758 y(.)409 756 y(.)f(.)408 757 y(.)407 759 y(.)406 760 y(.)405 761 y(.)404 762 y(.)403 764 y(.)402 765 y(.)400 766 y(.)399 768 y(.)398 769 y(.)397 770 y(.)396 772 y(.)395 773 y(.)394 774 y(.)393 775 y(.)392 777 y(.)390 778 y(.)389 779 y(.)p 920 906 38 3 v 937 923 3 38 v 822 756 a(.)823 757 y(.)823 759 y(.)824 760 y(.)825 762 y(.)826 763 y(.)826 765 y(.)827 766 y(.)828 768 y(.)829 769 y(.)829 771 y(.)830 772 y(.)831 774 y(.)832 775 y(.)832 777 y(.)833 778 y(.)834 780 y(.)835 781 y(.)835 783 y(.)836 784 y(.)837 786 y(.)838 787 y(.)838 789 y(.)839 790 y(.)840 792 y(.)841 793 y(.)p 39 681 1800 3 v 39 156 V 39 1206 V 637 680 3 526 v 417 261 a(.)416 259 y(.)416 258 y(.)416 256 y(.)415 254 y(.)415 253 y(.)414 251 y(.)414 249 y(.)414 248 y(.)413 246 y(.)413 244 y(.)412 243 y(.)412 241 y(.)411 239 y(.)411 238 y(.)411 236 y(.)410 234 y(.)410 233 y(.)409 231 y(.)g(.)409 233 y(.)409 234 y(.)408 236 y(.)408 238 y(.)407 239 y(.)407 241 y(.)406 243 y(.)406 244 y(.)406 246 y(.)405 248 y(.)405 249 y(.)404 251 y(.)404 253 y(.)404 254 y(.)403 256 y(.)403 258 y(.)402 259 y(.)402 261 y(.)p 412 530 3 301 v 402 501 a(.)402 503 y(.)403 504 y(.)403 506 y(.)404 508 y(.)404 509 y(.)404 511 y(.)405 513 y(.)405 514 y(.)406 516 y(.)406 518 y(.)406 519 y(.)407 521 y(.)407 523 y(.)408 524 y(.)408 526 y(.)409 528 y(.)409 529 y(.)409 531 y(.)g(.)410 529 y(.)410 528 y(.)411 526 y(.)411 524 y(.)411 523 y(.)412 521 y(.)412 519 y(.)413 518 y(.)413 516 y(.)414 514 y(.)414 513 y(.)414 511 y(.)415 509 y(.)415 508 y(.)416 506 y(.)416 504 y(.)416 503 y(.)417 501 y(.)192 261 y(.)191 259 y(.)191 258 y(.)191 256 y(.)190 254 y(.)190 253 y(.)189 251 y(.)189 249 y(.)189 248 y(.)188 246 y(.)188 244 y(.)187 243 y(.)187 241 y(.)186 239 y(.)186 238 y(.)186 236 y(.)185 234 y(.)185 233 y(.)184 231 y(.)g(.)184 233 y(.)184 234 y(.)183 236 y(.)183 238 y(.)182 239 y(.)182 241 y(.)181 243 y(.)181 244 y(.)181 246 y(.)180 248 y(.)180 249 y(.)179 251 y(.)179 253 y(.)179 254 y(.)178 256 y(.)178 258 y(.)177 259 y(.)177 261 y(.)p 187 530 V 177 501 a(.)177 503 y(.)178 504 y(.)178 506 y(.)179 508 y(.)179 509 y(.)179 511 y(.)180 513 y(.)180 514 y(.)181 516 y(.)181 518 y(.)181 519 y(.)182 521 y(.)182 523 y(.)183 524 y(.)183 526 y(.)184 528 y(.)184 529 y(.)184 531 y(.)g(.)185 529 y(.)185 528 y(.)186 526 y(.)186 524 y(.)186 523 y(.)187 521 y(.)187 519 y(.)188 518 y(.)188 516 y(.)189 514 y(.)189 513 y(.)189 511 y(.)190 509 y(.)190 508 y(.)191 506 y(.)191 504 y(.)191 503 y(.)192 501 y(.)184 381 y(.)i(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)792 261 y(.)791 259 y(.)791 258 y(.)791 256 y(.)790 254 y(.)790 253 y(.)789 251 y(.)789 249 y(.)789 248 y(.)788 246 y(.)788 244 y(.)787 243 y(.)787 241 y(.)786 239 y(.)786 238 y(.)786 236 y(.)785 234 y(.)785 233 y(.)784 231 y(.)f(.)784 233 y(.)784 234 y(.)783 236 y(.)783 238 y(.)782 239 y(.)782 241 y(.)781 243 y(.)781 244 y(.)781 246 y(.)780 248 y(.)780 249 y(.)779 251 y(.)779 253 y(.)779 254 y(.)778 256 y(.)778 258 y(.)777 259 y(.)777 261 y(.)p 787 530 V 789 531 225 3 v 1012 530 3 301 v 232 w(.)1016 259 y(.)1016 258 y(.)1016 256 y(.)1015 254 y(.)1015 253 y(.)1014 251 y(.)1014 249 y(.)1014 248 y(.)1013 246 y(.)1013 244 y(.)1012 243 y(.)1012 241 y(.)1011 239 y(.)1011 238 y(.)1011 236 y(.)1010 234 y(.)1010 233 y(.)1009 231 y(.)g(.)1009 233 y(.)1009 234 y(.)1008 236 y(.)1008 238 y(.)1007 239 y(.)1007 241 y(.)1006 243 y(.)1006 244 y(.)1006 246 y(.)1005 248 y(.)1005 249 y(.)1004 251 y(.)1004 253 y(.)1004 254 y(.)1003 256 y(.)1003 258 y(.)1002 259 y(.)1002 261 y(.)532 b(.)1541 259 y(.)1541 258 y(.)1541 256 y(.)1540 254 y(.)1540 253 y(.)1539 251 y(.)1539 249 y(.)1539 248 y(.)1538 246 y(.)1538 244 y(.)1537 243 y(.)1537 241 y(.)1536 239 y(.)1536 238 y(.)1536 236 y(.)1535 234 y(.)1535 233 y(.)1534 231 y(.)-8 b(.)1534 233 y(.)1534 234 y(.)1533 236 y(.)1533 238 y(.)1532 239 y(.)1532 241 y(.)1531 243 y(.)1531 244 y(.)1531 246 y(.)1530 248 y(.)1530 249 y(.)1529 251 y(.)1529 253 y(.)1529 254 y(.)1528 256 y(.)1528 258 y(.)1527 259 y(.)1527 261 y(.)1534 231 y(.)1534 233 y(.)1534 234 y(.)1534 236 y(.)1534 238 y(.)1534 239 y(.)1534 241 y(.)1534 243 y(.)1534 244 y(.)1534 246 y(.)1534 261 y(.)1534 263 y(.)1534 264 y(.)1534 266 y(.)1534 268 y(.)1534 269 y(.)1534 271 y(.)1534 273 y(.)1534 274 y(.)1534 276 y(.)1534 291 y(.)1534 293 y(.)1534 294 y(.)1534 296 y(.)1534 298 y(.)1534 299 y(.)1534 301 y(.)1534 303 y(.)1534 304 y(.)1534 306 y(.)1534 321 y(.)1534 323 y(.)1534 324 y(.)1534 326 y(.)1534 328 y(.)1534 329 y(.)1534 331 y(.)1534 333 y(.)1534 334 y(.)1534 336 y(.)1534 351 y(.)1534 353 y(.)1534 354 y(.)1534 356 y(.)1534 358 y(.)1534 359 y(.)1534 361 y(.)1534 363 y(.)1534 364 y(.)1534 366 y(.)1534 381 y(.)1534 383 y(.)1534 384 y(.)1534 386 y(.)1534 388 y(.)1534 389 y(.)1534 391 y(.)1534 393 y(.)1534 394 y(.)1534 396 y(.)1534 411 y(.)1534 413 y(.)1534 414 y(.)1534 416 y(.)1534 418 y(.)1534 419 y(.)1534 421 y(.)1534 423 y(.)1534 424 y(.)1534 426 y(.)1534 441 y(.)1534 443 y(.)1534 444 y(.)1534 446 y(.)1534 448 y(.)1534 449 y(.)1534 451 y(.)1534 453 y(.)1534 454 y(.)1534 456 y(.)1534 471 y(.)1534 473 y(.)1534 474 y(.)1534 476 y(.)1534 478 y(.)1534 479 y(.)1534 481 y(.)1534 483 y(.)1534 484 y(.)1534 486 y(.)1534 501 y(.)1534 503 y(.)1534 504 y(.)1534 506 y(.)1534 508 y(.)1534 509 y(.)1534 511 y(.)1534 513 y(.)1534 514 y(.)1534 516 y(.)1534 531 y(.)1527 501 y(.)1527 503 y(.)1528 504 y(.)1528 506 y(.)1529 508 y(.)1529 509 y(.)1529 511 y(.)1530 513 y(.)1530 514 y(.)1531 516 y(.)1531 518 y(.)1531 519 y(.)1532 521 y(.)1532 523 y(.)1533 524 y(.)1533 526 y(.)1534 528 y(.)1534 529 y(.)1534 531 y(.)g(.)1535 529 y(.)1535 528 y(.)1536 526 y(.)1536 524 y(.)1536 523 y(.)1537 521 y(.)1537 519 y(.)1538 518 y(.)1538 516 y(.)1539 514 y(.)1539 513 y(.)1539 511 y(.)1540 509 y(.)1540 508 y(.)1541 506 y(.)1541 504 y(.)1541 503 y(.)1542 501 y(.)1414 373 y(.)1413 374 y(.)e(.)1409 375 y(.)h(.)1406 376 y(.)f(.)h(.)1401 377 y(.)f(.)1398 378 y(.)g(.)g(.)1393 379 y(.)g(.)1389 380 y(.)h(.)f(.)1384 381 y(.)i(.)i(.)1388 382 y(.)f(.)1391 383 y(.)h(.)f(.)1396 384 y(.)h(.)1399 385 y(.)g(.)1403 386 y(.)f(.)h(.)1408 387 y(.)f(.)1411 388 y(.)h(.)f(.)1384 381 y(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)1654 388 y(.)-6 b(.)g(.)1659 387 y(.)g(.)1663 386 y(.)f(.)h(.)1668 385 y(.)f(.)1671 384 y(.)h(.)1674 383 y(.)g(.)g(.)1679 382 y(.)g(.)1683 381 y(.)f(.)f(.)1683 380 y(.)e(.)g(.)1678 379 y(.)g(.)1674 378 y(.)h(.)f(.)1669 377 y(.)h(.)1666 376 y(.)f(.)h(.)1661 375 y(.)f(.)1658 374 y(.)g(.)1654 373 y(.)p 1837 1205 3 1050 v 1237 1205 V 1464 1056 282 3 v 1711 1063 a(.)j(.)h(.)1716 1062 y(.)f(.)1719 1061 y(.)h(.)f(.)1724 1060 y(.)h(.)1727 1059 y(.)g(.)1731 1058 y(.)f(.)h(.)1736 1057 y(.)f(.)1739 1056 y(.)h(.)e(.)1739 1055 y(.)e(.)h(.)1734 1054 y(.)f(.)1731 1053 y(.)g(.)g(.)1726 1052 y(.)g(.)1722 1051 y(.)h(.)f(.)1717 1050 y(.)h(.)1714 1049 y(.)f(.)1711 1048 y(.)1309 1056 y(.)k(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)7 b(.)-6 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)7 b(.)1422 962 y(.)1423 961 y(.)1425 960 y(.)1426 959 y(.)1427 958 y(.)1428 957 y(.)1430 956 y(.)1431 955 y(.)1432 954 y(.)1434 953 y(.)1435 952 y(.)1436 951 y(.)1438 950 y(.)1439 949 y(.)1440 948 y(.)1441 947 y(.)1443 946 y(.)1444 945 y(.)1445 944 y(.)1447 943 y(.)1448 942 y(.)1449 941 y(.)1451 940 y(.)1452 939 y(.)1453 937 y(.)1455 936 y(.)1456 935 y(.)1457 934 y(.)1458 933 y(.)1460 932 y(.)1461 931 y(.)1462 930 y(.)1464 929 y(.)1465 928 y(.)1466 927 y(.)1468 926 y(.)1469 925 y(.)1470 924 y(.)1472 923 y(.)1473 922 y(.)1474 921 y(.)1475 920 y(.)1477 919 y(.)1478 918 y(.)1479 917 y(.)1481 916 y(.)1482 915 y(.)1483 914 y(.)1485 913 y(.)1486 912 y(.)1487 911 y(.)1489 910 y(.)1490 909 y(.)1491 908 y(.)1492 907 y(.)1494 906 y(.)1495 905 y(.)1496 904 y(.)1498 903 y(.)1499 902 y(.)1500 901 y(.)1502 900 y(.)1503 899 y(.)1504 897 y(.)1505 896 y(.)1507 895 y(.)1508 894 y(.)1509 893 y(.)1511 892 y(.)1512 891 y(.)1513 890 y(.)1515 889 y(.)1516 888 y(.)1517 887 y(.)1519 886 y(.)1520 885 y(.)1521 884 y(.)1522 883 y(.)1524 882 y(.)1525 881 y(.)1526 880 y(.)1528 879 y(.)1529 878 y(.)1530 877 y(.)1532 876 y(.)1533 875 y(.)1534 874 y(.)1536 873 y(.)1537 872 y(.)1538 871 y(.)1539 870 y(.)1541 869 y(.)1542 868 y(.)1543 867 y(.)1545 866 y(.)1546 865 y(.)1547 864 y(.)1549 863 y(.)1550 862 y(.)1551 861 y(.)1552 860 y(.)1554 858 y(.)1555 857 y(.)1556 856 y(.)1558 855 y(.)1559 854 y(.)1560 853 y(.)1562 852 y(.)1563 851 y(.)1564 850 y(.)1566 849 y(.)1567 848 y(.)1568 847 y(.)1569 846 y(.)1571 845 y(.)1572 844 y(.)1573 843 y(.)1575 842 y(.)1576 841 y(.)1577 840 y(.)1579 839 y(.)1580 838 y(.)1581 837 y(.)1583 836 y(.)1584 835 y(.)1585 834 y(.)1586 833 y(.)1588 832 y(.)1589 831 y(.)1590 830 y(.)1592 829 y(.)1593 828 y(.)1594 827 y(.)1596 826 y(.)1597 825 y(.)1598 824 y(.)1599 823 y(.)1601 822 y(.)1602 821 y(.)1603 820 y(.)1605 818 y(.)1606 817 y(.)1607 816 y(.)1609 815 y(.)1610 814 y(.)1611 813 y(.)1613 812 y(.)1614 811 y(.)1615 810 y(.)1616 809 y(.)1618 808 y(.)1619 807 y(.)1620 806 y(.)1622 805 y(.)1623 804 y(.)1624 803 y(.)1626 802 y(.)1627 801 y(.)1628 800 y(.)1630 799 y(.)1631 798 y(.)1632 797 y(.)1633 796 y(.)1635 795 y(.)1636 794 y(.)1637 793 y(.)1639 792 y(.)1640 791 y(.)1641 790 y(.)1643 789 y(.)1644 788 y(.)1645 787 y(.)1646 786 y(.)1648 785 y(.)1649 784 y(.)1650 783 y(.)1652 782 y(.)1653 781 y(.)1654 780 y(.)1656 778 y(.)1657 777 y(.)1658 776 y(.)1660 775 y(.)1661 774 y(.)1662 773 y(.)1663 772 y(.)1665 771 y(.)1666 770 y(.)1667 769 y(.)1669 768 y(.)1670 767 y(.)1671 766 y(.)1673 765 y(.)1674 764 y(.)1675 763 y(.)1677 762 y(.)1678 761 y(.)1679 760 y(.)1680 759 y(.)1682 758 y(.)1683 757 y(.)1684 756 y(.)1665 780 y(.)1667 779 y(.)1668 778 y(.)1669 776 y(.)1670 775 y(.)1671 774 y(.)1672 772 y(.)1673 771 y(.)1674 769 y(.)1675 768 y(.)1676 767 y(.)1677 765 y(.)1678 764 y(.)1679 763 y(.)1680 761 y(.)1681 760 y(.)1682 759 y(.)1683 757 y(.)1684 756 y(.)-8 b(.)1683 757 y(.)e(.)1680 758 y(.)1678 759 y(.)h(.)1675 760 y(.)1673 761 y(.)1672 762 y(.)f(.)1669 763 y(.)1667 764 y(.)h(.)1664 765 y(.)1662 766 y(.)g(.)1659 767 y(.)1658 768 y(.)1656 769 y(.)1309 1056 y(.)1311 1055 y(.)1312 1054 y(.)1313 1053 y(.)1314 1052 y(.)1316 1051 y(.)1317 1050 y(.)1318 1048 y(.)1320 1047 y(.)1321 1046 y(.)1332 1037 y(.)1334 1036 y(.)1335 1035 y(.)1336 1034 y(.)1338 1032 y(.)1339 1031 y(.)1340 1030 y(.)1341 1029 y(.)1343 1028 y(.)1344 1027 y(.)1355 1017 y(.)1357 1016 y(.)1358 1015 y(.)1359 1014 y(.)1361 1013 y(.)1362 1012 y(.)1363 1011 y(.)1364 1010 y(.)1366 1009 y(.)1367 1008 y(.)1379 998 y(.)1380 997 y(.)1381 996 y(.)1382 995 y(.)1384 994 y(.)1385 993 y(.)1386 992 y(.)1387 991 y(.)1389 990 y(.)1390 989 y(.)1402 979 y(.)1403 978 y(.)1404 977 y(.)1405 976 y(.)1407 975 y(.)1408 974 y(.)1409 973 y(.)1410 972 y(.)1412 971 y(.)1413 970 y(.)p 37 1205 3 1050 v 339 942 a Ft(C)339 830 y(R)920 942 y(C)789 773 y(B)837 1167 y(Out-circle)-785 b(Out-circle)170 755 y Fg(X)919 b(X)170 605 y(In\014nite)15 b(strip)132 380 y Ft(A)276 b(B)732 605 y(Semi-in\014nite)18 b(strip)294 286 y(X)568 b(X)750 511 y(A)248 b(B)1464 605 y(Plane)1745 886 y(X)1482 1036 y(A)191 b(B)1595 792 y(D)1428 1167 y(Plane)16 b(sector)1459 1056 y Fi(.)1459 1054 y(.)1459 1053 y(.)1459 1051 y(.)1459 1049 y(.)1459 1048 y(.)1459 1046 y(.)1459 1044 y(.)1459 1043 y(.)1459 1041 y(.)1458 1039 y(.)1458 1038 y(.)1458 1036 y(.)1458 1034 y(.)1458 1033 y(.)1457 1031 y(.)1457 1029 y(.)1457 1028 y(.)1456 1026 y(.)1456 1025 y(.)1456 1023 y(.)1455 1021 y(.)1455 1020 y(.)1455 1018 y(.)1454 1017 y(.)1454 1015 y(.)1453 1013 y(.)1453 1012 y(.)1452 1010 y(.)1452 1009 y(.)1451 1007 y(.)1451 1005 y(.)1450 1004 y(.)1449 1002 y(.)1449 1001 y(.)1448 999 y(.)1448 998 y(.)1447 996 y(.)1446 995 y(.)1446 993 y(.)1445 992 y(.)1444 990 y(.)1443 989 y(.)1443 987 y(.)1442 986 y(.)1441 984 y(.)1440 983 y(.)1440 981 y(.)1439 980 y(.)1438 978 y(.)1437 977 y(.)1436 976 y(.)1435 974 y(.)1434 973 y(.)1433 971 y(.)1432 970 y(.)1431 969 y(.)1430 967 y(.)1429 966 y(.)1428 965 y(.)1427 963 y(.)1426 962 y(.)1425 961 y(.)1424 960 y(.)1666 1056 y(.)1666 1054 y(.)1666 1053 y(.)1666 1051 y(.)1666 1049 y(.)1666 1048 y(.)1666 1046 y(.)1666 1044 y(.)1665 1043 y(.)1665 1041 y(.)1664 1026 y(.)1664 1024 y(.)1664 1023 y(.)1664 1021 y(.)1664 1019 y(.)1664 1018 y(.)1663 1016 y(.)1663 1014 y(.)1663 1013 y(.)1663 1011 y(.)1661 996 y(.)1660 995 y(.)1660 993 y(.)1660 991 y(.)1659 990 y(.)1659 988 y(.)1659 986 y(.)1659 985 y(.)1658 983 y(.)1658 982 y(.)1654 967 y(.)1654 965 y(.)1654 964 y(.)1653 962 y(.)1653 960 y(.)1652 959 y(.)1652 957 y(.)1651 956 y(.)1651 954 y(.)1650 952 y(.)1646 938 y(.)1645 937 y(.)1645 935 y(.)1644 933 y(.)1643 932 y(.)1643 930 y(.)1642 929 y(.)1642 927 y(.)1641 926 y(.)1640 924 y(.)1635 910 y(.)1634 909 y(.)1633 907 y(.)1633 906 y(.)1632 904 y(.)1631 903 y(.)1630 901 y(.)1630 900 y(.)1629 898 y(.)1628 897 y(.)1621 883 y(.)1620 882 y(.)1620 881 y(.)1619 879 y(.)1618 878 y(.)1617 876 y(.)1616 875 y(.)1615 873 y(.)1615 872 y(.)1614 871 y(.)1606 858 y(.)1605 856 y(.)1604 855 y(.)1603 854 y(.)1602 852 y(.)1601 851 y(.)1600 850 y(.)1599 848 y(.)1598 847 y(.)1597 846 y(.)1588 834 y(.)1587 832 y(.)1586 831 y(.)1585 830 y(.)1584 828 y(.)1583 827 y(.)451 1304 y Ft(Figure)f(2:)20 b(In\014nite)c(regions)g(a)o(v)m(ailable)h(in)f Fr(Cubpac)o(k)p Fn(++)p Ft(.)60 1442 y Fn(OUT)p 135 1442 15 2 v 17 w(CIRCLE)32 b Ft(The)17 b(same)f(as)g Fn(CIRCLE)p Ft(,)f(except)i(that)e(the)i(in)o (tegration)f(region)h(is)g(the)f(complemen)o(t)h(of)151 1498 y(the)e(disk.)60 1594 y Fn(PLANE)39 b Ft(The)20 b(in)o(tegration)g(region)g(is)g(the)g(whole)h(t)o(w)o(o-dimensional)f (plane.)35 b(Strictly)21 b(sp)q(eaking,)g(no)151 1650 y(parameters)13 b(are)g(necessary)l(,)h(but)g(the)f(in)o(tegration)h (routines)g(use)g(form)o(ulas)f(with)h(appro)o(ximately)151 1706 y(half)e(their)g(p)q(oin)o(ts)g(inside)h(an)f(ellipse)i(cen)o (tred)e(at)e Fn(Center)h Ft(and)h(ha)o(ving)g(axes)f Fn(ScaleX)f Ft(and)i Fn(ScaleY)o Fm(:)151 1763 y Ft(If)21 b(y)o(ou)g(kno)o(w)f(where)h(in)h(the)f(plane)h(the)f(action)g(tak)o (es)f(place,)j(y)o(ou)d(can)h(sa)o(v)o(e)g(some)f(function)151 1819 y(ev)m(aluations)15 b(b)o(y)f(supplying)h(these.)20 b(Otherwise)14 b(the)g(v)m(alue)h(giv)o(en)f(for)f(the)h(ellipse)i (defaults)e(to)f(the)151 1876 y(unit)j(circle.)151 1952 y(A)o(t)10 b(this)g(p)q(oin)o(t,)i(some)e(users)g(migh)o(t)g(\014nd)h (it)f(useful)h(to)f(kno)o(w)g(more)f(details.)19 b(The)11 b(cubature)f(form)o(ula)151 2008 y(that)17 b(is)h(initially)i(applied)f (for)e(this)h(region)g(can)f(b)q(e)h(transformed)f(b)o(y)g(an)g (a\014ne)h(transformation)151 2065 y(to)d(giv)o(e)g(an)g(appro)o (ximation)g(to)598 2126 y Ff(Z)640 2139 y Fe(1)621 2220 y(\0001)693 2126 y Ff(Z)735 2139 y Fe(1)717 2220 y(\0001)789 2183 y Fm(e)810 2164 y Fl(\()p Fd(a)p Fl(\()p Fd(x)p Fe(\000)p Fd(c)919 2168 y Fc(x)938 2164 y Fl(\)\))966 2153 y Fb(2)983 2164 y Fl(+\()p Fd(b)p Fl(\()p Fd(y)q Fe(\000)p Fd(c)1113 2168 y Fc(y)1133 2164 y Fl(\)\))1161 2153 y Fb(2)1180 2183 y Fm(f)5 b Ft(\()p Fm(x;)j(y)r Ft(\))g(d)p Fm(x)g Ft(d)p Fm(y)151 2306 y Ft(while)20 b(the)f(cubature)g(form)o(ula)f(main)o(tains)h(its)g(degree.)31 b(W)l(e)19 b(use)g(this)g(with)g Fm(a)g Ft(=)f Fn(ScaleX)p Ft(,)h Fm(b)f Ft(=)151 2362 y Fn(ScaleY)e Ft(and)g Fm(c)420 2369 y Fd(x)456 2362 y Ft(=)f Fn(Center)p Fm(:)p Fn(X)n Fm(;)8 b(c)726 2369 y Fd(y)760 2362 y Ft(=)15 b Fn(Center)p Fm(:)p Fn(Y)o Ft(.)23 b(The)16 b(fact)g(that)g Fn(Center)p Ft(,)f Fn(ScaleX)g Ft(and)i Fn(ScaleY)151 2419 y Ft(are)12 b(related)g(to)f(an)h(ellipse)i(with)e(appro)o(ximately)g(the)g(same)g (n)o(um)o(b)q(er)g(of)f(p)q(oin)o(ts)i(inside)g(as)f(outside,)151 2475 y(is)h(used)g(to)e(determine)j(a)e(sub)q(division)j(of)c(the)i (plane.)20 b(F)l(or)11 b(details)j(of)d(this)i(algorithm,)g(see)f (Section)151 2532 y(5.4)i(of)h(the)g(pap)q(er)h([2)o(].)60 2627 y Fn(GENERALIZED)p 327 2627 V 16 w(RECTANGLE)33 b Ft(This)18 b(region)f(has)g(three)g(straigh)o(t)g(sides)h(that)e (meet)h(at)g(righ)o(t)g(angles)g(in)151 2683 y(the)f(p)q(oin)o(ts)h Fj(A)f Ft(and)g Fj(B)q Ft(,)g(and)g(one)g(curv)o(ed)h(side.)23 b(The)16 b(p)q(erp)q(endicul)q(ar)i(distance)f(b)q(et)o(w)o(een)g(a)e (p)q(oin)o(t)151 2740 y Fj(P)h Ft(on)g(the)h(directed)g(line)h(segmen)o (t)e Fj(AB)h Ft(and)f(the)g(p)q(oin)o(t)h(on)f(the)g(curv)o(e)h (orthogonally)f(to)f(the)i(left)151 2796 y(of)e Fj(P)g Ft(is)h Fn(Height\()p Fj(P)o Fn(\).)k Ft(It)15 b(is)h(necessary)f(that) g Fn(Height\()p Fj(P)o Fn(\))d Fq(\025)h Ft(0)i(for)g(all)h Fj(P)f Ft(b)q(et)o(w)o(een)g Fj(A)h Ft(and)f Fj(B)q Ft(.)p eop %%Page: 6 9 6 8 bop 37 50 a Ft(6)1136 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h(and)f (L.)g(Pluym)60 199 y Fn(POLAR)p 183 199 15 2 v 17 w(RECTANGLE)29 b Ft(This)17 b(region)e(is)i(b)q(ounded)f(b)o(y)g(the)g(ra)o(ys)e Fm(\022)h Ft(=)f Fm(\013)h Ft(and)h Fm(\022)f Ft(=)e Fm(\014)18 b Ft(\(where)d Fm(\014)h(>)d(\013)p Ft(\))j(and)151 256 y(the)e(arcs)f Fm(r)h Ft(=)f Fn(InnerRadius)f Ft(and)i Fm(r)f Ft(=)g Fn(OuterRadius)f Ft(\(where)i Fn(OuterRadius)d Fm(>)i Fn(InnerRadius)n Ft(\))151 312 y(in)j(p)q(olar)g(co)q(ordinates) f(with)h(origin)g Fn(Center)p Ft(.)j(An)c(ann)o(ulus)h(\()p Fm(\014)f Ft(=)e Fm(\013)d Ft(+)h(2)p Fm(\031)r Ft(\))j(is)h(a)g(sp)q (ecial)i(case.)151 387 y(Alternativ)o(ely)l(,)i(y)o(ou)e(ma)o(y)f(sp)q (ecify)j(the)e(region)h(in)g(terms)f(of)g Fn(Point)p Ft(s:)23 b Fj(A)17 b Ft(and)h Fj(B)f Ft(are)g(the)h(p)q(oin)o(ts)151 444 y(on)g(the)g(ra)o(y)f Fm(\022)h Ft(=)g Fm(\013)g Ft(at)f Fn(InnerRadius)f Ft(and)i Fn(OuterRadius)p Ft(,)f(resp)q(ectiv) o(ely)l(,)j(and)e Fj(D)f Ft(is)i(the)e(p)q(oin)o(t)151 500 y(on)k(the)g(ra)o(y)f Fm(\022)j Ft(=)g Fm(\014)g Ft(at)d Fn(OuterRadius.)35 b Ft(Y)l(ou)21 b(need)h(not)e(sp)q(ecify)i Fj(Center)q Ft(:)31 b(the)21 b(other)g(p)q(oin)o(ts)151 557 y(determine)d(it)f(fully)l(,)h(except)g(when)f Fj(AB)f Fq(?)g Fj(BD)p Fm(:)g Ft(In)i(that)e(case,)h(the)f(region)i(should)f(b) q(e)h(sp)q(eci\014ed)151 613 y(as)f(a)f Fn(RECTANGLE)g Ft(and)h(not)g(as)g(a)f(limiting)j(case)e(of)g(a)g Fn(POLAR)p 1236 613 V 16 w(RECTANGLE)p Ft(.)f(Y)l(ou)h(cannot)g(sp)q(ecify)151 670 y(an)e(ann)o(ulus)i(in)f(terms)e(of)h Fn(Point)p Ft(s.)20 b(Sp)q(ecial)d(cases)e(are)g(a)g(sector)g(\()p Fj(Center)e Ft(=)g Fj(A)q Ft(\))i(and)g(a)g(cut)g(circle)151 726 y(\()p Fj(Center)e Ft(=)g Fj(A)q Ft(,)h Fj(D)e Ft(=)h Fj(B)q Ft(\).)19 b(F)l(rom)14 b(a)g(top)q(ological)h(p)q(oin)o(t)g(of)f (view,)h(p)q(oin)o(ts)g(on)g(either)g(side)h(of)e(the)g(line)151 782 y Fj(AB)h Ft(in)h(a)e(cut)h(circle)i(are)d(not)g(though)o(t)g(of)h (as)f(close)h(to)f(eac)o(h)h(other.)20 b(In)15 b Fq(x)p Ft(10.3)f(w)o(e)g(shall)i(later)f(giv)o(e)151 839 y(an)g(example)h (that)f(illustrates)h(the)f(di\013erence)i(b)q(et)o(w)o(een)e(a)g (circle)i(and)e(a)g(cut)g(circle.)60 933 y Fn(GENERALIZED)p 327 933 V 16 w(SECTOR)25 b Ft(This)13 b(region)g(has)g(t)o(w)o(o)f (straigh)o(t)g(sides)h(and)g(one)g(curv)o(ed)h(side.)20 b(It)13 b(is)g(describ)q(ed)151 989 y(in)23 b(p)q(olar)g(co)q (ordinates)g(measured)g(from)f Fn(Center.)41 b Ft(The)23 b(straigh)o(t)e(sides)j(run)e(along)h(ra)o(ys)f(at)151 1046 y(angles)16 b Fn(Alpha)e Ft(and)h Fn(Beta)g Ft(resp)q(ectiv)o(ely) l(,)i(and)e(the)g(curv)o(ed)h(side)g(is)g(de\014ned)g(b)o(y)f(the)g (function)h Fn(Rho)151 1102 y Ft(as)i(follo)o(ws:)26 b(the)18 b(distance)h(from)f Fn(Center)f Ft(to)h(the)g(curv)o(e)h (along)f(a)g(ra)o(y)f(at)h(an)g(angle)h Fm(\022)h Ft(b)q(et)o(w)o(een) 151 1159 y Fn(Alpha)15 b Ft(and)g Fn(Beta)g Ft(is)g(giv)o(en)h(b)o(y)f Fn(Rho\()p Fm(\022)q Fn(\).)60 1252 y(PARABOLIC)p 279 1252 V 16 w(SEGMENT)28 b Ft(This)14 b(region)h(is)g(b)q(ounded)g(b)o(y) g(a)f(straigh)o(t)f(line)j Fj(AB)f Ft(and)f(a)g(parab)q(olic)h(arc.)20 b(The)151 1309 y(arc)15 b(is)h(de\014ned)g(b)o(y)f(an)h(external)f(p)q (oin)o(t)h Fj(P)f Ft(suc)o(h)h(that)e Fj(AP)i Ft(and)f Fj(BP)g Ft(are)g(tangen)o(ts.)60 1403 y Fn(INFINITE)p 255 1403 V 16 w(STRIP)30 b Ft(The)15 b(line)i(segmen)o(t)e Fj(AB)h Ft(is)f(a)g(diameter)h(of)f(the)g(strip.)60 1496 y Fn(SEMI-INFINITE)p 375 1496 V 16 w(STRIP)34 b Ft(The)18 b(strip)g(lies)h(orthogonally)e(to)g(the)h(left)g(of)f(the)g(directed)i (line)g(segmen)o(t)151 1553 y Fj(AB)q Ft(.)60 1647 y Fn(PLANE)p 183 1647 V 17 w(SECTOR)h Ft(This)11 b(region)g(is)g(b)q (ounded)h(b)o(y)e(the)h(ra)o(ys)f Fm(\022)k Ft(=)f Fm(\013)e Ft(and)f Fm(\022)15 b Ft(=)e Fm(\014)f Ft(\(where)f Fm(\014)j(>)f(\013) p Ft(\))e(and)g(the)f(arc)151 1703 y Fm(r)k Ft(=)f Fj(InnerRadius)i Ft(in)f(p)q(olar)g(co)q(ordinates)g(with)h(origin)f Fn(Center)p Fm(:)e Ft(Alternativ)o(ely)l(,)j(y)o(ou)f(ma)o(y)f(sp)q(ecify)151 1760 y(the)k(region)h(in)g(terms)e(of)h Fn(Point)p Ft(s:)22 b Fj(A)c Ft(is)f(the)h(p)q(oin)o(t)f(on)g(the)g(ra)o(y)f(at)h Fm(\022)g Ft(=)f Fm(\013)i Ft(at)e Fm(r)h Ft(=)f Fj(InnerRadius)q Fm(;)151 1816 y Ft(and)i Fj(B)h Ft(and)f Fj(D)f Ft(are)h(p)q(oin)o(ts)h (on)e(an)h(arc)g Fm(r)g Ft(=)g Fj(OuterRadius)i Ft(\(with)e Fj(OuterRadius)i Fm(>)e Fj(InnerRadius)q Ft(\))151 1873 y(at)k Fm(\022)k Ft(=)f Fm(\013)e Ft(and)g Fm(\022)j Ft(=)f Fm(\014)f Ft(resp)q(ectiv)o(ely)l(.)44 b(Y)l(ou)23 b(need)g(not)f(sp)q(ecify)i Fj(Center)q Ft(:)34 b(the)22 b(other)h(p)q(oin)o(ts)151 1929 y(determine)18 b(it)f(fully)l(,)h (except)g(when)f Fj(AB)f Fq(?)g Fj(BD)p Fm(:)g Ft(In)i(that)e(case,)h (the)f(region)i(should)f(b)q(e)h(sp)q(eci\014ed)151 1985 y(as)d(a)f Fn(SEMI)p 343 1985 V 17 w(INFINITE)p 552 1985 V 16 w(STRIP)g Ft(and)h(not)f(as)h(a)f(limiting)j(case)e(of)f(a)h Fn(PLANE)p 1437 1985 V 16 w(SECTOR)p Ft(.)f(Sp)q(ecial)j(cases)151 2042 y(include)h(the)d(half-plane)i(\()p Fj(D)12 b Ft(=)h(2)p Fj(A)d Fq(\000)h Fj(B)p Ft(\))k(and)g(cut)g(plane)i(\()p Fj(Center)c Ft(=)g Fj(A)p Fm(;)i Fj(D)d Ft(=)h Fj(B)q Ft(\).)108 2148 y(Small)h(example)g(programs)e(that)h(illustrate)h(the) f(use)h(of)f(these)g(simple)i(regions)e(are)g(pro)o(vided)h(in)g(the)37 2205 y(directory)i(Examples.)k(W)l(e)c(refer)f(to)f(the)h(\014le)i Fn(Examples/CONTENTS)c Ft(for)h(its)h(con)o(ten)o(ts.)108 2261 y(As)g(y)o(ou)f(see)h(all)g(names)g(of)f(simple)i(regions)f(con)o (tain)f(upp)q(er)i(case)e(letters)h(only)l(,)g(the)g(comp)q(onen)o(ts)f (of)37 2318 y(comp)q(ound)i(w)o(ords)f(b)q(eing)h(separated)f(b)o(y)g (underscores.)20 b(All)d(classes)f(represen)o(ting)f(simple)i(regions)e (are)37 2374 y(deriv)o(ed)g(from)e(a)g(class)h Fn(COMPOUND)p 637 2374 V 16 w(REGION)p Ft(,)f(whic)o(h)h(also)g(comprises)g(the)g (transformed)e(and)i(sub)q(divided)37 2430 y(regions)i(that)e(arise)i (during)g(the)f(computation.)p eop %%Page: 7 10 7 9 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1182 b Ft(7)37 199 y Fp(5)67 b(The)23 b(in)n(tegrators)37 301 y Fr(Cubpac)o(k)p Fn(++)16 b Ft(uses)h(only)g(one)g(global)g (adaptiv)o(e)g(in)o(tegration)g(algorithm,)f(but)h(to)f(meet)g (di\013ering)i(user)37 357 y(requiremen)o(ts)e(w)o(e)f(ha)o(v)o(e)g (supplied)i(four)e(v)o(ersions)g(of)g(the)g(cen)o(tral)h(routine)f Fn(Integrate)p Ft(.)k(These)c(will)i(b)q(e)37 414 y(discussed)g(in)f (this)g(and)f(the)h(follo)o(wing)f(section.)37 532 y Fs(5.1)56 b(No-fuss)19 b(in)n(tegration)37 618 y Ft(When)e(y)o(ou)f (just)g(w)o(an)o(t)f(to)h(kno)o(w)g(the)g(in)o(tegral)h(of)f(a)g Fn(Function)f(f)h Ft(o)o(v)o(er)f(a)h Fn(COMPOUND)p 1555 618 15 2 v 16 w(REGION)g(CR)p Ft(,)f(y)o(ou)37 675 y(can)h(use)h(the)e (function)i Fn(Integrate\(f,)22 b(CR\))16 b Ft(as)f(in)i(the)e(example) i(in)g(Section)f(2.)22 b(The)16 b(v)m(alue)h(returned)37 731 y(will)g(then)f(b)q(e)g(an)f(appro)o(ximation)g(of)g(the)g(in)o (tegral.)108 788 y(This)20 b(simple)h(v)o(ersion)e(of)g(the)g(in)o (tegrator)f(uses)i(default)g(v)m(alues)g(for)f(the)g(accuracy)g(to)g (whic)o(h)h(the)37 844 y(in)o(tegral)c(should)g(b)q(e)g(ev)m(aluated)g (and)f(the)g(amoun)o(t)g(of)f(w)o(ork)g(p)q(ermitted.)21 b(If)15 b(y)o(ou)g(w)o(an)o(t)f(explicit)j(con)o(trol)37 901 y(o)o(v)o(er)i(the)h(in)o(tegration)f(pro)q(cess,)i(y)o(ou)e(can)h (supply)h(these)e(v)m(alues:)30 b(the)20 b(full)h(header)f(with)g(its)f (default)37 957 y(argumen)o(ts)c(is:)37 1045 y Fn(real)24 b(Integrate\()228 1101 y(Function)f(f,)228 1158 y(COMPOUND_REGION&)f (CR,)228 1214 y(real)i(AbsoluteErrorRequest)d(=)j(0.0,)228 1271 y(real)g(RelativeErrorRequest)d(=)j(DEFAULT_REL_ERR_REQ)d(,)228 1327 y(unsigned)i(long)g(MaxEval)g(=)h(100000\);)37 1415 y Ft(The)19 b(constan)o(t)e Fn(DEFAULT_REL_ERR_REQ)f Ft(is)j(de\014ned)g(in)g(the)g(\014le)g Fn(real.h)p Ft(.)28 b(As)18 b(usual)h(with)g(C)p Fn(++)25 b Ft(y)o(ou)37 1472 y(ma)o(y)15 b(omit)g(an)o(y)g(n)o(um)o(b)q(er)g(of)g(trailing)h (argumen)o(ts)f(for)f(whic)o(h)i(defaults)g(are)f(giv)o(en.)108 1528 y(The)e(in)o(tegrator)e(tries)h(to)g(compute)g(an)h(appro)o (ximation)f(to)f(the)i(in)o(tegral)f(of)g Fn(f)g Ft(on)h Fn(CR)f Ft(whic)o(h)h(satis\014es)520 1612 y Fq(j)p Fn(AbsoluteError)m Fq(j)g(\024)g Fn(AbsoluteErrorRequest)37 1695 y Ft(or)377 1752 y Fq(j)p Fn(AbsoluteError)n Fq(j)g(\024)f(j)p Fn(Integral)o Fq(j)e(\002)g Fn(RelativeErrorRequest)m Fm(;)37 1826 y Ft(whic)o(hev)o(er)15 b(it)e(reac)o(hes)h(\014rst.)19 b(The)13 b(result)h(is)g(returned)g(via)g Fn(Integral)e Ft(and)h Fn(AbsoluteError)p Ft(.)18 b(Ho)o(w)o(ev)o(er)37 1883 y(it)e(will)h(at)d(most)h(do)g Fn(MaxEval)f Ft(function)i(ev)m (aluations.)37 2001 y Fs(5.2)56 b(Adv)m(anced)19 b(in)n(tegration)37 2087 y Ft(If)d(the)g(automatic)f(in)o(tegrator)f(cannot)h(satisfy)h (one)f(of)g(the)h(error)f(requests,)g(the)g(\015ag)h Fn(Success)e Ft(will)j(b)q(e)37 2144 y(set)d(to)f Fn(False)p Ft(;)g(otherwise)h(it)g(will)h(b)q(e)g(set)e(to)g Fn(True)p Ft(.)19 b(The)14 b(\015ag)f Fn(Success)g Ft(cannot)g(b)q(e)i(seen)f (when)g(y)o(ou)g(use)37 2200 y(the)i(simple)g(in)o(tegrator)e(whose)h (only)h(output)e(is)i(a)f(function)g(v)m(alue.)22 b(If)15 b(y)o(ou)f(wish)i(to)f(see)g(it,)g(or)f(to)h(store)37 2257 y(the)h(in)o(tegral)f(and)h(error)e(estimates)h(in)h(v)m(ariables) h(of)d(y)o(our)h(o)o(wn)g(c)o(hoice,)h(the)f(header)g(of)g Fn(Integrate)f Ft(is:)37 2345 y Fn(void)24 b(Integrate\()228 2401 y(Function)f(f,)228 2457 y(COMPOUND_REGION&)f(CR,)228 2514 y(real&)i(Integral,)228 2570 y(real&)g(AbsoluteError,)228 2627 y(Boolean&)f(Success,)228 2683 y(real)h(AbsoluteErrorRequest,)228 2740 y(real)g(RelativeErrorRequest,)228 2796 y(unsigned)f(long)g (MaxEval\);)p eop %%Page: 8 11 8 10 bop 37 50 a Ft(8)1136 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h(and)f (L.)g(Pluym)37 199 y Ft(Note)g(that)g(this)g(v)o(ersion)h(requires)g(y) o(ou)e(to)h(sp)q(ecify)h(all)h(the)e(argumen)o(ts:)k(no)c(default)h(v)m (alues)g(are)f(giv)o(en.)37 256 y(The)h(three)f(reference)h(parameters) e(are)h(used)h(to)f(return)g(computed)g(quan)o(tities.)108 312 y(Tw)o(o)20 b(further)h(v)o(ersions)g(of)g Fn(Integrate)p Ft(,)g(in)o(tended)h(for)e(more)h(complicated)h(situations,)h(are)d (de-)37 369 y(scrib)q(ed)d(in)f(the)f(next)h(section.)108 425 y(F)l(or)j(all)h(four)e(v)o(ersions)i(of)e Fn(Integrate)p Ft(,)h(the)g(in)o(tegral)g(and)h(error)e(estimate)h(are)g(stored)f (with)i(the)37 482 y(region)g Fn(CR)f Ft(itself,)i(and)f(can)f(b)q(e)h (retriev)o(ed)g(at)e(an)o(y)h(stage)g(after)f(in)o(tegration)i(b)o(y)f (the)g Fn(real)g Ft(functions)37 538 y Fn(CR.Integral\(\))14 b Ft(and)h Fn(CR.AbsoluteError\(\))e Ft(resp)q(ectiv)o(ely)l(.)37 679 y Fp(6)67 b(Handling)24 b(collections)f(of)f(regions)37 781 y Ft(Sometimes)f(y)o(ou)e(w)o(an)o(t)g(to)h(in)o(tegrate)f(o)o(v)o (er)g(a)h(collection)i(of)d(regions,)i(rather)e(than)h(o)o(v)o(er)f (one)h(of)g(the)37 837 y(simple)f(regions)d(men)o(tioned)i(ab)q(o)o(v)o (e.)23 b(Supp)q(ose)18 b(for)e(instance)h(that)f(y)o(ou)g(w)o(ould)h (lik)o(e)h(to)e(in)o(tegrate)g(o)o(v)o(er)37 894 y(the)h(house-shap)q (ed)h(region)g(sho)o(wn)e(in)i(Figure)f(3.)24 b(In)17 b Fr(Cubpac)o(k)p Fn(++)f Ft(y)o(ou)h(w)o(ould)g(use)g(a)g (generalization)37 950 y(of)e(a)g Fn(COMPOUND)p 322 950 15 2 v 16 w(REGION)p Ft(,)f(called)j(a)e Fn(REGION)p 820 950 V 16 w(COLLECTION)p Ft(.)f(It)h(go)q(es)g(lik)o(e)h(this:)37 1033 y Fn(REGION_COLLECTION)22 b(House;)37 1090 y(TRIANGLE)h(Roof\()g (Point\(0,1\),)g(Point\(2,1\),)f(Point\(1,2\)\);)37 1146 y(RECTANGLE)h(Walls\()g(Point\(0,0\),)g(Point\(0,1\),)f (Point\(2,0\)\);)37 1259 y(House)i(=)f(Roof)h(+)f(Walls;)37 1372 y(cout)h(<<)f("integral)g(over)g(the)h(house-shaped)e(region)h(")h (<<)f(Integrate\(f,House\);)108 1455 y Ft(Y)l(ou)14 b(can)g(add)f(as)g (man)o(y)h Fn(COMPOUND)p 740 1455 V 16 w(REGION)p Ft(s)e(as)h(y)o(ou)h (lik)o(e,)g(giving)h(a)e Fn(REGION)p 1477 1455 V 16 w(COLLECTION)f Ft(\(whic)o(h)37 1512 y(is)k(itself)h(a)e Fn(COMPOUND)p 427 1512 V 16 w(REGION)p Ft(\).)f(The)i(addition)g(can)g(either)g(use)g (the)f Fn(+)g Ft(op)q(erator)g(as)g(ab)q(o)o(v)o(e,)g(or)g(the)g Fn(+=)37 1568 y Ft(op)q(erator)g(as)g(in)h(C.)108 1625 y(Y)l(ou)g(needn't)f(use)h Fn(REGION)p 589 1625 V 16 w(COLLECTION)e Ft(explicitly)l(,)k(y)o(ou)c(can)i(also)f(do)g(it)h(lik) o(e)g(this:)37 1708 y Fn(...)37 1764 y(cout)24 b(<<)f (Integrate\(f,Roof+Walls\);)p 790 2098 250 4 v 789 2096 4 125 v 1038 2096 V 790 1971 a Fa(\000)832 1930 y(\000)873 1888 y(\000)998 1971 y(@)956 1930 y(@)915 1888 y(@)p 790 1972 250 2 v 776 2244 a Ft(Figure)16 b(3:)j(A)d(house)108 2345 y(After)d(calling)i Fn(Integrate)e Ft(y)o(ou)g(can)g(access)h(the) f(in)o(tegral)h(and)g(error)f(on)g(eac)o(h)g(part)g(of)g(a)h (collection,)37 2401 y(i.e.)e(y)o(ou)f(kno)o(w)g Fn(Roof.Integral\(\))f Ft(as)h(w)o(ell)h(as)f Fn(Walls.Integral\(\))f Ft(et)h(cetera.)19 b(This)12 b(is)g(made)f(p)q(ossible)37 2457 y(b)o(y)k(the)g(implemen)o (tation)i(of)d(the)h(addition)h(op)q(erators)e(for)g Fn(COMPOUND)p 1276 2457 15 2 v 17 w(REGION)p Ft(s.)k(Rather)d(than)g (adding)37 2514 y(a)e(cop)o(y)g(of)g(the)g(original)h Fn(COMPOUND)p 660 2514 V 16 w(REGION)f Ft(to)f(the)h Fn(REGION)p 1106 2514 V 17 w(COLLECTION)e Ft(a)i(reference)h(to)e(its)i (con)o(ten)o(ts)37 2570 y(is)i(stored.)108 2627 y(Y)l(ou)47 b(are)f(allo)o(w)o(ed)h(to)g(in)o(tegrate)f(di\013eren)o(t)h(functions) g(o)o(v)o(er)f(di\013eren)o(t)h(parts)f(of)g(a)37 2683 y Fn(REGION)p 184 2683 V 17 w(COLLECTION)p Ft(,)18 b(whic)o(h)j(ma)o(y) f(for)f(instance)i(b)q(e)g(useful)g(when)g(y)o(our)f(in)o(tegrand)g(is) h(discon)o(tin)o(u-)37 2740 y(ous.)34 b(In)21 b(that)e(case,)h(y)o(ou)g (use)g(a)f(v)o(ersion)h(of)g Fn(Integrate)e Ft(that)h(omits)h(the)g (\014rst)f(argumen)o(t)g(\(i.e.)h(the)37 2796 y(in)o(tegrand\),)15 b(and)h(instead)f(asso)q(ciate)h(an)f(in)o(tegrand)g(with)h(eac)o(h)f (region,)g(lik)o(e)h(this:)p eop %%Page: 9 12 9 11 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1182 b Ft(9)37 199 y Fn(Roof.LocalIntegrand\(f1\);)37 256 y(Walls.LocalIntegrand\(f2\);)37 312 y(cout)24 b(<<)f("the)h(result)f (is)g(")h(<<)g(Integrate\(Roof+Walls\);)37 406 y Ft(The)16 b(full)g(header)g(for)f(this)g(in)o(tegrator)f(is:)37 500 y Fn(real)24 b(Integrate\()228 556 y(COMPOUND_REGION&)e(CR,)228 613 y(real)i(AbsoluteErrorRequest)d(=)j(0.0,)228 669 y(real)g(RelativeErrorRequest)d(=)j(DEFAULT_REL_ERR_REQ)d(,)228 726 y(unsigned)i(long)g(MaxEval)g(=)h(100000\);)37 819 y Ft(A)16 b(complete)g(example)g(is)f(giv)o(en)h(in)g(the)f(\014le)i Fn(Examples/vb15.c)p Ft(.)108 876 y(If)i(y)o(ou)g(forgot)e(to)i(sp)q (ecify)h(the)f(in)o(tegrand)g(using)h Fn(LocalIntegrand\(\))d Ft(for)h(eac)o(h)h(region)h(in)f(y)o(our)37 932 y Fn(REGION)p 184 932 15 2 v 17 w(COLLECTION)11 b Ft(b)q(efore)i(calling)h Fn(Integrate\(\))p Ft(,)d Fr(Cubpac)o(k)p Fn(++)h Ft(will)i(generate)e (an)g(error)g(message.)108 989 y(Similarly)l(,)j(there)e(exists)g(a)g (v)o(ersion)g(of)g(the)g(more)f(elab)q(orate)h Fn(Integrate\(\))e Ft(without)i(the)g Fn(Function)37 1045 y Ft(argumen)o(t.)20 b(The)15 b(full)i(header)e(is:)37 1139 y Fn(void)24 b(Integrate\()228 1196 y(COMPOUND_REGION&)e(CR,)228 1252 y(real&)i(Integral,)228 1308 y(real&)g(AbsoluteError,)228 1365 y(Boolean&)f(Success,)228 1421 y(real)h(AbsoluteErrorRequest,)228 1478 y(real)g (RelativeErrorRequest,)228 1534 y(unsigned)f(long)g(MaxEval\);)37 1628 y Ft(Although)e(the)f(four)g(v)o(ersions)g(of)g Fn(Integrate)f Ft(ha)o(v)o(e)g(the)i(same)e(name,)i(C)p Fn(++)f Ft(deduces)h(whic)o(h)g(one)f(is)37 1685 y(required)d(b)o(y)e (its)g(actual)h(argumen)o(ts.)p eop %%Page: 10 13 10 12 bop 37 50 a Ft(10)1113 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h (and)f(L.)g(Pluym)37 199 y Fp(7)67 b(A)23 b(p)r(ossible)f(pitfall)37 301 y Ft(One)c(feature)e(of)f(the)i(automatic)f(in)o(tegrator)f (requires)i(further)f(men)o(tion.)24 b(If)16 b(y)o(ou)g(e.g.)g(create)g (a)g(trian-)37 357 y(gular)j(region)g(b)o(y)f(sa)o(ying)h Fn(TRIANGLE)k(T1\(A,B,C\))p Ft(,)16 b(then)j(the)g(pac)o(k)m(age)f (will)j(construct)d(an)g(ob)s(ject)g Fn(T1)37 414 y Ft(that)13 b(con)o(tains)h(a)f(data-store)f(to)h(b)q(e)h(used)g(to)f(store)f(all)j (regions)e(created)h(when)g(one)f(in)o(tegrates)g(o)o(v)o(er)g(the)37 470 y(triangle.)21 b(Apart)15 b(from)g(this)h(data-store,)d(the)j(ob)s (ject)f Fn(T1)g Ft(also)g(con)o(tains)g(a)g(n)o(um)o(b)q(er)h(of)f (attributes)g(\(the)37 527 y(total)e(appro)o(ximate)f(in)o(tegral)h (and)g(error)f(estimate,)h(requested)g(absolute)g(and)g(relativ)o(e)h (tolerances,)f(and)37 583 y(a)18 b(coun)o(t)g(of)f(the)h(n)o(um)o(b)q (er)g(of)f(functions)i(ev)m(aluations\))f(all)h(with)f(resp)q(ect)g(to) f(the)h(triangle)h(men)o(tioned.)37 639 y(After)c(in)o(tegration,)g (the)g(original)h(region)f(is)h(no)f(longer)g(a)o(v)m(ailable,)h(but)f (it)g(will)i(ha)o(v)o(e)e(b)q(een)h(replaced)g(b)o(y)37 696 y(a)e Fn(COMPOUND)p 269 696 15 2 v 16 w(REGION)e Ft(consisting)j(of)e(all)h(the)g(transformations)e(and)i(sub)q (divisions)i(that)d(the)h(automatic)37 752 y(in)o(tegrator)h(made.)108 809 y(The)c(adv)m(an)o(tage)f(of)g(this)h(feature)f(is)h(that)f(y)o(ou) g(can)g(no)o(w)g(con)o(tin)o(ue)h(in)o(tegrating)g(\(i.e.)f(without)g (w)o(asting)37 865 y(previous)16 b(computations\))f(if)g(y)o(ou)g (require)h(higher)f(precision:)22 b(for)14 b(example,)i(if)f(the)g(b)q (eha)o(viour)h(of)e(y)o(our)37 922 y(in)o(tegrand)22 b(is)g(unfamiliar)h(to)d(y)o(ou,)i(y)o(ou)f(will)i(b)q(e)f(able)g(to)f (assess)g(the)g(reliabili)q(t)o(y)i(of)e(the)h(computed)37 978 y(in)o(tegrals)13 b(b)o(y)f(prin)o(ting)h(them)f(out)g(for)g (requested)g(tolerances)h(of)f(10)1211 962 y Fe(\000)p Fl(2)1257 978 y Fm(;)c Ft(10)1324 962 y Fe(\000)p Fl(3)1370 978 y Fm(;)g(:)g(:)g(:)h Ft(un)o(til)14 b(y)o(ou)e(are)f(satis\014ed)37 1035 y(with)16 b(the)f(result.)21 b(Details)15 b(on)g(ho)o(w)g(this)h (can)f(b)q(e)h(done)g(are)e(giv)o(en)i(in)g Fq(x)p Ft(8.)108 1091 y(W)l(e)f(are)f(a)o(w)o(are)g(that)g(some)g(users)h(migh)o(t)g (\014nd)g(this)h(a)e(bit)h(di\016cult)i(to)d(liv)o(e)i(with)f(in)g(the) g(b)q(eginning.)37 1148 y(They)e(should)h(remem)o(b)q(er)f(that)f Fr(Cubpac)o(k)p Fn(++)g Ft(is)h(a)g(pac)o(k)m(age)f(to)g(compute)h(in)o (tegrals)g(and)g(not)g(a)f(pac)o(k)m(age)37 1204 y(to)k(manipulate)i (geometric)f(ob)s(jects.)23 b(They)17 b(should)g(k)o(eep)g(in)h(mind)f (that)f(a)g Fn(TRIANGLE)g Ft(is)h(m)o(uc)o(h)f(more)37 1260 y(than)g(just)f(the)h(geometric)f(ob)s(ject.)20 b(Compared)15 b(to)g(existing)i(F)l(ortran)d(77)h(co)q(des,)h(an)f(ob)s (ject)g Fn(TRIANGLE)37 1317 y Ft(replaces)d(at)e(least)h(6)f (parameters)g(in)h(the)g(calling)h(sequence,)g(including)i(a)c(real)h (and)f(an)h(in)o(teger)g(w)o(ork)m(arra)o(y)37 1373 y(F)l(ortran)k(77)f (users)h(ha)o(v)o(e)g(to)g(pro)o(vide.)108 1430 y(As)g(a)g(consequence) i(of)d(this)i(side-e\013ect)g(a)f(sequence)h(of)f(co)q(de)h(lik)o(e)37 1524 y Fn(TRIANGLE)23 b(T1\(A,B,C\);)37 1580 y(Integrate)g(\(f,T1\);)37 1637 y(Integrate)g(\(g,T1\);)37 1730 y Ft(will)17 b(pro)q(duce)f(an)g (error)e(\(A)o(ttempt)g(to)h(mo)q(dify)g(in)o(tegrand)h(during)g(in)o (tegration\).)108 1787 y(If)f(y)o(ou)f(need)h(a)g(cop)o(y)f(of)g(the)h (original)g(region)g(after)f(in)o(tegration)h(\(for)e(example,)i(when)g (y)o(ou)f(wish)i(to)37 1843 y(in)o(tegrate)f(another)g(function)h(o)o (v)o(er)f(the)g(same)g(region\),)g(y)o(ou)g(m)o(ust)f(construct)h(a)g (separate)g(instance.)21 b(It)37 1900 y(is)16 b(not)f(su\016cien)o(t)h (to)e(sa)o(y)37 1994 y Fn(TRIANGLE)23 b(T1\(A,B,C\),)g(T2=T1;)37 2087 y Ft(b)q(ecause)17 b(class)f Fn(COMPOUND)p 508 2087 V 16 w(REGION)f Ft(uses)h(reference)g(seman)o(tics)g(ev)o(erywhere.)21 b Fn(T2)16 b Ft(will)h(not)e(b)q(e)h(another)37 2144 y(triangle)g(with)g(the)g(same)f(sp)q(eci\014cations)i(as)e Fn(T1)g Ft(but)g(another)g(reference)h(to)f(the)g(same)g(triangle.)21 b(After)37 2200 y(calling)e Fn(Integrate\(f,T1\))c Ft(y)o(ou)i(will)h (\014nd)g(that)e Fn(T1.Integral\(\))g Ft(and)h Fn(T2.Integral\(\))e Ft(return)i(the)37 2257 y(same)i(v)m(alue.)32 b(If)19 b(either)h(of)e(the)h(t)o(w)o(o)f(ob)s(jects)g(is)i(destructed)f(or)f (passes)h(out)g(of)f(scop)q(e,)i(y)o(ou)e(can)i(still)37 2313 y(reac)o(h)c(its)f(con)o(ten)o(ts)g(via)g(the)g(other)g(one.)108 2370 y(Y)l(ou)h(m)o(ust)e(therefore)h(sa)o(y)37 2463 y Fn(TRIANGLE)23 b(T1\(A,B,C\),)g(T2\(A,B,C\);)37 2557 y Ft(to)15 b(force)g(the)g(creation)h(of)e(t)o(w)o(o)g(indep)q(enden)o (t)k(copies.)108 2614 y(A)d(complete)h(example)g(is)g(giv)o(en)g(in)g (the)f(\014le)h Fn(Examples/vb9.c)p Ft(.)p eop %%Page: 11 14 11 13 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1160 b Ft(11)37 199 y Fp(8)67 b(Tigh)n(tening)24 b(the)f(tolerance)37 301 y Ft(It)d(can)g(happ)q(en)h(that)f(y)o(ou)f(w)o(an)o(t)g(to)g (compute)h(the)g(in)o(tegral)g(of)f(a)h(certain)g(function)h(o)o(v)o (er)e(a)h(certain)37 357 y(region)g(sev)o(eral)f(times.)33 b(E.g.)e(with)19 b(increasing)i(requested)f(accuracies)g(or)e(with)i (increasing)h(allo)o(w)o(ed)37 414 y(n)o(um)o(b)q(er)16 b(of)f(function)h(ev)m(aluations.)21 b Fr(Cubpac)o(k)p Fn(++)14 b Ft(o\013ers)h(sev)o(eral)g(w)o(a)o(ys)f(to)h(ac)o(hiev)o(e)h (this.)93 507 y(1.)22 b(Rep)q(eated)17 b(calls)f(of)151 620 y Fn(Integrate\(Function)22 b(f,)h(COMPOUND_REGION&)f(CR,)h(...\);) 151 732 y Ft(are)17 b(allo)o(w)o(ed)h(if)h Fn(f)e Ft(and)h Fn(CR)f Ft(are)g(not)h(c)o(hanged)g(b)o(y)f Fk(you)h Ft(b)q(et)o(w)o(een)g(successiv)o(e)h(calls.)28 b(\(Remem)o(b)q(er)151 789 y(that)15 b Fn(CR)f Ft(is)i(c)o(hanged)g(b)o(y)f Fn(Integrate)p Ft(!\))93 883 y(2.)22 b(Rep)q(eated)17 b(calls)f(of)151 995 y Fn(Integrate\(COMPOUND_REGION&)k(CR,)k(...\);) 151 1108 y Ft(are)15 b(allo)o(w)o(ed)h(if)f(b)q(efore)h(the)f(\014rst)g (call)h(\(and)f(only)h(then\))f(a)151 1220 y Fn (CR.LocalIntegrand\(f\);)151 1333 y Ft(is)h(executed)g(and)f(if)h Fn(CR)f Ft(is)h(not)e(c)o(hanged)i(b)o(y)f Fk(you)p Ft(.)93 1426 y(3.)22 b(After)15 b(a)g(call)h(of)151 1539 y Fn (Integrate\(Function)22 b(f,)h(COMPOUND_REGION&)f(CR,)h(...\);)151 1651 y Ft(rep)q(eated)16 b(calls)g(of)151 1764 y Fn (Integrate\(COMPOUND_REGION&)k(CR,)k(...\);)151 1876 y Ft(are)15 b(allo)o(w)o(ed)h(if)f Fn(CR)g Ft(is)h(not)f(c)o(hanged)g (b)o(y)g Fk(you)p Ft(.)37 1970 y(Although)23 b(w)o(e)f(cannot)f(stop)h (y)o(ou,)h(y)o(ou)e(should)i(nev)o(er)f(c)o(hange)g(the)g(in)o(tegrand) g Fn(f)g Ft(b)q(et)o(w)o(een)g(succes-)37 2027 y(siv)o(e)c(calls)g(b)o (y)g(c)o(hanging)f(global)h(v)m(ariables)h(that)d(are)h(used)h(b)o(y)f Fn(f)p Ft(.)26 b(Remem)o(b)q(er)18 b(that)e(after)h(one)g(call)h(of)37 2083 y Fn(Integrate)e Ft(the)g(original)i(region)e(is)h(replaced)h(b)o (y)e(a)h Fn(COMPOUND)p 1178 2083 15 2 v 16 w(REGION)e Ft(consisting)j(of)e(all)h(the)f(trans-)37 2140 y(formations)f(and)g (sub)q(divisions)i(that)d(the)h(automatic)f(in)o(tegrator)g(made.)20 b Fr(Cubpac)o(k)p Fn(++)14 b Ft(detects)h(if)g(y)o(ou)37 2196 y(call)f Fn(Integrate)d Ft(with)i(suc)o(h)g(a)f Fn(COMPOUND)p 776 2196 V 16 w(REGION)g Ft(with)h(a)f(di\013eren)o(t)h (function)g(than)f(y)o(ou)h(used)g(the)f(\014rst)37 2253 y(time)k(but)g(it)f(cannot)g(detect)h(situations)g(where)f(y)o(ou)g(mo) q(dify)h(the)f(function)i(b)q(et)o(w)o(een)e(calls.)22 b(Complete)37 2309 y(examples)16 b(are)f(giv)o(en)h(in)g(the)f(\014les) i Fn(Examples/vb14.c)c Ft(and)i Fn(Examples/vb17.c)p Ft(.)p eop %%Page: 12 15 12 14 bop 37 50 a Ft(12)1113 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h (and)f(L.)g(Pluym)37 199 y Fp(9)67 b(Measuring)23 b(the)g(p)r (erformance)37 301 y Ft(If)d(y)o(ou)e(w)o(an)o(t)g(to)g(kno)o(w)g(ho)o (w)h(m)o(uc)o(h)g(w)o(ork)e Fr(Cubpac)o(k)p Fn(++)i Ft(has)f(done)h(to) g(ev)m(aluate)g(y)o(our)g(in)o(tegral,)g(y)o(ou)37 357 y(should)k(de\014ne)g(a)e(v)m(ariable)h(\(sa)o(y)f Fn(Count)p Ft(\))f(of)h(the)h(class)g Fn(EvaluationCounter)p Ft(.)36 b(This)22 b(v)m(ariable)h(can)37 414 y(b)q(e)h(though)o(t)e(of)g(as)g (a)g(stop-w)o(atc)o(h:)34 b(after)22 b(y)o(ou)g(ha)o(v)o(e)g(said)h Fn(Count.Start\(\),)g Ft(a)f(coun)o(ter)h(is)g(incre-)37 470 y(men)o(ted)c(whenev)o(er)f(a)g(function)h(ev)m(aluation)g(has)f(b) q(een)h(p)q(erformed.)29 b(T)l(o)18 b(read)g(the)g(coun)o(ter,)g(y)o (ou)g(call)37 527 y Fn(Count.Read\(\),)i Ft(and)f(to)h(stop)f(it,)i(y)o (ou)e(sa)o(y)g Fn(Count.Stop\(\).)32 b Ft(Y)l(ou)20 b(can)g(reset)g(it) g(to)f(a)g(v)m(alue)i Fm(n)f Ft(b)o(y)37 583 y Fn(Count.Reset\(n\))c Ft(or)g(to)h(zero)g(b)o(y)g Fn(Count.Reset\(\))p Ft(.)24 b(Remem)o(b)q(er)18 b(to)e(start)g(the)i(coun)o(ter)f(again)g(after)37 639 y(resetting)f(it!)k(See)c(the)f(example)h(in)g Fq(x)p Ft(10.1.)108 696 y(On)k(some)f(systems)g(it)g(is)h(also)f(p)q(ossible)i (to)e(measure)g(CPU)g(or)g(actual)g(elapsed)i(time.)32 b(W)l(e)19 b(ha)o(v)o(e)37 752 y(pro)o(vided)h(a)f(class)g Fn(Chrono)p Ft(,)f(but)h(the)g(functions)h(in)f(that)f(class)i (normally)f(do)g(nothing.)31 b(Y)l(ou)19 b(should)37 809 y(replace)24 b(them)f(b)o(y)f(y)o(our)g(o)o(wn)g(system-dep)q (enden)o(t)i(functions.)43 b(As)22 b(an)h(example,)i(w)o(e)d(did)i (this)f(for)37 865 y(UNIX)18 b(systems)d(that)h(ha)o(v)o(e)g(a)g Fn(g)p Ft(etrusage\(\))f(system)h(call.)25 b(This)17 b(part)f(of)g(the)h(co)q(de)g(is)g(activ)m(ated)f(when)37 922 y(the)e(sym)o(b)q(ol)g Fn(GETRUSAGE)e Ft(is)i(de\014ned)h(to)e(the) g(C)h(prepro)q(cessor)f(\(usually)i(b)o(y)e(compiling)i(with)f(the)g (option)37 978 y Fn(-DGETRUSAGE)p Ft(\).)8 b(F)l(or)i(details,)i(read)e (the)g(\014le)i Fn(chrono.h)d Ft(and)h(the)h(example)g(in)g(the)f (\014le)h Fn(Examples/vb4.c)p Ft(.)37 1121 y Fp(10)67 b(Examples)37 1223 y Ft(The)12 b Fr(Cubpac)o(k)p Fn(++)f Ft(pac)o(k)m(age)h(has)g(b)q(een)g(run)g(successfully)i(on)d(sev)o (eral)h(C)p Fn(++)f Ft(compilers)i(\(see)f(also)g Fq(x)p Ft(11)f(and)37 1279 y(T)l(able)k(1\).)j(The)c(test)f(results)h(b)q(elo) o(w)g(w)o(ere)f(obtained)h(b)o(y)g(Gn)o(u)f(C)p Fn(++)g Ft(2.7.2)f(with)i Fn(libg++)e Ft(2.7.2.)18 b(Y)l(ou)c(can)37 1336 y(do)o(wn-load)i(the)f(soft)o(w)o(are)f(b)o(y)h(anon)o(ymous)g (ftp)g(from)f Fn(ftp.cs.kuleuven.ac.be)f Ft(where)i(it)h(is)f(lo)q (cated)37 1392 y(in)h(the)e(directory)g Fn (pub/NumAnal-ApplMath/Cubpack)d Ft(or)i(using)i(a)f(W)l(orld)h(Wide)g (W)l(eb)f(Bro)o(wser)g(from)37 1449 y Fn (HREF="http://www.cs.kuleuven.a)o(c.be/~r)o(onald/")o Ft(.)108 1505 y(Example)19 b(main)g(programs)e(are)h(in)i(the)e (directory)h(Examples;)h(see)f(the)g(\014le)g Fn(Example/CONTENTS)37 1562 y Ft(for)c(its)g(con)o(ten)o(ts.)20 b(In)15 b(the)h(follo)o(wing)g (sections)f(w)o(e)g(lo)q(ok)h(at)e(some)h(of)g(them)g(in)h(detail.)37 1683 y Fs(10.1)56 b(A)19 b(plane)g(sector)37 1769 y Ft(The)i(function)f Fm(f)5 b Ft(\()p Fm(x;)j(y)r Ft(\))19 b(=)i(exp\()p Fq(\000)p Ft(\()p Fm(x)693 1753 y Fl(2)726 1769 y Ft(+)13 b Fm(y)798 1753 y Fl(2)818 1769 y Ft(\))p Fm(=)p Ft(2\))19 b(is)h(to)f(b)q(e)i(in) o(tegrated)e(o)o(v)o(er)g(a)h(w)o(edge-shap)q(ed)h(region)37 1826 y(starting)15 b(at)g(the)g(origin)h(and)f(spanning)h(the)g(p)q (olar)f(range)g(0)d Fq(\024)h Fm(\022)i Fq(\024)e Ft(arctan)7 b(2:)698 1892 y Ff(Z)739 1906 y Fe(1)721 1987 y Fl(0)784 1892 y Ff(Z)826 1906 y Fl(2)p Fd(x)807 1987 y Fl(0)873 1950 y Fm(e)894 1931 y Fe(\000)p Fl(\()p Fd(x)955 1919 y Fb(2)972 1931 y Fl(+)p Fd(y)1017 1919 y Fb(2)1036 1931 y Fl(\))p Fd(=)p Fl(2)1094 1950 y Ft(d)p Fm(x)h Ft(d)p Fm(y)r(:)37 2071 y Ft(This)16 b(is)g(Example)g(33)e(from)h([3)o(].)108 2127 y(In)h(this)f(example,)g(w)o(e)g(use)g(the)g(adv)m(anced)h(in)o (tegrator)e(in)i(a)e(lo)q(op)i(with)f(decreasing)h(required)g(error.)37 2184 y(W)l(e)21 b(force)e(the)h(use)h(of)e(a)h(relativ)o(e)g(error)g (criterion)g(b)o(y)g(sp)q(ecifying)i(the)e Fn(AbsoluteErrorRequest)d Ft(as)37 2240 y(zero.)j(The)c(exact)f(C)p Fn(++)f Ft(co)q(de)i(is)g (\(see)f(\014le)h Fn(Examples/vb3.c)p Ft(\):)p eop %%Page: 13 16 13 15 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1160 b Ft(13)37 199 y Fn(//----------------------------)o(-------)o(-------) o(--------)o(-------)o(-------)o(---)37 256 y(//)24 b(Example)f(33)h (from)f(ditamo)37 312 y(//)h(Exact)f(value)g(=)h(arctan\(2\))37 369 y(//)g(Note)f(that)h(the)f(exact)g(value)h(mentioned)e(in)i(the)f (paper)g(describing)g(ditamo)37 425 y(//)143 b(is)24 b(wrong.)37 538 y(#include)f()37 594 y(#include)g ()37 651 y(#include)g()37 764 y(real)h(f\(const)f(Point&)g(p\))61 820 y({)109 877 y(real)g(x=p.X\(\)) g(,)h(y=p.Y\(\);)109 933 y(return)f(exp\(0.5*\(-x*x)f(-y*y\)\);)61 990 y(})37 1103 y(int)i(main)f(\(\))61 1159 y({)109 1215 y(Point)g(origin\(0,0\);)109 1272 y(real)g(innerradius=0,)f(alfa=0,)h (beta=atan\(2.0\);)109 1328 y(PLANE_SECTOR)f (wedge\(origin,innerradius,alf)o(a,beta\);)109 1385 y (EvaluationCounter)g(count;)109 1498 y(cout.setf\(ios::scientific,i)o (os::flo)o(atfield)o(\);)109 1554 y(cout<<"req.)g(rel.)i(error)95 b(est)23 b(integral)94 b(est)24 b(error)71 b(abs)23 b(error)47 b(evaluations")205 1611 y(<1e-12;)g (req_err/=10\))109 1836 y({)157 1893 y(cout)h(<<)h(setprecision\(1\))e (<<)h(")72 b(<")23 b(<<)h(req_err)f(<<")142 b(")276 1949 y(<<)24 b(setprecision\(10\))d(<<)j(Integrate\(f,wedge,0,req_er)o(r\))d (<<)j(")71 b(";)157 2006 y(cout)23 b(<<)h(setprecision\(1\))e(<<)h (wedge.AbsoluteError\(\))e(<<)j(")119 b(")276 2062 y(<<)24 b(fabs\(wedge.Integral\(\))d(-)i(atan\(2.0\)\))g(<<)h(")119 b(")276 2119 y(<<)24 b(count.Read\(\))e(<<)i(endl;)109 2175 y(})109 2232 y(count.Stop\(\);)109 2345 y(return)f(0;)61 2401 y(})37 2457 y(//----------------------------)o(-------)o(-------)o (--------)o(-------)o(-------)o(---)p eop %%Page: 14 17 14 16 bop 37 50 a Ft(14)1113 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h (and)f(L.)g(Pluym)108 199 y Ft(Note)d(that)g(t)o(w)o(o)g(statemen)o(ts) f(are)i(used)g(to)f(send)i(output)e(to)g Fn(cout)p Ft(.)19 b(This)13 b(is)g(done)g(to)g(mak)o(e)f(sure)h(that)37 256 y(the)18 b(in)o(tegral)f(has)g(b)q(een)h(computed)f(b)o(y)g(the)g (time)h(w)o(e)f(prin)o(t)g(it)g(out,)g(b)q(ecause)h(the)f(sequence)h (in)g(whic)o(h)37 312 y(the)d(individual)i(terms)c(are)h(ev)m(aluated)h (in)g(an)f(expression)g(con)o(taining)h(sev)o(eral)f Fn(<<)g Ft(op)q(erators,)f(has)h(b)q(een)37 369 y(left)i(unde\014ned)h (in)f(C)p Fn(++)p Ft(.)108 425 y(The)g(ab)q(o)o(v)o(e)e(program)g(pro)q (duces)i(the)g(follo)o(wing)g(output)f(\()p Fn(g++,)23 b(Ultrix)p Ft(\).)37 519 y Fn(req.)h(rel.)f(error)95 b(est)23 b(integral)95 b(est)23 b(error)71 b(abs)24 b(error)f (evaluations)109 575 y(<5.0e-02)142 b(1.1096504402e+00)70 b(3.4e-02)118 b(2.5e-03)g(292)109 632 y(<5.0e-03)142 b(1.1071935478e+00)70 b(4.1e-03)118 b(4.5e-05)g(1181)109 688 y(<5.0e-04)142 b(1.1071470438e+00)70 b(5.1e-04)118 b(1.7e-06)g(3105)109 745 y(<5.0e-05)142 b(1.1071488562e+00)70 b(5.3e-05)118 b(1.4e-07)g(5657)109 801 y(<5.0e-06)142 b(1.1071486939e+00)70 b(5.3e-06)118 b(2.4e-08)g(11239)109 858 y(<5.0e-07)142 b(1.1071487183e+00)70 b(5.3e-07)118 b(5.5e-10)g(16377)109 914 y(<5.0e-08)142 b(1.1071487178e+00)70 b(5.5e-08)118 b(1.0e-12)g(25553)109 971 y(<5.0e-09)142 b(1.1071487178e+00)70 b(5.5e-09)118 b(1.1e-11)g(38577)109 1027 y(<5.0e-10)142 b(1.1071487178e+00)70 b(5.4e-10)118 b(5.2e-13)g(53081)109 1083 y(<5.0e-11)142 b(1.1071487178e+00)70 b(5.5e-11)118 b(2.6e-13)g(73949)109 1140 y(<5.0e-12)142 b(1.1071487178e+00)70 b(5.5e-12)118 b(1.6e-15)g(117794)37 1262 y Fs(10.2)56 b(When)19 b(geometry)d(should)k(not)f(rule)37 1347 y Ft(A)f(referee)f(ask)o(ed)g(us)h(to)e(in)o(tegrate)h(the)g (follo)o(wing)h(\\reasonable)g(in)o(tegrand")f(o)o(v)o(er)f(the)i Fn(House)p Ft(-shap)q(ed)37 1404 y(region)e(sho)o(wn)f(in)h(Figure)f (3:)97 1524 y Fm(f)5 b Ft(\()p Fm(x;)j(y)r Ft(\))40 b(=)348 1464 y Ff(\024)370 1472 y(q)p 411 1472 629 2 v 411 1524 a Ft(\()p Fm(x)10 b Fq(\000)h Fm(\031)539 1511 y Fl(0)p Fd(:)p Fl(5)585 1524 y Ft(\))603 1511 y Fl(2)633 1524 y Ft(+)f(\()p Fm(y)i Fq(\000)e Ft(1\))816 1511 y Fl(2)846 1524 y Ft(+)g(0)p Fm(:)p Ft(00001)e(+)1108 1504 y Fb(3)1098 1472 y Ff(q)p 1140 1472 647 2 v 52 x Ft(\()p Fm(y)j Fq(\000)g Fm(\031)1265 1511 y Fl(0)p Fd(:)p Fl(35)1329 1524 y Ft(\))1347 1511 y Fl(4)1377 1524 y Ft(+)f(\()p Fm(x)g Fq(\000)g Ft(1\))1562 1511 y Fl(2)1592 1524 y Ft(+)g(0)p Fm(:)p Ft(00002)1786 1464 y Ff(\025)348 1619 y Fq(\002)e Ft(sin)q([\()p Fm(x)h Fq(\000)i Fm(y)h Fq(\000)e Fm(\031)666 1600 y Fl(0)p Fd(:)p Fl(5)723 1619 y Ft(+)g Fm(\031)796 1600 y Fl(0)p Fd(:)p Fl(35)861 1619 y Ft(\))p Fm(=)p Ft(\(\()p Fm(x)e Ft(+)j Fm(y)h Fq(\000)e Ft(2\))1138 1600 y Fl(2)1168 1619 y Ft(+)g(0)p Fm(:)p Ft(01\)])37 1721 y(If)16 b(one)f(substitutes)h Fm(y)e Ft(=)f(1,)i(one)g(obtains)205 1841 y Fm(f)5 b Ft(\()p Fm(x;)j Ft(1\))40 b(=)454 1781 y Ff(\024)476 1789 y(q)p 518 1789 416 2 v 52 x Ft(\()p Fm(x)10 b Fq(\000)g Fm(\031)645 1828 y Fl(0)p Fd(:)p Fl(5)692 1841 y Ft(\))710 1828 y Fl(2)739 1841 y Ft(+)h(0)p Fm(:)p Ft(00001)d(+)1002 1821 y Fb(3)992 1789 y Ff(q)p 1033 1789 646 2 v 1033 1841 a Ft(\(1)i Fq(\000)g Fm(\031)1157 1828 y Fl(0)p Fd(:)p Fl(35)1222 1841 y Ft(\))1240 1828 y Fl(4)1269 1841 y Ft(+)h(\()p Fm(x)e Fq(\000)i Ft(1\))1455 1828 y Fl(2)1484 1841 y Ft(+)f(0)p Fm(:)p Ft(00002)1678 1781 y Ff(\025)454 1936 y Fq(\002)e Ft(sin)q([\()p Fm(x)h Fq(\000)i Ft(1)f Fq(\000)g Fm(\031)771 1917 y Fl(0)p Fd(:)p Fl(5)828 1936 y Ft(+)g Fm(\031)901 1917 y Fl(0)p Fd(:)p Fl(35)966 1936 y Ft(\))p Fm(=)p Ft(\(\()p Fm(x)f Fq(\000)h Ft(1\))1164 1917 y Fl(2)1193 1936 y Ft(+)h(0)p Fm(:)p Ft(01\)])37 2038 y(and)21 b(one)g(immediately)h(sees)f(that)f (this)h(function)h(has)e(fast)g(oscillations)i(in)g(the)e(neigh)o(b)q (ourho)q(o)q(d)i(of)37 2095 y Fm(x)16 b Ft(=)f(1.)25 b(A)17 b(picture)g(also)g(rev)o(eals)g(a)g(discon)o(tin)o(uit)o(y)h(in) f(the)g(\014rst)f(deriv)m(ativ)o(e)j(in)e(the)g(neigh)o(b)q(ourho)q(o)q (d)h(of)37 2151 y Fm(x)d Ft(=)f(1)p Fm(:)p Ft(8.)22 b(It)16 b(is)g(ob)o(vious)h(that)e(oscillations)j(o)q(ccur)e(in)h(the)f(neigh)o (b)q(ourho)q(o)q(d)i(of)e(the)g(line)i Fm(x)10 b Ft(+)h Fm(y)i Fq(\000)e Ft(2)j(=)g(0)37 2208 y(b)q(ecause)j(there)e(the)g (denominator)h(of)e(the)i(argumen)o(t)e(of)h(the)g(sin)h(b)q(ecomes)g (small.)108 2264 y(A)f(straigh)o(tforw)o(ard)e(application)k(of)e Fr(Cubpac)o(k)p Fn(++)g Ft(is)g(giv)o(en)h(in)g(the)f(follo)o(wing)h (program:)p eop %%Page: 15 18 15 17 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1160 b Ft(15)37 199 y Fn(//----------------------------)o(-------)o(-------) o(--------)o(-------)o(--)37 256 y(#include)23 b()37 312 y(#include)g()37 425 y(#define)g(sqr\(x\))g (\(\(x\)*\(x\)\))37 538 y(static)h(const)f(real)g(sqrt_PI)g(=)h (sqrt\(M_PI\),)467 594 y(p35_PI)47 b(=)24 b(pow\(M_PI,0.35e0\);)37 707 y(real)g(f\(const)f(Point&)g(p\))61 764 y({)h(real)f(x=p.X\(\))g(,) h(y=p.Y\(\))f(;)157 820 y(return)g(\()47 b(sqrt\()24 b(sqr\(x-sqrt_PI\))e(+)h(sqr\(y-1\))g(+)h(0.00001\))372 877 y(+)f(pow\(pow\(y-p35_PI,4\))f(+)h(sqr\(x-1\))g(+)h (0.00002,1.0/3.0\))324 933 y(\))g(*)f(sin\()h (\(x-y-sqrt_PI+p35_PI\)/\(s)o(qr\(x+y-2)o(\))d(+)j(0.01\))f(\);)61 990 y(})37 1103 y(int)h(main)f(\(\))61 1159 y({)109 1215 y(EvaluationCounter)f(count;)109 1272 y(//------------------------)109 1328 y(TRIANGLE)h(Roof\()g(Point\(0,1\),)f(Point\(2,1\),)h (Point\(1,2\)\);)109 1385 y(RECTANGLE)g(Walls\()g(Point\(0,0\),)f (Point\(0,1\),)g(Point\(2,0\)\);)109 1441 y(REGION_COLLECTION)g(House)h (=)h(Walls)f(+)g(Roof;)109 1554 y(count.Start\(\);)109 1611 y(cout)g(<<"The)g(integral)g(is)h(")g(<<)f (Integrate\(f,House,0,0.5e-1,)o(1000000)o(\);)109 1667 y(cout)g(<<")h(with)f(absolute)g(error)g(")h(<<)f (House.AbsoluteError\(\))e(<<)j(endl;)109 1724 y(count.Stop\(\);)109 1780 y(cout)f(<<)h(count.Read\(\))e(<<)i(")g(function)e(evaluations)h (were)g(used.")g(<<)h(endl;)109 1836 y(//------------------------)109 1893 y(return)f(0;)61 1949 y(})37 2006 y (//----------------------------)o(-------)o(-------)o(--------)o (-------)o(--)37 2118 y Ft(\(This)e(example)h(is)f(in)h(\014le)g Fn(Examples/vb13.c)p Ft(.\))34 b(A)20 b(plot)h(of)g(the)f(p)q(oin)o(ts) h(where)g(the)g(function)h(w)o(as)37 2175 y(ev)m(aluated)17 b(is)e(sho)o(wn)g(in)h(Figure)g(4.)j(The)d(actual)f(output)g(of)g(the)g (ab)q(o)o(v)o(e)g(program)f(is:)37 2274 y Fn(The)24 b(integral)f(is)g (-0.40791)g(with)g(absolute)g(error)g(0.0203924)37 2331 y(266548)h(function)e(evaluations)h(were)g(used.)108 2430 y Ft(The)d(geometry)f(w)o(as)f(here)i(used)g(to)f(sp)q(ecify)i (the)f(region)g(of)f(in)o(tegration.)33 b(A)20 b(logical)g(c)o(hoice)h (but)37 2486 y(ev)o(ery)o(one)13 b(kno)o(ws)g(that)f(this)h(is)g (rarely)g(the)g(b)q(est)h(one)f(can)g(do)f(in)i(n)o(umerical)g(in)o (tegration.)19 b(A)13 b(w)o(ell)h(kno)o(wn)37 2542 y(rule-of-th)o(um)o (b)i(is)106 2641 y Fq(\017)22 b Fk(make)f(sur)n(e)g(the)g(di\016culty)g (in)f(the)h(inte)n(gr)n(and)f(is)g(lo)n(c)n(ate)n(d)g(in)h(a)g(vertex)g (or)g(on)f(the)h(e)n(dge)g(of)g(the)151 2698 y(r)n(e)n(gion.)37 2796 y Ft(W)l(e)16 b(can)f(giv)o(e)h(t)o(w)o(o)d(additional)k(rules:)p eop %%Page: 16 19 16 18 bop 37 50 a Ft(16)1113 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h (and)f(L.)g(Pluym)37 1745 y currentpoint currentpoint translate 0.62503 0.62503 scale neg exch neg exch translate 37 1745 a @beginspecial 0 @llx 0 @lly 453.542175 @urx 382.676208 @ury 4535 @rwi @setspecial %%BeginDocument: vb13.ps % % /inch {72 mul} def /rlebuffer 2 string def /samples 256 string def /plotimage {606 570 1 [606 0 0 -570 0 570] % run-length decoding block { currentfile rlebuffer readhexstring pop pop rlebuffer 0 get 1 add %% number of copies of the sample /nsamples exch store %% save it away /lum rlebuffer 1 get store %% the sample itself 0 1 nsamples 1 sub { samples exch lum put } for samples 0 nsamples getinterval %% leave the pixels on the stack } image } def gsave 1.5 inch 3.3 inch translate 5.2 inch 5 inch scale plotimage 4aff00fc4aff00fc4aff00fc4aff00fc02ff00e346ff00fc02ff00dd46ff 00fc02ff00dd46ff00fc02ff00fd46ff00fe02ff00fb00fc4300000700ff 00fe02ff00f700f84300000300ff00fc02ff00ef00f905ff00f305ff00e7 05ff00cf05ff009f05ff009f05ff003f04ff00fe007f04ff00fc05ff00f9 05ff00f300ff00fc02ff00df00f905ff00f305ff00e705ff00cf05ff009f 05ff009f05ff003f04ff00fe007f04ff00fc05ff00f905ff00f300ff00fe 02ff00c100f905ff00f305ff00e705ff00cf05ff009f05ff009f05ff003f 04ff00fe007f04ff00fc05ff00f905ff00f300ff00fc03ff00f905ff00f3 05ff00e705ff00cf05ff009f05ff009f05ff003f04ff00fe007f04ff00fc 05ff00f905ff00f300ff00fc03ff00f920ff00fd00fb20ff00f300ff00fc 03ff00f921ff00df20ff00f300ff00fc03ff00f921ff00df20ff00f300ff 00fc03ff00f943ff00f300ff00fc03ff00f943ff00f300ff00fe03ff00f9 20ff005f00ff00af1fff00f300ff00fc03ff00f943ff00f300ff00fc03ff 00f920ff00f700fe20ff00f300ff00fc03ff00f921ff00df20ff00f300ff 00fc03ff00f943ff00f300ff00fc03ff00f921ff00df20ff00f300ff00fe 03ff00f91fff00bf02ff00df1eff00f300ff00fc03ff00f91fff00ef02ff 007f1eff00f300ff00fc03ff00f943ff00f300ff00fc03ff00f91fff00ef 00bf00ff00df007f1eff00f300ff00fc03ff00f91eff00fe03ff00f71eff 00f300ff00fc03ff00f943ff00f300ff00fc03ff00f921ff00df20ff00f3 00ff00fc03ff00f91eff00df04ff00bf12ff00fd007f00bf00b8003f00ff 00fd007f02ff00f300ff00fc03ff00f91eff00fe00fd01ff00fb00f713ff 00fd007f00bf003f00bf00ff00fd007f02ff00f300ff00fc03ff00f91fff 00fe01ff00f714ff00fd007f00be00bf007f00ff00fd007f02ff00f300ff 00fc03ff00f939ff00ee008700be00ff00c6001f03ff00f300ff00fc03ff 00f921ff00df16ff00ee00bb00bc007f00ba00ef03ff00f300ff00fc03ff 00f939ff00ee00bb01bf00ba00ef00ff00fe01ff00f300ff00fc03ff00f9 1dff00fb00ef04ff007d13ff00f500bb01bf00ba00ef03ff00f300ff00fc 03ff00f91fff00fb00ff00df00fd15ff00f502bb00c2001f03ff00f300ff 00fc03ff00f921ff00df16ff00fb0086000c007100fa04ff00f300ff00fc 03ff00f91dff00df007f00f700ff00df00fe00ff00ef00bf15ff00fb00ba 04ff00f300ff00fc03ff00f91dff007f00ff00f700ff00df00fe01ff00ef 16ff00c604ff00f300ff00fc03ff00f91cff00fe00df007f04ff00ef00b7 1cff00f300ff00fc03ff00f91dff00fb02ff00df01ff00fd1dff00f300ff 00fc03ff00f91eff00ef00fb01ff00fd00ff007f1dff00f300ff00fc03ff 00f91dff00fb05ff00fd1dff00f300ff00fc03ff00f91cff01ef00ff00bf 00ff00df00ff00df00ff017f1bff00f300ff00fc03ff00f91dff00fb05ff 00fd1dff00f300ff00fc03ff00f91cff00fe01ff00fe01ff00f701ff00f7 1cff00f300ff00fc03ff00f91cff00f707ff00fe1cff00f300ff00fc03ff 00f91eff00de03ff00f700bf1dff00f300ff00fc03ff00f91bff00fd01ff 007f04ff00ef00ff00fb1bff00f300ff00fc03ff00f921ff00df20ff00f3 00ff00fc03ff00f91cff00bf00fb05ff00fd00ff00df1bff00f300ff00fc 03ff00f920ff00bf00ff00df1fff00f300ff00fc03ff00f91bff00ef0aff 007f1aff00f300ff00fc01ff007f00e300f91cff00f600ff00df00ef02ff 007f00bf00f61cff00f300ff00fc00ff00fe007f00dd00f91aff00fd03ff 003f02ff00cf02ff00fb1aff00f300ff00fc00ff00fd007f00dd00f91bff 00bf01ff00fb03ff00fd02ff00df1aff00f300ff00fc01ff007f00dd00f9 1eff00f701ff00df00ff00fe1eff00f300ff00fc01ff007f00e300f8003f 1aff00fe00ff00fe05ff00f700ff00f71bff008300ff00fc01ff007f00dd 00f8003f42ff008300ff00fc01ff007f00dd00f920ff00f700de20ff00f3 00ff00fc01ff007d00dd00f91cff00fe07ff00f71cff00f300ff00fc00ff 00fc001800e300f91aff007f03ff00fd007f00ff00eb04ff00ef19ff00f3 00ff00fc01ff00fd00ff00f91aff007b03ff00df02ff00bf02ff00fe00ef 19ff00f300ff00fc03ff00f91bff00f701ff00df01ff00df01ff00bf00ff 00fe1bff00f300ff00fc03ff00f91eff007f04ff00ef1dff00f300ff00fc 03ff00f91cff00fe03ff00df02ff00f71cff00f300ff00fc03ff00f920ff 00fd00db20ff00f300ff00fc03ff00f919ff00df007f03ff00fd00f700de 00fb04ff00ef00bf18ff00f300ff00fc03ff00f91bff00df01ff00f703ff 00fe02ff00bf1aff00f300ff00fc03ff00f919ff00df00ff007f00fe00fd 02ff00df01ff00fb00f700ff00f700ff00bf18ff00f300ff00fc03ff00f9 18ff00fe00fd00ff00bf00fe00ff00fb00ff007e00d700ef00fd00ff00f7 00ff00df00fb00f718ff00f300ff00fc03ff00f918ff01fd00ff00bf00fe 00ff00fb00ff007f00df00ef00fd00ff00f700ff00df01fb18ff00f300ff 00fc03ff00f918ff00fa00df00ff007f00ff00fd01ff00fe00d701ff00fb 01ff00f700ff00b718ff00f300ff00fc03ff00f918ff00ed02ff00fe03ff 006f02ff00f71cff00f300ff00fc03ff00f918ff00fb00ff007f00df01ff 00f700fd00ff00df00fb00fe02ff00bf00ef00fd18ff00f300ff00fc03ff 00f919ff00df00bf04ff00f700de05ff00df00bf18ff00f300ff00fc03ff 00f918ff013f01ff00fe02ff01f902ff00f71cff00f300ff00fc03ff00f9 18ff00de04ff007f00ff00fe00f701ff00ef1dff00f300ff00fc03ff00f9 18ff00fb01ff00f701ff00df01ff00df01ff00bf00ff00fe1bff00f300ff 00fc03ff00f917ff00f700ff00fb007f04ff00bf00ff00df04ff00ef19ff 00f300ff00fc03ff00f917ff00fb007f00af007b03ff00dd00eb00fd00bb 00bf02ff00fe00ef19ff00f300ff00fc03ff00f917ff00eb00ff00f505ff 007f00ff00ef04ff00fe00ff00fd17ff00f300ff00fc03ff00f917ff00bf 00fb00ff007f00ff00fe007f00ff00fd00ff00df00fb01ff00e71cff00f3 00ff00fc03ff00f917ff00ee00ff00dd05ff007700fe00ef1fff00f300ff 00fc03ff00f918ff00fb01ff00fe00ff00fe02ff00df01ff00f700ff00f7 1bff00f300ff00fc03ff00f916ff00fd00bf01ff006f03ff00ed01ff00fb 007f1eff00f300ff00fc03ff00f917ff00fd00fb00ef00ff00bf01ff00f3 00ff00ef00df007f00fc02ff00df00ff00fd18ff00f300ff00fc03ff00f9 16ff00f3007d00fb00ef00b903ff001b00ef00df007d00cf02ff00fb01ff 00fb17ff00f300ff00fc03ff00f916ff00c2007d00fb00ef00a900ff00f6 01ff004b00ef00df007d004f00ff00f61cff00f300ff00fc03ff00f916ff 00ed00bd00ff00ef006f03ff00ed00ef00ff007b007f1eff00f300ff00fc 03ff00f916ff009900f701fb00f7006f01ff00fd00df00bf01df00bb02ff 007f1aff00f300ff00fc03ff00f915ff00fe00ce00fe00ff00df00fc03ff 007f00f700fe00ff00ef02ff00f703ff00bf15ff00f300ff00fc03ff00f9 15ff00fe003a002f00ff00fd003f00ef00bf00fb00f700f9007f00ff00e9 00fe00fd00ff00df1bff00f300ff00fc03ff00f915ff00fc006d003f00fb 00ff00ef00bf01ff00fb00ef00ff00df00ff007d1eff00f300ff00fc03ff 00f915ff00f300ad00df007f00bf00ff00f501ff005f00ff00fb00fd01ff 00af00ff00fb1bff00f300ff00fc03ff00f915ff00e9004c008300ff00eb 007c00fd01ff007e007f00af00ff009f00e700ef02ff00ef01ff00df16ff 00f300ff00fc03ff00f915ff00e1006c008700fb00fe00ff00fb00fe00ff 00bf00fe00ff00df00f700ff00df00f71cff00f300ff00fc03ff00f915ff 00c600ac00e301ff01df01ff00f700fb01ff01fe1eff00f300ff00fc03ff 00f915ff003000ef001900da00ff00fd03ff003f00fe00d700ff00cf07ff 00fd15ff00f300ff00fc03ff00f915ff004f003a00f2007f009b00ff00fe 00af00ea01ff00d300fc00bf00ff00f5017f1bff00f300ff00fc03ff00f9 14ff00fc003800ee001c007b00ff007f00ef00bf00fb00ef00fd00ff00df 00fb00ff007d1dff00f300ff00fc03ff00f914ff00f900ee000800760089 00ff00bd00df02ff007b00ff006f00fd00ef02ff00bf00ff00fd00f717ff 00f300ff00fc03ff00f914ff00fb006b00c7009600da00de00ff00f700b6 00db00df00fe00f600d600f700ff00bd00b71cff00f300ff00fc03ff00f9 14ff00e2006100000096004100be00dd00f900d50057003f007600fb004d 00f600ef00ce00af1cff00f300ff00fc03ff00f914ff00c6006100a40096 004100be00dd00f900dd0077003f007600fb004d00f600ef00ce00eb07ff 007f13ff00f300ff00fc01ff007f00e300f914ff008b00eb004100d700c3 00fe00fd00f700f601df007e00ff00df00f700ef01bf1cff00f300ff00fc 00ff00fe007f00dd00f914ff0001006a002c00b6008800df00ff00fe00b3 009b01ff00f6004601ff00fd00bf00d705ff00ef14ff00f300ff00fc00ff 00fd007f00df00f913ff00fe000100bb00cb005d00ed00ff00bd03ff007b 01ff00fd00ef1eff00f300ff00fc01ff007f00df00f913ff00f80050004c 002a0032001a001b007f00ee00be00fa00ef00fd00d700de00bb00ff0075 1dff00f300ff00fc01ff007f00c300f8003f12ff00f00000003100e70098 007b009f00f900ff00cf00e700ff007f00fb00dd00ff00ef02ff00fd02ff 00fe16ff008300ff00fc01ff007f00dd00f8003f12ff00f00000006e00ac 0077005a00bf01df00f700df00f700fb00fe00f701fe1eff008300ff00fe 01ff007f00dd00f913ff00c400010015006d008a00bb005600ff00fb00fe 00ff00bf00fe00ff00df00f700ff00df1dff00f300ff00fe01ff007d00dd 00f913ff00840089000b006e00c100bb006b00ff00fc007f00fc007f00ff 00af00ff009f00ff00ef1dff00f300ff00fc00ff00fc001800e300f913ff 00040101004d008a003b001500fc00f701ef00de007d00fb00fd00fb00e7 00bf1dff00f300ff00fc01ff00fd00ff00f912ff00fe0200003d0036005e 009b00ef00bd01ff007b00ef00ff00df00ff007d1eff00f300ff00fe03ff 00f912ff00fc00200000002000ab001900da00e6003f00ef00fe00ff00e7 00f900ff00df00f900fe04ff00fd18ff00f300ff00fc03ff00f912ff00f8 002000500024006e0066003b001900bd00fd009f00f3007e007f007700fe 00ef00e71eff00f300ff00fc03ff00f912ff00f0002000000020005b00d5 00e900ea01ff00fe00ff00ef00ff00bf01df00ff007f09ff00fb12ff00f3 00ff00fc03ff00f912ff00e00200002800be009a005f0047003701ff00d9 00cd01ff00fb003b1eff00f300ff00fc03ff00f912ff00c0000000010100 00b400c000cb006500ff00be00db00ff006f00ef00df007f006f00ff00bf 07ff00f713ff00f300ff00fc03ff00f912ff008002000081003400d200cb 00a800ef007e00fd00ee001b00ef00df007d00df0aff00f712ff00f300ff 00fc03ff00f912ff0100000100000001003400c000cb002000af007e00fd 00ea005b00ef00df007d00df1eff00f300ff00fe03ff00f911ff00fc0400 00b400bb004b004f009700bf00fb00db00ed00ef00df007b007f02ff00bf 03ff00f715ff00f300ff00fc03ff00f911ff00fc0300000100f700c800fb 00e7007e01fe00fd00df00ff00df20ff00f300ff00fc03ff00f911ff00f0 0100005000200048005c007b008e00bc00ff00df00f700ff007f00f700fe 04ff00f71aff00f300ff00fc03ff00f911ff00f000800100002000080002 009a0050003f00ed01ff006700f9007700fe00eb05ff00fd18ff00f300ff 00fc03ff00f911ff00c00400000c007b008d006f00bf00fe00ff00fb00ef 007f00df00ef1fff00f300ff00fc03ff00f911ff00c404000003005a00b1 007f00ff01ef00ff00fd00db00fd00bf1fff00f300ff00fe03ff00f911ff 02000009020000bb004b00f900fc007f00fc007f005d00af00df009b0dff 007f10ff00f300ff00fc03ff00f911ff000d00b600000001000000010000 00bb004200ff00f300fe00ff009f00fe00ff00df01ff00bf09ff00f712ff 00f300ff00fc03ff00f910ff00fc001900b20300000100da00ff00df00dd 01ff00f700fb05ff00fb05ff007f14ff00f300ff00fc03ff00f910ff00f8 000700ba0400005a009f00fd00ff00f600df00ff007f00fe00f720ff00f3 00ff00fc03ff00f910ff00f0000200e00100000400080000001e001b00ff 00fe009f00f201ff00d100f920ff00f300ff00fc03ff00f910ff00e00043 00b800200000002000480010003b00bf007f00ef00fe00ff00ef00fd00ff 00df06ff00fd06ff00bf10ff00f300ff00fc03ff00f910ff00c000200080 0400000c00ff00ed00df00fb00bf00f7007f00ff006f05ff007f03ff00fb 14ff00f300ff00fc03ff00f910ff008000040500000200de00ff00f70036 00db00dd00fe00f600de00ff00fb01ff00ef05ff00df01ff007f00fd10ff 00f300ff00fc03ff00f910ff00020004030000010002004000bc00fd00bb 00dc007700bb007e007a005f06ff00fd18ff00f300ff00fc03ff00f90fff 00fe00100004030000010002004000bc00fd00bb00dc007700bb007e007a 005f06ff00fd18ff00f300ff00fc03ff00f90fff00fc0020000405000003 00fe00fd00f7007f00ff00dd007e00f700de00ff00fb01ff00ef05ff00df 01ff007f00fd007f0fff00f300ff00fc03ff00f90fff00f80700000800df 00ed00ff00b2009b00ff007f00f6006f05ff007f19ff00f300ff00fc03ff 00f90fff00f001000080020000080000002900ff007f00cf00fe00ff00e7 00fd00ff00df0aff00fb02ff00bf00f70fff00f300ff00fc03ff00f90fff 00e0000000400090020000480010003b001b00ff00fe00ff00fe01ff00d7 07ff00fd18ff00f300ff00fc03ff00f90fff00c00700001a001f00fd00ff 009e00f300ff007f00f100f920ff00f300ff00fc03ff00f90fff00800600 0001005a00bf00df00dd00f700df00f700fb00fe00f703ff00fb05ff007f 03ff00f70fff00f300ff00fc03ff00f90fff010000040000000401000001 000200bb005600ff00f300fe00ff009f00fe00ff00df01ff00bf09ff00f7 12ff00f300ff00fc03ff00f90eff00fe02000002000400800300000300fb 00fc007f00fc007f00dd00af00df009b0bff00df00ff007f10ff00f300ff 00fc03ff00f90eff00fc004700620004000000040100000101000005007d 00ff01ef00ff007d00db00fd00bf0dff00f700ff00ef0eff00f300ff00fc 03ff00f90eff00f8000b00d0000406000009006f00bf01ff00fb00ef007f 00ff00ef1fff00f300ff00fc03ff00f90eff00f0001b0058000000800020 030000080016003f00ef00fe00ff00e700f900ff00df00fb05ff00fd18ff 00f300ff00fc03ff00f90eff00e0000700600000009004000008001900bc 00fd00df00f7017f007700fe00ef03ff00f71aff00f300ff00fc03ff00f9 0eff00800005010000800400000800ea00ff02fe02ff00df20ff00f300ff 00fc03ff00f90eff000000030800005f0047003701ff00d900cd01ff00fb 007f1eff00f300ff00fc03ff00f90eff002000080700004000cb0065009f 00be01fb007f00ef00df007f03ff00bf03ff00f704ff00f70fff00f300ff 00fc03ff00f90dff00fc0900004200cb00a800ef007e00fd00ee001b00ef 00df007d00df0aff00f712ff00f300ff00fc03ff00f90dff00f805000001 0200004000db002000ef00fe00df00ee004b00ff00df00fd004f00ff00bf 07ff00f713ff00f300ff00fc03ff00f90dff00f00a00004b004d00b700bf 00fb00db00ed00ef00ff007b007f1eff00f300ff00fc03ff00f90dff00e0 00000001020000200000002000080000000800ea00e6007f00fe00ff00ed 00df00bf01df00bb007f09ff01fb02ff00df0dff00f300ff00fc03ff00f9 0dff00c000000001020000200000002401000008001f009d009f00df00f7 00fe007f00f700fe00ff00e70bff00bf02ff00fd0dff00f300ff00fc01ff 007f00fb00f90dff00c00000000102000020000000200100000800300037 006d00bf00fb006700f9007f00ff00e900fe1eff00f300ff00fc00ff00fe 007f00fb00f90dff010000010800000f002d001500fe00ff007b00ef00ff 00df00ff007d04ff00f918ff00f300ff00fc00ff00fd007f00f300f90cff 00fe020000200800007d00e301ef00df00ff00fb00fd01ff00bf1dff00f3 00ff00fc01ff007f00eb00f90cff00fc004004000004008903000001004c 00b4007f00fc007e007d00af00ff009b00e700ef0bff007f00ff00fe0eff 00f300ff00fc01ff007f00eb00f8003f0bff00f80500000600db0400004d 00a100fe00ff00bf00fe00ff00df00f700ff00df1dff008300ff00fc01ff 007f00db00f8003f0bff00f00500000600db00c0030000cd005c01ff00f7 00fb01ff01fe1eff008300ff00fc01ff007f00c100f90cff00e005000002 00da00300300003900d3001700d700ff007f00fa00d500ff00ef02ff00fd 02ff00fe16ff00f300ff00fc01ff007d00fb00f90cff00c0008105000075 004e00080000000800000017001c00af00ea01ff00d700fe00bf00ff00f5 1dff00f300ff00fc00ff00fc001800fb00f90cff00840001000000010100 0090000100dc00b80048000000080000001d00c7008e00ff00ef00f900ff 00df00f900ff007f1dff00f300ff00fc01ff00fd00ff00f90cff02000001 0300002100ee03000004001c00e300bf00ff007f00ff004f00ff00ef01ff 00f70aff00f70fff00f300ff00fc03ff00f90bff00fc0020030000040100 000b006b00800200002000f500b600db00df00fe00f600d600f700ff00bd 00bf00df05ff00ef14ff00f300ff00fc03ff00f90bff00f8020000080300 00020061010000400100002900d00057003f007600fb004d00f600ef00ce 00ab07ff007f13ff00f300ff00fc03ff00f90bff00f80000001005000002 006100a00002004000000001006900d00057003f007600fb004d00f600ef 00ce00a707ff00df06ff00fb0bff00f300ff00fc03ff00f90bff00f00020 06000003006b00400200002000b500b0007b00df007e00f700fe00f700ef 00bd00f71cff00f300ff00fc03ff00f90bff00ee050000a00000000100ee 0400001d00e3009b00ff007f00fe004700ff00ef00fd009d02ff00fd00f7 02ff00fe05ff00fe0cff00f300ff00fc03ff00f90bff00f2008400010300 00980020000000b9000803000027009a00bf00ef00f900ff00df00f900ff 007f00f71cff00f300ff00fc03ff00f90bff008e00800081000201000002 00e00100004c0008010000020004000c00a3008a01ff00d700fe00bf00ff 00f51dff00f300ff00fc03ff00f90bff003b0080010000010000000f003c 01000030030000080003000e00e700ff003f00fb00dd00ff00cf00fe007f 003f04ff00fd02ff00ef02ff00f70dff00f300ff00fc03ff00f90aff00fe 005b00400300000100b201000060030000010005009600d300f700fb00fe 00f701fe00ff00be1cff00f300ff00fc03ff00f90aff00fc00db00600300 000d00b600040001040000200000003600d900bf00fe00ff00df00f700ff 00df00f71cff00f300ff00fc03ff00f90aff00f800db00a0004000800b00 0010003600d8007e007f00af00ff009f00e700e300ff00e705ff00fd08ff 00bf0aff00f300ff00fc03ff00f90aff00f0009b0022002d00d105000010 0001020000200000002600c8009f00ff00fb00fd01ff00bf017f00ff00ef 01ff00df16ff00f300ff00fc03ff00f90aff00d2005f004c000700a20081 040000280500001700d3005b00ef02ff007d00ef00ff00fb1bff00f300ff 00fc03ff00f90aff00cd00ea00f600950063004104000034010000080100 0001001a00bd00a700f900ff00df00f900fe007f00f700ff007f09ff00f7 0fff00f300ff00fc03ff00f90aff0032001b018d00c400c103000050006c 01000008000000040001000600c30067007f007700fe01ef00ec00ff009b 00f703ff00bf15ff00f300ff00fc03ff00f90aff009a00e200750073003a 00b90300000300a900080000000801000001000200bd005f00ff00bf01df 01ff00f700ff007f03ff00fb0aff00df09ff00f300ff00fc03ff00f909ff 00fe005e009b002f00410017009103000001007a0500000200cb00d100cd 00ef00ff007b003900bd00ff00de00df1aff00f300ff00fc03ff00f909ff 00fa00bb0050006d0028001600d800200200000b006d0040000000400300 0017006a006f00ff00df00ff006f00ff00f606ff00fd00ff00f704ff00ef 00ff00bf0aff00f300ff00fc03ff00f909ff00f100b90061005500900026 009a00100200000600ac00800000004003000035006c001b00ef00df007d 00c7007b00f700ef00b31aff00f300ff00fc03ff00f909ff00f200bb0050 006d0088003600d8002000040100000b006d004300ff00fb00ff00f80100 00170062001f00ff00df00ff00c400ff00f700ff00d306ff00fd04ff00bf 0cff00f300ff00fc03ff00f909ff00fe005a00bb00ad004d009600970041 000000a000000005006a000100bd00fb00ef00610100002b0053006d00ef 00ff007b007d00bd00ff00de00df00ff00fd18ff00f300ff00fc03ff00f9 09ff00dc00da00c200750073003a00b9010000c000000003008b000100ff 00fb00ff00e00100001c005800cf00ff00df00ff00bb02f700ee1aff00f3 00ff00fc03ff00f909ff00f70033001b009d008d00c400c70060000300b0 010000ec0048006e00ff00dd008000010002008700630073007700fe01ef 00ee00ff00bb00fb1aff00f300ff00fc03ff00f908ff00fe00ff000d00ee 00f600970063005b0058000600e8010000340008003e00ff00df00000001 0000000100a500d900f700de00f900fe007f00ef00ff003f00df08ff00f7 04ff00ef09ff00f300ff00fc03ff00f909ff00be00da005b004d000500a0 008b0050000500b2010000280000000f00fb00fc0200000300510069007f 00df00ef007d00ff00f700ff00df007f19ff00f300ff00fc03ff00f908ff 00fd00ff00f000bb00a200bd00f1004f0072000f00be010000100000001b 007f00b4030000af007c00fb00fd00fb01ff017f00ff00ee00ff00fd17ff 00f300ff00fc03ff00f908ff00f500d700f000db0021006d00580037006c 002000020300000300ff00e8010000200008005b0045002f00ff009f00af 00e300ff00e300fa00ed01ff00df0cff00fb08ff00f300ff00fc03ff00f9 08ff00fb00ff00c800db0020002d00d000170068020000010100000700fb 00f80100003600d8000b0064003f00df00f700ff009f00f700fc00ff00f7 02ff00fd0aff00bf09ff00f300ff00fc03ff00f909ff017f005b005800d5 008c006b00460500000300de00e00100001600d40015006b001e00f701fe 00ef00be00ff01bf05ff00df04ff00fb0cff00f300ff00fc03ff00f909ff 00f700fe007b00c6003d00f3000f007000c004000019007f008000080000 001e00f0000f007c00cb00fd00ff00ef00fe00f700bf00fb09ff00f70fff 00f300ff00fc03ff00f908ff001f00ff00fa008e00a900c7004a01430070 00800000005001000072003f00000004000000030080000100d3009100da 00bf00ff00f500ff00d700ff00de00bf07ff00f700fd0eff00f300ff00fc 03ff00f908ff00fc00ff003f00fb00d7001d00f3009f007900c000900020 01000048001c00fb01000080000600e10007007800e700df00fb00fe007f 00f700ff003f00ef00fd18ff00f300ff00fc03ff00f907ff00fd00ff00f7 00ff00c6003d00d1001e00f100870078040000f7008c0200000300800000 004700bc006700ff00ef00ff009c00ff00fb00ff00f718ff00f300ff00fc 03ff00f908ff003b00fd00de00f100e5007800f200de0079006e03000003 009600f8000000200300003c00b700de00f700ff00b900f700de01f700bf 00f700ff00bf01ff007f04ff00fe01ff00fb00ff00ef07ff00f300ff00fc 03ff00f907ff00f200f300f600ef0070004c00a0003000c8000300040300 00010086004000000020030000080032000500e700ed00de00e300bd00db 00f300d307ff00f70fff00f300ff00fc03ff00f907ff00f200f300f600ef 0071004c00a400b000c80003000504000002004000000020030000280032 000500e700ed00de00e300bd00db00f300d3007f06ff00f706ff00fe07ff 00f300ff00fc03ff00f908ff003b00f500de00fe00e50078007200dc0039 006e070000200300001c00b7001e00f700ef00b900ff00de00f300f700bd 00f700ff00bf01ff007f04ff00fe01ff00fb00ff00ef07ff00f300ff00fc 03ff00f907ff00fd00ff00f700ff00ca003d00d5009e00f10087007900a0 0b00000700bc006700ff00ef00ff009400ff00fb00ff00f718ff00f300ff 00fc03ff00f907ff00ef00fc00ff003f00fb00d700190073009d003900c6 00980020000000200100000801000001000000010000004000e7004f00fb 00fe007f00f700ff003f00ef00fd10ff007f06ff00f300ff00fc03ff00f9 08ff001e00ff00fa00ff00a900c7004e0143007200e00000005003000002 04000043009000d000bf00ff00f500ff00d700ff00fe00af00df00ef05ff 00f705ff00f708ff00f300ff00fc03ff00f909ff00f700ff007b00c6003d 00f3000f007000cf00be06000008040000c300dc00ff00ef00fe00f700bf 00fb02ff00fe16ff00f300ff00fc03ff00f909ff017f00df007d00d5008e 00eb0047007100b20c0000ba00d501fe00ef00be00ff01bf05ff00df04ff 00fb0cff00f300ff00fc03ff00f908ff00fb00ff00cf00fb00f8002d00d0 0057006a000d00b600040001040000200100000800000008001500da00b7 00ff009f00f700fc00ff00f700fd01ff00fd0aff00bf09ff00f300ff00fc 01ff007f00e300f908ff00f500d700f100ff00f5006d00580037006c002a 00b60084008903000001000800100000004800100000002d00db001f00af 00e300ff00e300fa00ed01ff00df0cff00fb08ff00f300ff00fc00ff00fe 007f00dd00f906ff00ef00ff00dd01ff00bf00be00ad00d100470062008d 00b60040020000080100006d00a8002600c80100001100d800ab01ff017f 00ff00ee00ff00fd0eff00bf00ff007f05ff00f300ff00fc00ff00fd007f 00dd00f909ff00be02ff008700a0008b00d1002500f200b0020000040100 002f0010001700d00100000200f40047007d02ff00df007b01ff007f16ff 00f300ff00fc01ff007f00fd00f908ff00fe00ff009f00f900ff00950063 007b005e00c600aa0068000000200008001a010000350061001a00b10000 0040000600d700b100fe007f00f700ff003f00df04ff00df02ff00f702ff 00fb0bff00f300ff00fc01ff007f00fb00f8003f08ff01f7007f00dd00cd 00c400c70063003300b100b800500024000000660100001d0081000600c1 00000040002100d800cd00ef00ee00ff00bb00fb00ff00bf00f717ff0083 00ff00fc01ff007f00f700f8003f09ff01fb00fd00f3003a00b9001d005c 00ce0096020000d500800000000600000002008000000040000000470057 00ff02f71bff008300ff00fc01ff007f00ef00f909ff00dc00de00ff00ef 006900170093005500e800a200f4020000bc008000000005000000020080 020000d4007a003900bd00ff00de00ce1aff00f300ff00fe01ff007d00df 00f907ff00ef00ff00f600ff00fb00ff00c8003600d8002b006c001100ba 00810000000100b600c000000020030000080002000600db002c00ff00f7 00ff00db00ff00fd04ff00fd04ff00bf04ff007f06ff00f300ff00fe00ff 00fc001800c100f909ff00f300bd00fb00f700d80026009a005900740009 00ab01000081002000400000002002000004000800020016005d0043006a 00c100ab002102ff00fe16ff00f300ff00fc01ff00fd00ff00f90bff00db 00ff00fd00df00ff007f00fd009500ba0081020000400000002000ad00d0 0017004a00080002000600db0005002e00a000bb0057007f01ff00f700ff 00fd08ff00bf0aff00f300ff00fc03ff00f909ff00fe00de00ff00ef006f 00b700bf00fd00ed00f200f400d00200001a0100001700a600cb00d00100 00d4007a006c00bd0036005e009f1aff00f300ff00fe03ff00f90aff00bf 00fb00ff00fb007e00ff007f007e00ef00bf000000200008000000080001 0000002d00fa00bf007800400000004700df003300ef00c500fb007f00fd 00ff00fe00ff00fb0aff00df09ff00f300ff00fc03ff00f905ff007f02ff 00fb00f6007f00cd01fd00df00fb00bf00b800b000dc002000480000003b 000000040005008600c10140002100d8004400ec00280076001a003703ff 00bf0aff00fd03ff00ef04ff00f300ff00fc03ff00f90aff00df00fb00ff 009f00e700ff007f00e700fa006f005600200008000000da00c00000000b 007a00bd00a00040000600d700b100aa005b00d500ed007f00ff00fd07ff 00f70fff00f300ff00fc03ff00f90aff00f700ff00fe00ef00bf01ff00fd 00f600b200fa0200005e008000000005009700d300400000000200f40051 007800ac00be009a1bff00f300ff00fc03ff00f90bff01bf007f00ff00ef 00f700ff00fe004400d901000002003b001000200000002600c800800000 001100d800a3006d00110036004404ff00fd15ff00f300ff00fc03ff00f9 05ff00fe01ff00fd00ff00f900ff00f500f900fe00bf00fe007f009f0086 00db00020000000100bb006800000010003600d80100002d00db000a00e5 00a100b600c300f700ef01ff00df00bf0bff00fb01ff00f705ff00f300ff 00fc03ff00f90bff00fb00fe00ff00fb00ff007f00df00ff004600db0000 0001000200bb005000200000003600d800000008001500da0083006d0041 00b600c700ff00f701ff00bf16ff00f300ff00fe03ff00f90bff00df007f 01df00fb00ef01fb00fa00da00c000000003005a00a00100001600d00100 000a00d5008c006a00c600b600bf1bff00f300ff00fc03ff00f904ff00ef 05ff007f00df00fc00ff00ef007700ff003f00f300de003000000018007b 00800100001e00f00100000300dc003300cf009800f7009e01ff00fd05ff 00ef02ff00f708ff007f03ff00f300ff00fc03ff00f90bff00bf00ab01ff 005f00fb007f00ff00d40075004e00080072001e02000003008001000080 00f0009c00b800e5005c005f05ff00ef14ff00f300ff00fc03ff00f90bff 00fb00ff00bf00e700ff007f00e700fd00ff008e00b90008001c00e90100 0001000a00a001000001004e007100a7003a00e500ff007f00df01ff00ef 00fb15ff00f300ff00fc03ff00f906ff00fb00ef02ff00ee007700fd00ff 00f9002f00ff00bf00f6007100ee000000f7008802000003008002000045 00de006800ed001d02ff00bd03ff00fe05ff00fe04ff007d06ff00f300ff 00fc03ff00f90bff00fb00ef007f00fb00df00fb00ef00fe00f7008f006b 00c3009600e00700000e00d3008700ad00e31cff00f300ff00fe03ff00f9 04ff00fb05ff00f9005e00fd00db00ed003700db00bf007a008200610024 0096004006000002000400d00049004e008600fd00ff00bf00fd00ff00f7 00fe00fd00df06ff00fb05ff00fd04ff00f300ff00fc03ff00f903ff00bf 06ff00f5005e00fd00db00ed003700db00bf007a00820061000000020040 0300000701000002000400d00001004e008200fd00ff00bf00fd00ff00f7 00fe00fd007f06ff00fe07ff00df02ff00f300ff00fc03ff00f90cff00ef 007f00fb00df00fb00ef00fe00f700df006b00c00500007b005e0100000e 00d300c700ad00e307ff00bf13ff00f300ff00fc03ff00f903ff00fe05ff 00f200ff007f00fd00ff00f9002f00ff00bf00fe0071004e00080500000f 00700100000500de002000ef000d00df01ff00fd02ff00af03ff00f703ff 00f405ff00fb03ff00f300ff00fc03ff00f90dff00bf00e700ff007f00e7 00fd00ff00de00b900ee000000080300000500ca004000000042007100ef 003a00f700ff007f00df01ff00ef00fb15ff00f300ff00fc03ff00f90cff 00eb01ff005f00fb007f00ff00d600fd004e003a00100008000201000002 00820060000000800040009c00b800e5005c005f05ff00eb00fb13ff00f3 00ff00fc03ff00f905ff00df02ff00ef02ff00fd00ff00ef007700ff00bf 00fb00fe003100e70080010000080100000100800200003300ef009800f7 009f00fd00ff00fd00ff00fe0cff007f02ff00bf04ff00f300ff00fc03ff 00f90dff01df00fb00ef01fb00fe00fb00ee00ac00400100000101000003 00400200005c006a00ee00b600bf1bff00f300ff00fc03ff00f90cff00fe 00ff00fb00ff007f00df00ff007f00d700c5006d00800100002000000020 00080000000801000003006d004100b600c700ff00f701ff00bf00ff00fe 00bf13ff00f300ff00fc03ff00f90cff00fd00f900f600bf00fe006f009f 008f00ff008b004e00c00000002000000010002000080010000000080001 000a00e500a100b600c300f703ff00bf03ff007f00ff00fe0eff00f300ff 00fc03ff00f90dff007f00ff00ef00f700ff00fe01fd00f1006d008a003b 001000200400005100d80083006d00110036004404ff00fd15ff00f300ff 00fc03ff00f907ff00ef04ff00ef00bf00ff007f00fd00f700bf00df00ec 002d0014005a0080000000050080020000a200d40001006800ac00b6009a 01ff00fd02ff007f00ff00df01ff00f707ff007f06ff00f300ff00fc03ff 00f90dff00df00e701ff00e700fa01ff00fc00bb001b00de00c00000000b 004000010000004000de00f6001100ba005b00dd00ed007f1aff00f300ff 00fc03ff00f90dff00f900fd00df00fb00bf009f00b300fe016e0066003b 00000004000d0082008100000043003100d8000000e4006c0076001b003f 04ff00ef00fe00ff00bf02ff00fd0dff00f300ff00fc03ff00f901ff00f7 0aff00bf00fe00ff017f00fd00ff00df00ff009900d500c80100003500b0 00010000004e00ae004000100033002b00c500da00ff00fd00ff00fe03ff 00fb04ff00df09ff00fe01ff00f300ff00fc03ff00f90dff00fb003700bf 00fd00ec00e600f700ff007b002800bc009a0100001700a00100000500e4 00d00002002800bd0036005e009f1aff00f300ff00fc03ff00f902ff00fb 08ff007f00fd00df00ff007f00fd00bf00fe00df00ff00c000b600c00000 002000ad00d00100000d00b6000400020005006e00a000bb0057007f01ff 00f701ff00b706ff00ef07ff00fd02ff00f300ff00fc03ff00f901ff00fb 0aff00fe006f00bf007d00f6001b00ef00df00be00c1003400d000810028 0200000400000002000400000003002a00c100ab002102ff00fe007f02ff 00df0eff00fd01ff00f300ff00fc03ff00f904ff00fb04ff007f04ff007f 00ff00b700ff00df00fe006f00ff00fb00ff00f804000002000400020005 006e00a000bb001300ff00fd01ff00e701ff00fe01ff00f704ff00ef03ff 00fd04ff00f300ff00fc03ff00f90eff00b700bf00fd00ec00e600f700ff 007b003900bd00ff00ef0065050000d00002000000bd0036005e008e1aff 00f300ff00fc03ff00f910ff007f01ff02df01ff00fb00ff00e603000040 000000400010002100a300c500d205ff00bf00ff00bf12ff00f300ff00fc 03ff00f909ff00fb03ff00fd00df00fb01bf00bb00fe00ef00cf00ee00ff 01dd00810002008100000040002100d800000020006e0076013b00ff00bf 00f700ff00bf0aff00fd09ff00f300ff00fc03ff00f907ff00ef05ff00f7 00ff007f00e700fa00ff00df00fc00ff003f00fb00ff0035006100000001 00000040000600d600100020005b00d500ed003f00df00fd03ff00bf0bff 007f06ff00f300ff00fc03ff00f90eff00fd01ff00bd00f702ff007d00ef 00ff00fd002f00100300000200f40100002c00be009a00df007b01ff007f 16ff00f300ff00fc03ff00f90fff006f00f600ef00ff01fd01ff00bf007f 00be006d00a80020000800000008001100d80082000000110036004500ff 00ef01ff00df04ff007700ff00ef0eff00f300ff00fc03ff00f900ff00bf 0cff00f600bf007e006e00bf008f00ff008f00eb00f300ff00e9005900b4 00200008001000000008000100020000008100b600c300fa00fd01ff00fd 03ff00f7007f00f700fe0dff00df00f300ff00fc03ff00f901ff00fb0aff 007f01ff007f00df00fe007f00df00f300ff00df00fb00f0006d00a00020 000800000008010000020000000100b600cc00ff00f700fd01ff00fd01ff 00f704ff00ef09ff00fd01ff00f300ff00fc03ff00f901ff00df01ff00bf 04ff00f705ff01fb01ff00ee00fe01ff00fb008d005d0080000300400000 00a00200002e00b600bb01bf03ff007f08ff00fe05ff00df01ff00bf00ff 00f300ff00fc02ff00f700f908ff00df05ff00e300e700ff00bf00f200da 00ff00ef00ff001e0026007d00f3000000010080000000c00200001800b6 009f00fb00ff00ef00df02ff00be0aff00bf07ff00f300ff00fc02ff00e7 00f907ff00ef07ff00fb007f00ff00d700ff005f00ff00fa00fb009b0097 001c01820060004300900040001000200065005c005700ff00fe00bd00f7 05ff00fd08ff007f06ff00f300ff00fc02ff00d700f900ff007f0eff007f 00ef00f900ff00df00fc00ff00bf00fb00ce003400c70080000500c00040 00e4004000100020003a00e500ff003f00ef01ff00df00f701ff00fd00ff 007f00f70eff00ef00f300ff00fc02ff00f700f903ff00f704ff00bf04ff 00fd00af00ff00bf00fe005300ff00ed00ff00cc007b00cd001d00e0000f 0070000700bc020000ef001400ff00fb00ff00f700ff00fb01ff00bf09ff 00df03ff00fe03ff00f300ff00fc02ff00f700f8002f00ff00bf00ff00fe 05ff00fd01ff00fb00ff00df007b00ef00ae00f700ff003b00ef00de00f9 00da007000f50038003b005c001c00b700000002000300ad00e300ce00fb 00f700bd02ff00df01ff007f00fd00f700bf00fd01ff00fb05ff00f701ff 00df00ff000300ff00fc02ff00f700f8003f06ff00ef07ff0017009f00b7 007b008e00fb006f00cf00480098012900d0001700290028003200040000 0009004e008300bd00db00f300d100bf007f00ef00ff00bf00fe00ff00df 00bf07ff007f06ff008300ff00fc02ff00f700f901ff00fe01ff00fe01ff 00ef03ff00fe02ff003d00f700bf0077008f007f00ef007d00e9004b0028 000000200008000200080100001000000001000200db00c9005d0061007b 00ef007f00ef003e00ef00de00fb00f700ff007f00f700fd01ff00f700ff 007e00fb00d700fb00ef00b700f700be00f300ff00fc02ff00f700f900ef 0aff00bf02ff01df00ef00fd01ff00fd00ff00bf00da00fb006c00400020 00080004000800200004009200a5001d00bf00de007f00ef00b7003f00df 00fb00ff005f01ff00fd009d00bf02ff00df01ff00fd00cf02ff00b701ff 00df006300ff00fc02ff00c100f900ef00bf02ff00fb04ff007f03ff00df 007b00ff00be00fb00ce00fb00ef00fe00f100df0078006400940052004c 000d0036001600c30040000a002600ba00ab007500b000f700df00710077 007f00f300ff007f02ff00ef00ff00fe00af02ff00f700fc007f00ff00fc 00ff00df00f300ff00fc03ff00f90bff00bf0dff00fc0088002400480022 00090012003f14ff00df0aff00f300ff00fc03ff00f901ff00ef01ff00fb 04ff007701ff00ef02ff00df02ff00ee00ff00df00fb007a00ec00880020 0008002200080000000d009600ad01ff00ef00ff00f700ff00f700bf00ff 007700fd00fe00ff00bd00ff00fd00ff007f00ff00fe00ff00fd00ff00fd 00ef00ff00f500ff007f00bf00ef007300ff00fc03ff00f9007f00ff00f7 0cff00fd009f00df00fe00ff007700fb00ff00df00d400de007800640091 0012004c000c0036000400c300400004008900be003500e70092003f00bf 00fd00fe005f02ff008306ff00fe00bf02ff00cf00fe01ff00a300ff00fc 03ff00f907ff00ef0bff00df02ff00fa00fb00ec00500020000800140008 0020000d009600af00ff00f702ff00fd01ff007f00ff00bf00ff00df00ff 00f702ff00fd03ff007f00ff00df00ff00ef00ff00f700ff00f300ff00fc 03ff00f918ff00fb00df0078008000240049000200090012001600db005f 1eff00f300ff00fc03ff00f910ff007d00ff00bf00f700df007f00cf00fd 00f3004b0068009000200008000200080100001000000009001601db005d 006c00fb00ff003f00ef00bf13ff00f300ff00fc03ff00f901ff00ef00ff 00fe08ff00ef03ff00f704ff00fa00fb00ed007d0076005a0059002d0036 008d009600af01ff00ef16ff00f703ff00f300ff00fc03ff00f901ff00f7 01ff007f04ff00fb04ff00df00ff00fb00ff007700fe01ff00de00df007f 00cf00da0024002600180022002400fb004600e700c900f700b500ff00d3 00bf00be00f500be00ff00f500ff00bf02ff00bf00ff00fd00ef007f01ff 00ef00fd006f00ff00fc007f00ef00f300ff00fc03ff00f9005e0dff01fd 00d700df00fe01ff00fb00ff00df007d00be00fa00f700fc004900140048 0010001c00c300d0001c00bf00be003f00e7009f00af00bf00fd00fe00ef 01ff00de00bf007b05ff00f700eb02ff00bb00ff00df00f700a300ff00fc 03ff00f907ff00ef07ff007f06ff00fb007b00ed00bd00f6000800220008 0000000d009600af0dff00f70fff00f300ff00fc03ff00f910ff007b00ff 00bf00fb00ce00ff00ef00fe00f100df007800ef00dc0042004400090032 001600c30040000a002600bb00eb007500b000f700ff007f00f7007f13ff 00f300ff00fc03ff00f918ff01fb01fd00fe002c0036001a002b001d00de 00ef1eff00f300ff00fc03ff00f910ff00bf00ef00fd00ff00af00fd00ff 00bf00ec00df006f006700b40049000400490012000600b30004000500a3 00de007900ef00b1007f00df00fb00ff007f13ff00f300ff00fc03ff00f9 01ff00fe04ff00ef03ff00fd01ff00fe007d00f700bf00f700df007f00ef 007d00f3006b00a900bd00b400080002000800a000080011000000010002 00da0059004d002800fb00ef007f00ef00be00df00de00fb00e700ff007f 00fb00fd01ff00f700ff003e00fb00df00fb00ef00b700f700be00f300ff 00fc03ff00f910ff00bf00ef00fd00ff00af00fd00ff00bf00ed00ff007f 00ef00fc0057006d000d00b6000600d300420000000200ba006b006d00b1 007f00df00fb00ff007f13ff00f300ff00fc03ff00f910ff00fb01ff00fb 00fe00ff00df00fe00ff00df01ff00df00f700ff006f00b5009a00570064 00c8001700bf00ff00f700bf00f700ff00bf00f714ff00f300ff00fc03ff 00f909ff00bf05ff007f00ff00bf00ff00cf00ff00ef00ff00f300ff00fd 00ff00fe003700ce000c00b6000600d300420000000100be007100e700b0 01ff007f00ff007f09ff00df08ff00f300ff00fc03ff00f904ff007f03ff 00ef00fb09ff00df00f703ff01fe00db007b002d00a5008a005b00440001 000601db007d006d00ff00fe0cff007f08ff00f300ff00fc03ff00f900fe 0dff00fd00ff00f700df00fe01ff00fb00ff00df007f00be00ff00f700ff 003f00de008c00b2000400c300420000000100fe00b500f700d300af00bf 00fd00fe00ef01ff00de00bf007b05ff00f700eb02ff00bb00ff00df00f7 00a300ff00fc03ff00f900fe00ff00bf01ff007f04ff00fb02ff00fd00ff 00df00bf00fb00ff007700fe01ff00de01ff00df00fb00b700c5006c0034 0091005700600089001500b6003f00e7009700bf00be00f500be00ff00f5 00ff00bf02ff00bf00ff00fd00ef007f01ff00ef00fd006f00ff00fd005f 00ef00f300ff00fc03ff00f900fd1bff00fe0057007d000d00b6000600d3 00c20024000600bb00eb007d00b517ff00fb00f300ff00fc03ff00f910ff 007d00ff00bf00f700df007f00ef00fd00f300ef00fd00ff00be005b004b 002d00a40002005900400000000200da0059004d002800fb00ff007f00ef 00bf13ff00f300ff00fc03ff00f91dff005300cd002d00f6000600fb0041 000000a2009e0069006f00b118ff00f300ff00fc03ff00f907ff00ef0bff 00df06ff00fe017f003f00bf009f00df00ce00ef006701fb01fd01ff007f 00ff00bf00ff00df00ff00f702ff00fd03ff007f00ff00df00ff00ef00ff 00f700ff00f300ff00fc03ff00f9007f00ff00ef0aff00ef00ff00fd009f 00df00fe00ff007700fb00ff00df00d400fe00ff00f700fb003700ce00dc 00f6000400f300c00024008900ae003500e70092003700bf00fd00f6005d 00fe00ff00bd008300fd00ff007f02ff00fd00fe00bd00ef00ff00f500cf 007f00bf00ef002300ff00fc03ff00f91cff00fe00db007b006f00ad009b 005f006400c9001601db007d006d18ff00f300ff00fc03ff00f910ff007f 00ff00bf00ff00cf00ff00ef00ff00f300ff00fd00ff00fe007f00ff007f 00ff009f00ff00ef00ff00e700ff00fb00ff00f801ff007f00ff007f13ff 00f300ff00fc03ff00f904ff00fb04ff007f04ff00fb00ff00fe00fb00fe 00fb00ff00fe00ff00df00ff00f700df003700ce00dc00f6006600f300c3 0024008900be003500e700b300f700df00f1007700ff00f300ff007f02ff 00ef00ff00fe00af02ff00f700fc007f00ff00fc00ff00df00f300ff00fc 03ff00f900ef0eff01df00ef00fd01ff00fd00ff00bf00de00ff007f00ef 00fe0057006d002d00b6009600db0042000a002600ba006b006d00b5003f 00df00fb00ff005f01ff00fd009d00bf05ff00fd00cf02ff00b701ff00df 006300ff00fc03ff00f801ff00fe02ff00bf00ff00ef03ff00fc01ff00fe 003d00f700bf00b7008f007f00ef007d00e900ef00bd00ff00bc005b004b 002900a500020059004400010002005a0009004d0021007b00ef007f00ef 003e00ef00de00fb00f700ff007f00f700fd01ff00f700ff007e00fb00d7 00fb00ef00b700f700be00f300ff00fc03ff00f901ff00fe04ff00ef03ff 00fe03ff00f701ff00df01ff007f00fc00ef003f00ef00bc007b00ef00f9 00ee00460059004b000d00a000c00041004f0021003b00cf007b00ef001e 00ef00de00fb009500ff007f00f700fd01ff00f700fd007f00fb00f700ff 00ef00f700ff00bf00f300ff00fc03ff00f900ef0eff01df06ff00da00df 00fd00f700de007700df007f00f6008e00f300c7003e00e2002000a30075 00b000f700df007900f7007f00f300ff007d00fd00bf00ff00ef01ff00bf 00ff00fd00ef05ff00df006300ff00fc03ff00f904ff00fb04ff007f06ff 00fe01ff00fb01ff00fc00fe00ff00f700fa00bf00df01fe008000d30044 002e00800092002100e70092003700bf00750076001d00ff00df00bd00c7 00fd00ff00ef00fd00fe00af00fd00fe01ff00fd007f00ff00fd01ff00f3 00ff00fc03ff00f921ff00d200db004900ad00a71cff00f300ff00fc03ff 00f901ff00ef0aff00ef02ff00df04ff00df00fb00ee00fd00ff00be00fb 00ff007e00ef00920059004900ad00a400490093005d006c00fb00ff007f 00ef00bf00fe02ff00fd00ff007f02ff00fd01ff00ef00ff00f701ff00bf 00ef00f300ff00fc03ff00f9007f0eff00fd00bf06ff00f400be00ff00d7 00fb00bf00d700fe00fa00a400f300d6003e00c80092002100e7009300af 00bf00f500fe00ef00f500ff00be00b3007f00ff00bf01ff00ef00ff00f6 00bf06ff00a300ff00fc03ff00f907ff00ef00ff00bf09ff00df02ff00fb 00df00fd00ff00de007700ff007f00f7008a00d30045006e00a2002100a3 007500b000f700ff007f00f7007f02ff00f702ff00fd01ff00df00ff007f 02ff00ef02ff00f300ff00fc03ff00f914ff007f02ff00fd00ff007f00ef 00fd007f00ef00fd00ff004600db004b002d00a200d2005900ef00b1007f 00df00fb00ff006f13ff00f300ff00fc03ff00f918ff00f900ef003d00ef 00bc007b00ef007900ef000200590049002d00a000400011004d00200052 00ca0069006d003e00ff00de00fb00e700ff007f00ff00fd01ff00f700ff 007f06ff00f300ff00fc03ff00f918ff00fb00df00fd00ff00de007700ff 007f00f7008e00f300c7007e00e2002100a3007500b000b600fa005f0075 003f13ff00f300ff00fc03ff00f900fe00ff00bf01ff007f04ff00fb02ff 00fd01ff00bf00fb01ff00fe01ff00fe00be00ff00d700fb00bf00d500fe 007a00c000d30040002e00800092002100e700930027009e00b900b6006f 01ff00fe00bf007f00ff00bf00ff00fd00ef007f00f701ff00fd00ef01ff 005f00ff00f300ff00fc03ff00f900fe0dff00fd00ff00f706ff007f00bf 00ff00df01ff00f700ff00fb00d600cb004a00ad00b700ff00bf02ff00bf 00f501ff00f500ff009f00ff007b00ff00bf01ff00ef00ff00f700fb04ff 00df00f700b300ff00fc03ff00f903ff00f7007f03ff00ef00fb09ff00df 00f700ff00fb00ef00fd00fe00be00fb00ff007f00ef00920059004900ad 00a400490093005d006c00da00f6006f006d00bf09ff007f03ff00fe03ff 00f300ff00fc03ff00f918ff00fc00fe00ff00f700fa00bf00df01fe0084 00d300c6002e00c00092002100e700920037009e003900f6001d00ff00df 00bd00c700fd01ff00fd01ff00fd00fe07ff00f300ff00fc01ff007f00e3 00f900fd17ff00fb00ff00fd00ff00fe007f00ff007f00ff009b00df006d 00ef00a7007300bb00fd00f801fe017f003f12ff00fb00f300ff00fc00ff 00fe00bf00dd00f918ff00fc00df007f00e700dd007700cf00fd00f60046 00d30043002e00a200800041006700b0003700da005900e5005f00f300ff 007f009d01ff00ef01ff00bf00ff00fd07ff00f300ff00fc00ff00fd00df 00dd00f901ff00fe04ff00ef03ff00fd01ff00fe007f00f701ff00df01ff 007f00f300ef00bd00ff00be00fb00ff007b00ef008a0059004d00ad00a0 00400011004d002c000000880069006d001e00db00de007b00c700df007b 00fb007d00f700fe00f700df003f00fb00df00ff00ef00f700ff00bf00f3 00ff00fc00ff00fd00df00dd00f918ff00fe01ff00f701ff00df00ff00fe 00c600fb00cf003d00e200600023006d00f000240068005d0075001d00f7 00df00fd00a900fe00ff00cf00fa00ff009f00fb00fc07ff00f300ff00fc 00ff00fd00df00e300f8003f18ff00fe04ff00fe00ff00f600f7007b00fe 00be009e006f00e700bf00b7009b00f900f700ff00f700ff00bf00ff00bd 01ff00bf00ef00ff00fd00ef07ff008300ff00fc00ff00fd00df00dd00f8 003f17ff00fd02ff00fe03ff009f00df00cf00ef00e300f300f100ff00f8 003e007e00bf00fe002f02ff009700ff00fb00ff00f900ff00fe00ff00fe 007f06ff008300ff00fc00ff00fd00df00dd00f907ff00ef07ff007f06ff 00fb0bff00f400690093007d00ec004800a5006f006d00be00ff00df00fb 00e70fff00f300ff00fc00ff00fe00bd00dd00f9005e0dff01fd00d706ff 007f00bf00ff00df01ff00f700ff00f800fc00e300fa003e00fb00f200b1 00f700fa003e007e00b700fe006f00fd00ff00df00bf007900ff00af01ff 00af00fd00f700fb04ff00df00f700b300ff00fc01ff007800e300f901ff 00ef00ff00fe007f04ff00fb01ff00ef03ff00f301ff00fe02ff00bf00ff 00df007f00ff00f300ff00fb00e500ff00d700ff00cc0086006f00ef0097 00a7009a00f900b700ff00f700ff00be00fd007f00ff00bf00f7007d00ef 007f00f501ff00fd00e701ff007f00ff00f300ff00fe01ff00fd00ff00f9 25ff00f2006100a3007d00f400240068005f0075001d00ff00df00fd00ef 0fff00f300ff00fe03ff00f918ff00fb00ff00bf00ff00fe01ff00fb00ff 009b005d006d00ed00b00040001000400008000000880069006d001600da 008a006b004700df007b00fe00fd00f700fe00f700df007f06ff00f300ff 00fc03ff00f925ff00fa00cc0046006a00b200240048005b007500b400f3 007b007d00bf0fff00f300ff00fc03ff00f9007f06ff00ef06ff00fd00bf 02ff00df02ff00f502ff00fe03ff00b502ff00f7007300bb00dd00dc004c 0024002f007d001f00df00cf00ef00a302ff00fd02ff00fe003f02ff00ef 02ff00a300ff00fe03ff00f901ff00ef0aff00ef02ff00df04ff00df00ff 00be00ff00df01ff00f700fe00fb00e400f300d4003e00c8008200210062 00900026001a00b100f6004d00f000af003c009d007d00ff002f00f7007f 00af00fd00f500ff00ef00ff00f701ff00bf00ef00f300ff00fc03ff00f9 04ff00fb04ff007709ff00ee04ff00df08ff00f400690092005400c80000 000800040008003600de00db00eb006f03ff00fe0aff00f300ff00fc03ff 00f918ff00fd02ff00fe03ff009f00df00cf00ef00e300f300f100fa00f8 001600d200000040000f00ff00af00ff009700ff00fb00ff00f900ff00fe 00ff00fe007f06ff00f300ff00fc03ff00f900ef00bf02ff00fb04ff007f 03ff00df00fb00ff00fe01ff00fb02ff00fe00ff00f701ff00df00fc00f7 00f600f3007b00fe00be009e002f006700b60016009200240018003d00f3 00ff003d00ff00bd00ff00ef00bf00ee00af00fd00ef01ff00fd007f00ff 00fd00ff00df00f300ff00fc03ff00f900ef00ff00fe01ff00fe06ff00fe 01ff01df01ff007f03ff00de01ff007701ff009f00ff01fe00fb00ff003d 00f200600022004800d0001600d200190025001500d7004b00ed00ad00be 00ff00cf01ff009f00fb00fd00ef00ff00f703ff00df006300ff00fc03ff 00f9007f00ff00fe04ff00ef02ff00f700fe02ff007f00f701ff00df01ff 007f00fa00ff00bf00ff00fe01ff00fb00fe00c3005d004d00cd00a00040 00000040010000880000000800020040008a0069000100d7007b00f30078 00f700fe00f700dc007f00fb00d700ff00ef01f700bf00e300ff00fc03ff 00f901ff00fe01ff00fe01ff00ef03ff00fe02ff007f00f700ff007f00df 01ff007f00fb00ef00bd007f00be00fb00bf007b00ef00e6007d00ff00dd 00ea00df00c80040010000480022000900120006008a0079000000df0053 0077006800f700ff00f700dc005e00fb00f700fb00a700b700ff00be00f3 00ff00fe03ff00f918ff00fc02ff00fd007f01ff00fe007e00fb00ff003f 00ff00de003a0048010400000010000800020001000b006d00ad00be00ff 00cf007f00ff009f00fb00fd00ef00f700fe01ff00fe00ff00df006300ff 00fc03ff00f900ef00bf0dff00df00db06ff00de00ff007f00e701ff00cf 00fd00f600d600f300ed00fe00e600bb00a8004000800036001a00550025 00140092000b002d008500b500d200eb00a900ef00ae00fd00ee003d00ff 00dd007d00cf007d00f700df007300ff00fc03ff00f927ff00fa00d40104 0000002200080002000c009b00ef006f0fff00f300ff00fc03ff00f904ff 00fb04ff007706ff00fe01ff00ea02ff00de00ff00d700df00f700df00fe 00f700ff00f700fc00bf00ff00b6003f006700b600240008002000010010 003000ff003d00ff00bc00ff000f00bf00fe00af00fd01ff00ef00ff007f 00ff00fd00bf00ef00f300ff00fc03ff00f918ff00f900ff00fd00ff00fe 007f00ff007f00ff00b500ef01ff00d900ff00f5006800800026005a001d 002c00440092008f005c0091007f00f500ff00f1007f01ff00f4002f02ff 00ab02ff00e300ff00fc03ff00f927ff00fa00d800440004000000140008 0002000d000b00ef00af0fff00f300ff00fe03ff00f927ff00fd00680090 002400480022000900120016008f007d00ef0fff00f300ff00fc03ff00f9 21ff00df007d00ef00ed00f600db00d80040040000020004008200000046 00d7003b007a00ed00f700fe00f700df003e00ff00df00fb00ef00bf00f7 00fe00f300ff00fc03ff00f901ff00ef00ff00fe08ff00ef02ff00df00f7 03ff00df00ff00fe01ff007f00ff00fb00fe05ff00ef00fa00d800440008 0040010000120004000200c6008f0aff00f703ff00f300ff00fc03ff00f9 19ff00fe00ff00d701ff00d700fe00ff00f500ef01ff00d900f700f50068 008000240400008b00480089007f00f500bf00f3007d00ef00ff00f500ef 00ff00fd00ef00bb00ff007f00ff00e300ff00fc03ff00f9005f0eff00fd 009f06ff00f400bf01ff00fb00bf01ff00f800bd00e700fe00bf00ff00b6 003f006700b700f600000070000000100000009f001d00ff003800ff008f 00bf00ff00af00fd00f700fb00ef00ff007f00ff00fd00ff00e700b300ff 00fc03ff00f907ff00ef07ff007f02ff00df02ff00fb02ff00fe09ff00fa 00d4000404000004009200a600470fff00f300ff00fc03ff00f921ff00d6 00f700ed00fe00e600bb00e8004000800024020000100012000b00090085 00b500d200fb00a900ef00fe00fd00ee003d00ff00df00fd00cf007f00f7 00ff007300ff00fc03ff00f927ff00fb00dd005400aa0024005100000008 000d008e00ee00ef0fff00f300ff00fc03ff00f914ff007f0bff00e600fb 00ff003f00eb00de003800680080000400000020020000030055000100be 00f300cf007a00ff009f00fb00fc00df00f700fe00ff00b700fe00ff00df 00f300ff00fc03ff00f918ff00fb00ef00bd00ff00be00fb00ff007b00ef 0086007d00ef00cd00e200db00d807000082010000960053006b006800b6 00f400570058001e00fb00df00fb00a700b700f700be00f300ff00fc03ff 00f922ff00fb00ff003f00ff00de00380000000400000048005501000014 004200c0008500b600d200cb006d00f7009f00fb00ef00ff00f700fe01ff 00fe00ff00df00f300ff00fc03ff00f921ff00fe00f700fd01fe00bf00ee 006200a3003400890030001200080000009b0020008d00bc00de00df00af 006f00fb00dd00ed00fd01ff00fd00ff007f01ff007300ff00fc03ff00f9 21ff00d700ff00ef00ff00e701fb009d00d8002e0048001401000004008f 00c2008300f700f100fb00f901fe00ff007e003f00ff00df00ff00cf00ff 00f700ff00f300ff00fc03ff00f903ff00f7007f03ff00ef00fb06ff00fb 01ff00de00f703ff00de01ff00f707ff00f8009000040100002202000012 00a0004600f700bb007b00ed01ff007f03ff00fe03ff00f300ff00fc03ff 00f918ff00fe00bf01ff00fb00bf01ff00fa00ff00e700fe00bf00ff00b6 003b00050094002e0000001400080100000f00c2008b003800f5008f00bb 00ef008f00f500e700fb00ef00ff007f00ff00fd00ff00e700b300ff00fc 03ff00f900fe00ff00bf0bff00fd00ff00f700bf05ff007f00be00ff00d7 01ff00d500fe007b00f500ef00fb00ff00d900f700f4006a008100240000 0030001200800000001b00000089003e00f5009f00b2007d00ed007f00f4 00ef00ff00fd00ef00bb00ff005f00ff00e300ff00fc03ff00f927ff00f8 030000100001010000020040000500b600d200eb006d0bff00f300ff00fc 03ff00f903ff00f70fff007f0bff00df007d00ef00ed00f600db00d80010 03000008010000020000004000050003007a00e900b600f600d7005b003e 00ff00df00fa00ef00bf00f700fe00f300ff00fc03ff00f927ff00fc0002 00800024010000010100000200400081002200ce00ef006f0bff00f300ff 00fc03ff00f918ff00f900ff00fd00ff00fe007f00ff007f00ff00b704ff 00fa00d50054004c0024000000580100001200a600030057007300fb00fd 02ff00fe003f02ff00ef02ff00e300ff00fc03ff00f919ff00de01ff00df 00f700ff00fe00f700f500e700fc00bf00d900b600300000008000260100 00200100000a00080081002000d5000f00b2006f008d007500e401ef00ff 007f00bb00fd00bf00ef00e300ff00fc03ff00f927ff00f8009000040200 000804000005002b007b00ed0bff00f300ff00fc03ff00f921ff00d700ff 00ef00ff00e701fb009d00d800240100004003000001002300f100fb00f9 01fe00ff007e003f00ff00df00ff00cf00ff00f700ff00f300ff00fc03ff 00f91aff007f00e701ff00cf00fd00ff00fe00f700fd01fe00bf00ae0062 00a0004c0024000000180003010000800001000400de00cf00af006f00ab 00dd00ed00fd00ff00fd007d00ff007d01ff007300ff00fc03ff00f918ff 00fc02ff00fd007f01ff00fe007e00fb00ff003f00ff00de003800000004 0036004000000025005400800000004000010022004200cb006d00f7009f 00fb00ed00ef00f700fe01ff00fe00ff00df006300ff00fc03ff00f801ff 00fe02ff00bf00ff00ef03ff00fd01ff00fe007f00f700ff00bf00df01ff 007f00f300ef00bd00ff00be00fb007f007b00ef0026007d00ef00dd00e2 00db00d8050000020300000400430063006800b600f400570058005e00fb 00df00fb00a700b700f700be00f300ff00fc03ff00f91aff00bf03ff00fb 01ff007d00ff00dd00fe00df00dc00400000002404000002000000010022 004200c3006800f7009d007300ec006f00fb00ff007f00ff00f500ff00bf 00e300ff00fc01ff007f00e300f918ff00fe06ff00fe00e602ff00eb00ff 00f900fc0040000408000001005b00a9006e00fa00df006d007f06ff0073 00ff00fc00ff00fe00bf00dd00f91bff00f701ff00df02ff00fb00ff003f 00ff00de003a00c8008800260600000100a800d500cf00b0006f008d0075 00ec00bf00ef00fd00ff00ef01ff00ef00f300ff00fc00ff00fd01df00f9 28ff00fc000409000042006a006900b600f600df005b007f06ff00f300ff 00fc00ff00fd01df00f919ff00fe04ff00fe00ff00fe00f700fd01fe00bf 00ef006700b600240008060000020042002b006900ff00ef03ff00fd02ff 003f00ff00f300ff00fc00ff00fd00df00c300f8003f17ff00fd02ff00fe 03ff009700ff00ef00ff00e700fb00f900f80088000408000001004b00a0 006f009d007500e4007b06ff008300ff00fc00ff00fd00df00dd00f8003f 27ff00fc00440036001a0600002200d100df00b9006e00fa00df006d007f 06ff008300ff00fc00ff00fd00df00dd00f928ff00fc0080002000480000 000804000002004200cb006800b70095005b00ca007f06ff00f300ff00fc 00ff00fe00bd00dd00f921ff00df04ff00fa00d40100000807000042004b 0028009000040053004a003f00fb01ff00ef01ff00bf00f300ff00fc01ff 007800e300f900fd27ff00fc00440026001a030000800200000100cf00b0 004a006800df006d007f05ff00fb00f300ff00fc01ff00fd00ff00f900fe 00ff00bf0bff00fd00ff00f700bf05ff007f00bf00ff00df01ff00f500ff 007b00ff00f700fa00bf00ff00b6003d00e0008809000001004a00a00024 0098007500e400fb01ff00ef01ff00df00ff00b300ff00fc03ff00f919ff 00bf05ff00fb00f500ef01ff00d900ff00f5006f00920024000803000002 02000002008b002900ff00ef03ff00fd02ff007f00f700f300ff00fc03ff 00f904ff007f03ff00af00fb06ff00fb01ff00de00f703ff00de01ff00f7 08ff00fc00040000000803000002020000400000000100120064005f005b 007f06ff00f300ff00fc03ff00f927ff00fa00d800880026001a03000082 00000080010000c9002000240098007500ec00bf00ef01ff00ef01ff00ef 00f300ff00fc03ff00f928ff00fd00540008002403000002020000010030 00c100de00ee00ff017f06ff00f300ff00fc03ff00f927ff00fd00680080 00240008030000020300008000080023001100db00ed00ef01ff007f00ff 00fd01ff00e300ff00fc03ff00f918ff00fb00ff00bf00ff00fe01ff00fb 00ff009f007d00ef00ed00f600db00d80050010000080300000204000040 0090000400530048000600ba009b00db000700b700f700be00e300ff00fc 03ff00f928ff006f00b40500000202000001000000480000000800db006d 007d00f700fe007b00ff00fc00ff00df00f300ff00fc03ff00f927ff00fe 01fa00000008030000020600009b00f500ef00ed00ee00f700fd017f00ff 00ef007300ff00fc03ff00f927ff00fb00dd00dc05000002040000480010 00fc007f00fc003f00bf009f00df00cf00ff00f700ff00f300ff00fc03ff 00f9005f06ff00ef06ff00fd001f02ff00df02ff00f102ff00fe02ff00fc 00bd06ff00fe000000080a000010006400df005b007f06ff00b300ff00fc 03ff00f919ff00bf05ff00fb00f500ef01ff00d900ff00f5006a00900026 009a00100900001000ac007d00f400c900e7006c007d009b00fd007f00e7 00a300ff00fc03ff00f901ff00ef00ff00fe08ff00ef02ff00df00f703ff 00df00ff00fe00ff00df007f00ff00f300fe01ff00f700fe00bf00ff00a6 003f00e700be00da00e7002603000080030000010000009b00f500ef02ff 00e703ff00f300ff00fc03ff00f916ff00df11ff00fe0026009a00100b00 00db006d007f06ff00f300ff00fc03ff00f927ff00fa00d400d800000088 002009000090000400050012003600ba01db006f00bf00f700be00f300ff 00fc03ff00f929ff00fe0034001800100a0000080059002c007f06ff00f3 00ff00fc03ff00f918ff00fd02ff00fe03ff009700ff00ef00ff00e701fb 00fd00f9006e00ef003600120200008003000091001a006400ef0077007f 06ff00e300ff00fc03ff00f901ff00f716ff00fe04ff00fe00ff00fe00f7 00fd01fe00bf00ed006200b40026001a0011090000040088005000640049 00e7006c007d009b00fc003f00ef00a300ff00fc03ff00f904ff00fb04ff 007706ff00fe01ff00ea04ff00d701ff00df09ff00fc004800a500220b00 008d0012007f06ff00f300ff00fc03ff00f927ff00fb01dd007f00ff0014 00490900000800ff00fe003f00bf009f00df00cf00ff00f700ff00f300ff 00fc03ff00f900ef00bf09ff00bf02ff00df00db06ff00de01ff00f701ff 00df00fd00f600ff00fb00ff003f00ff00de003e00ea00ba0026001a0030 0012090000040050006c006d00ee00f500fd017f00ff00cf007300ff00fc 03ff00f901ff00fe01ff00fe06ff00fe03ff00f700ff007f02ff007f00fe 00ff00bf007f01ff00bf00fb00fe00e602ff00eb00ff00e9006f00b00024 0028005500210900008800490024007d00f700f6007b00ff00fc00ff00df 007300ff00fc03ff00f9007f06ff00ef02ff00f703ff007f02ff00df02ff 00fb00ff00bf00ff00fe01ff00fb00ff00df007d00ef00dd00f600db00d8 005000480000008800200b0000010000000200aa001b00db000500b700b6 00ba00c300ff00fc03ff00f907ff00ef07ff007f00f701ff00df01ff007f 00fb00ff00bf00ff00fe01ff00fb00ff00df007d00ef00dd00f601db005d 006c009200ca006900090a0000d3006c000d00b2009e007b009700b400f3 009f006300ff00fc03ff00f901ff00fe01ff00fe05ff00bf00fe05ff007f 06ff007f01ff00bf07ff00ed00ff00fc007f00fe007f00120a0000550048 000b001a001700df006f02ff00e300ff00fc03ff00f910ff00df06ff00de 06ff00fe00e602ff00eb00ff00f900ef00b0002400480010000100100300 00200400007500ec008d0086000e007d00cd007500d600eb006300ff00fc 03ff00f92dff00120a00004b0040001200aa005b00df006f02ff00f300ff 00fc03ff00f912ff00fe01ff00fb04ff00f701ff00df02ff00fb00ff003f 00ff00de003f006f01b700db00d100e50080090000090000007f00ef00fd 007f00ff007c007f00cf007300ff00fc03ff00f900ef00bf00f70cff00df 00fb0dff00fd00f700ff00fb03ff00fb00fd00fc017e003f00010c000009 0096002e00fd008300fe00eb00df00a300ff00fc03ff00f92dff00120000 00080200002004000050006c000b001a001700df006f02ff00f300ff00fc 03ff00f92dff0b000009010000a2001b005b005f02ff00f300ff00fc03ff 00f904ff00fb04ff007709ff00ee00df03ff00df0cff00fc004c00a50026 0600004006000022001b005b004d00b700b600ba00d300ff00fc03ff00f9 11ff00df04ff00df00ff00fe04ff00fe00ff00fe00f700fd01fe00bf00ef 007700b700ff00bf00ff001200080a0000200009001a001700df006f00ff 00bf00ff00f300ff00fc03ff00f927ff00fd00ef00ba0036001e00390600 0040050000080096002c00fd009300ff006b00ff00a300ff00fc03ff00f9 10ff00bf02ff00df02ff00f502ff00fe03ff009700ff00ef00ff00e701fb 00fd00f9003700db00d900e500bd00c0090000200009002f00fd007f00ff 007c007f00cf006300ff00fc03ff00f92dff00120008040000400600002a 005b00df006f02ff00f300ff00fc03ff00f929ff00fe002c006800160001 00100400004004000024000d0086000e00fd00cd007700d600eb006300ff 00fc03ff00f92dff005a00aa00800a00000800bb009f00df00ef02ff00f3 00ff00fc03ff00f929ff00fe00b600da0069000100100b0000090116007b 001700bc00f300df006300ff00fc03ff00f927ff00fb007d00ec004800a0 00260f00001a005b000501b6009a00c300ff00fc03ff00f92aff00f700df 00e900ed0080001000400300008003000004000900000017005d004f007d 00f700ff007300ff00fc03ff00f92aff00bf00fb009e00dd0054006a0300 00200400000100080080001e007d00ff00fd00ff00ef00f300ff00fc03ff 00f901ff00ef00ff00fe04ff00bf02ff00ef03ff00f708ff007f00ff00fb 06ff00ef01ff02fe0077007b0099009d00c003000080040000090000000f 00f7008b02ff00e300ff00fc03ff00f912ff00fb01ff00fe04ff00df01ff 00f702ff00f700fe00bf00ff00b6003f00e700bf01ff00f700bf00880010 0c00001b00cb006f00bf00f700fe00f300ff00fc01ff007f00fb00f927ff 00fd00ff00fb003700de0019002401000080080000040100000c007d009b 00fd007f00ef00a300ff00fc00ff00fe00bf00fb00f910ff00f706ff007f 00bf05ff00fb00f500ef01ff00d900ff00f500ef009300e7009f00f900f7 00ea00f7004400800700000100020009001d00df01ff007700f700f300ff 00fc00ff00fd00df00f300f9005d0eff00fd00df0eff00fc00fd0bff0090 000000800b0000160079004f007e00ff00db003300ff00fc00ff00fd00df 00eb00f907ff00ef07ff007f06ff00fb07ff00df06ff00fe00de00f70026 005800800d0000080002000400800022009a005300ff00fc00ff00fd00df 00eb00f8003f2dff009b001000440a0000120005009400440043004600fb 000300ff00fc00ff00fd00df00db00f8003f26ff00fb00fd00fc01fe017f 001f00ff00de008008000002002b005f00ff00ef02ff008300ff00fc00ff 00fd00df00c100f928ff007f00f7003700da00190025004401800a000002 0004004900110024004300cf002300ff00fc00ff00fe00bd00fb00f92eff 00ab005000040b000009009200240093002600fa00d300ff00fc01ff0078 00fb00f929ff02fe0077007b009b009d00cc0b00000f00cf008300e700e3 00ff00e300ff00fc01ff00fd00ff00f928ff00ef00bf00b700db009800cd 0054006a003200000020020000100400000100160079007d003c00df00cf 007300ff00fe03ff00f927ff00fd00ff00fc007700de006900ed00120010 00440b000005001400440041004600fb006300ff00fe03ff00f910ff007f 00f701ff00df01ff007f00f300ff00bf00ff00fe01ff00fb00ff009f007d 00ef00ed00f601db005d006c00da00ea0026000800020e00000200040080 0022009a004300ff00fc03ff00f928ff007f00ef00db00fb006d00ed0016 00020d000002000500800082009e006300ff00fc03ff00f927ff00fd00ff 00fc007f00fe007f00ff001b009d00c400a00900000100000006008600e7 007700fb00e300ff00fe03ff00f928ff00ef00bf00f700df0059006d0094 0092008000400b0000090045002400c300df007300ff00fc03ff00f92eff 00a3004c01800b000002000400d3002600fb00d300ff00fc03ff00f928ff 007f00f700b700fb00db00f500fd00f700ff00a00c00004f007d00ff00ef 007300ff00fc03ff00f927ff00fb00fd00fc01fe003f007f000400920080 00400c000001002400c300df006300ff00fc03ff00f92eff0093000d0000 00840000002009000002004400c3004600fb00e300ff00fc03ff00f904ff 007f03ff00ef00fb08ff007f00df00f703ff00fe0eff00fe006f007d0082 000400800c000002000000800022005a001300ff00fc03ff00f903ff00f7 29ff00d600f600a300040b0000020100002000c1005300ff00fe03ff00f9 28ff00ef00bf00f7009f00f900f700b700d7004200820b00000b00440081 0042006900a300ff00fc03ff00f910ff00f706ff007f00bf05ff00fb00f5 00ef01ff00d900ff00f500ff00d300ef00ff00bf00ff004d00fb00ab0040 0e00004200d2006300ff00fc03ff00f900fe00ff00bf00ff00f709ff00fd 01ff00bf0bff00fd00ff007f01ff00fb02ff00fd00ff00fb003f00fe00bb 00f6006f00f700ff00bf00b00a0000020100000700ef00a300ff00fc03ff 00f912ff00fb01ff00fe04ff00df01ff00f702ff00f700fe00bf00ff00b6 003f00e700bf01ff00f700bf00b700dc00d200a00d000002002400690093 00ff00fc03ff00f92cff005f007d009d00fb008b0040000000220a000044 000400c200d2006300ff00fc03ff00f92eff00b700df004200c20d000001 0042006900a300ff00fe03ff00f92cff006d00ed005e00f300ab00400e00 002200d2005300ff00fc03ff00f914ff007f11ff00fb007d00ec00da00f7 006f006d0002000c00820f0000200000001300ff00fc03ff00f92cff00fd 00ef00f600f200d60040000500200c0000400009002300ff00fc03ff00f9 2cff00df00fd00d5006f002b004000010d0000400002006300ff00fc03ff 00f92cff017f009b009d00cf00ef00e30061002003000008040000020023 0061002300f300ff00fc03ff00f910ff00bf02ff00df02ff00f502ff00fe 03ff009700ff00ef00ff00e701fb00fd00f9007f02ff00bf00ff00d600a0 000000200e00008300ff00fc03ff00f927ff00fd00ff00fb003f00fe00bb 00f600440092008b0000000100200d000002002300ff00fc03ff00f911ff 00df04ff00df00ff00fe04ff00fe00ff00fe00f700fd01fe00bf00ef0067 00b700f7009f00f900f700ff00f600de00aa00a300510020030000040500 00200001002300b300ff00fc03ff00f930ff00f30054000100200d000001 004300ff00fc03ff00f92cff006f007d00a2004c008200801000001300ff 00fc03ff00f930ff00d2004400400d0000420040002300ff00fc03ff00f9 27ff00fb00fd00fc01fe017f001f00ff00db007b00a000aa0c0000240068 009300ff00fc03ff00f928ff007f00f700b700fb009b00f500440092008f 000d008000610c0000420040002300ff00fc03ff00f912ff00fe01ff00fb 04ff00f701ff00df02ff00fb00ff003f00ff00de003f00ef00bf01ff00f5 01ff00f700d600a600c000010d000040001300ff00fc03ff00f92cff017f 009b009d01cf00e200630c0000020040002300ff00fc03ff00f910ff00df 06ff00de06ff00fe00e602ff00eb00ff00f900ef00b100b700df00d900ed 00d5006b003b007900b800aa0c0000040048001300ff00fc03ff00f911ff 00f704ff007f01ff00bf03ff00fb01ff007d00ff00dd00fe00df00dd005f 006c007f00ee007d00ef001600820086004400c000400c00000200400023 00ff00fc03ff00f8007f00ff00fe02ff00bf00ff00ef02ff00f700fd01ff 00fe007f01ff00bf00df02ff00fb00ff00fd00ff00fe00ff007f01ff000f 00ff00ef00ff00f701fb007d00ed00da00fb006f006d00a2004c00820000 00400f00000300ff00fc03ff00f911ff00f704ff007f01ff00bf03ff00fb 01ff00fd00ff00df02ff00df00fe005b00ea006f00ed005600e600aa0079 004100a00e00000300ff00fc03ff00f92aff00f700df00f900ef00fe00f3 00ff007d00f700750068000000800300002004000001002100b300ff00fc 03ff00f910ff00df06ff00de06ff00fe00f606ff00f700bf02ff00b700df 004b00ed00a100220c000102006300ff00fc03ff00f932ff00f300510020 0d00000300ff00fc03ff00f912ff00fe01ff00fb04ff00f701ff00df04ff 00bf00ff00fe00bf01ff00b700fb00d501f500f3007b007d00bd00bc00d9 0d00000300ff00fc03ff00f929ff02fe017f001f00df008f00ef00c100a2 000000800c00000300ff00fc03ff00f932ff00f30061002200e800080300 000105000008000300ff00fc01ff007f00e300f92eff00b700de00db00ef 0060000000010d00000300ff00fc00ff00fe00bf00dd00f932ff00f100a4 00c10d00000300ff00fc00ff00fd00df00dd00f911ff00df04ff00df00ff 00fe04ff00fe01ff00f700fd03ff00f700ff00f7009f00f900f700fd00f2 00ff003d00f30063006800200c00000300ff00fc00ff00fd00df00fd00f9 2aff003f00fe00bf00fe004f00ff00af00ff0091002a00d000c805000010 0500000300ff00fc00ff00fd00df00fb00f8003f0fff00bf02ff00df02ff 00f502ff00fe03ff009702ff00f702ff00f9007f02ff00bd00fb00ff007d 009900bc00d90d00000300ff00fc00ff00fd00df00f700f8003f31ff00f3 0055006900100c00000300ff00fc00ff00fd00df00ef00f92eff00b700df 004b00ef00a10022004000c900280b00000300ff00fc00ff00fe00bd00df 00f932ff00f30063006800a000400b00000300ff00fc01ff007800c100f9 2eff00d600f600ab007d0060008400c1000000480b00000300ff00fc01ff 00fd00ff00f921ff00df06ff00fe00da00f7006f006d009600de008b00eb 006200450041003000400b00000300ff00fc03ff00f92eff00fe00f700ff 007d00fd00be00df004c0048050000080400000300ff00fc03ff00f900fd 2dff00f700ff007b00ff00b900ab00cc00f60028050000100400000300ff 00fc03ff00f92eff00bf00df00cf00ef00e70077007300b900d80b000003 00ff00fc03ff00f900fe00ff00bf00ff00f709ff00fd01ff00bf00fb01ff 00fe04ff00df01ff00f500ff007f01ff00fa01ff00f700bf03ff00f700bf 00ff00fd04ff00fa00d40b00000300ff00fc03ff00f92aff003f00fe00bf 00fe004d00fb00af007d0091002800d000c900200b00000300ff00fc03ff 00f910ff00f706ff007f00bf05ff00fb00fd00ef05ff00df00e7009f00f9 00f700fd00f300ff001c00ff00fb00ff00bd00dc0b00000300ff00fc03ff 00f935ff00fe00680b00000300ff00fc03ff00f904ff007f03ff00ef00fb 08ff007f00df00f703ff00fe0eff00fe01ff00a700de00db00ef00620055 0029003000c40b00000300ff00fc03ff00f909ff00bf2aff00fc00480b00 000300ff00fc03ff00f929ff02fe017f001f00df008f00ef00c100eb00f1 00f9006000220080040000080300000300ff00fc03ff00f92aff00b700fb 00df01f500fb007b007d00bd00bc00de00cd002800cc0a00000300ff00fc 03ff00f935ff00fa00d40b00000300ff00fc03ff00f92eff00bf00df00cf 00ef00e70077007300b900d800cc0a00000300ff00fc03ff00f92aff00f7 00df00f900ef00f600f3007b007d00b900ab00cc00e6002a00a200800020 0800000300ff00fc03ff00f929ff00fe007f00fe007f00ff005e00f700af 007d00cd00be00df004c004800400a00000300ff00fc03ff00f910ff007f 00f701ff00df01ff007f00f300ff00bf00ff00fe01ff00fb00ff009f00fd 00ff00ef00f701ff00df00fc00da00eb006f006d009600de008a00eb0062 00450041003000400b00000300ff00fc03ff00f92aff007b01ff00ef005e 01ff00fb00d0009e00530058006800b000040900000300ff00fc03ff00f9 2bff00df00fb01ff00fb00ff007f00ff00be00ff00cd005d00d6008a0900 000300ff00fc03ff00f932ff00f500f700d100b0004800900a00000300ff 00fc03ff00f935ff00fa00d5005a0a00000300ff00fc03ff00f92aff00f7 01ff00f700fd01ff01fd00bc00de00ef002f002700ba0900000300ff00fc 03ff00f929ff00fe01ff007f00ff005f00ff00df00ff00e300f700f300f9 006800b40a00000300ff00fc03ff00f935ff00fc00d800da000800010500 00800100000300ff00fc03ff00f932ff00f600f700b900b0004400100a00 000300ff00fc03ff00f9005d06ff00ef06ff00fd005f06ff00fb06ff00fc 00dd0fff00f701ff00fd006d00b400040900000300ff00fc03ff00f92bff 00bf00fd01ff00f700ff00bf00ff00bc00ff008c009800ca000809000003 00ff00fc03ff00f910ff00f706ff007f00bf05ff00fb00fd00ef05ff00df 00af01ff00fe00ef01ff00de00b9007b00f100f900620034010000040700 000300ff00fc03ff00f933ff00be00fe00ef006f00b700bb00d000200700 000300ff00fc03ff00f901ff00ef00ff00fe04ff00bf02ff00ef03ff00f3 01ff00fe04ff00df007f00ff00f303ff00fe01ff00e700bf03ff00f700bf 00ff00fd04ff00fa00d500580a00000300ff00fc03ff00f932ff00f500f7 00d100b0004800900a00000300ff00fc03ff00f916ff00df14ff00bf05ff 00be00ff005c004800920a00000300ff00fc03ff00f932ff00f600ff00d1 00f0006400b000040900000300ff00fc03ff00f929ff00fe00fb00ff007f 00ef00be00ff00df00fb00e600d70011003000c400900a00000300ff00fc 03ff00f933ff00be00ff005f006f00b6004400010800000300ff00fc03ff 00f932ff00fd00ff00dd00f601fa0038000000200700000300ff00fc03ff 00f932ff01f700f300b900dd00de00ee000000550700000300ff00fc03ff 00f910ff00bf02ff00df02ff00f502ff00fe03ff009702ff00f702ff00f9 007f02ff00bf02ff009b03ff00fe006c000000010700000300ff00fc03ff 00f901ff00f727ff00bf01ff00fe00ef02ff00b9003e00f000e900620034 00b8000000240700000300ff00fc03ff00f911ff00df04ff00df00ff00fe 04ff00fe01ff00f700fd03ff00f701ff00bf00fd01ff00f600ff00bf00ff 00bc00ff000f00bf00ee008e0000000406000020000300ff00fc03ff00f9 04ff00fb04ff007709ff00ee00df03ff00df0fff00bf007f08ff00fe0054 00000028000000800500000300ff00fc03ff00f932ff00f600f700b900b2 00d5005a00440900000300ff00fc03ff00f937ff00fe006c006d00410700 000300ff00fc03ff00f905ff00f305ff00e705ff00cf05ff009f05ff009f 05ff003f00fe01ff007f00ff005e007f00df00ff00e300f700f301f800fc 00ba004a0004000200080500000300ff00fc02ff00f700f900ef00bf00f7 02ff00f305ff00e701ff00df00fb01ff00cf05ff009f03ff00fd00f7009f 00fb04ff003f00ff00f701ff00f700fc007f00ff01fd00bc00de00ec002f 002600ba005800200700000300ff00fc02ff00eb00f905ff00f304ff00bf 00e704ff00fe00cf00ff00fb03ff009f00f701ff00df01ff009f01ff00bf 00ff00fe00bf003f02ff00f500ff00fe007704ff00fc00ff00de006c00ad 00010700000300ff00fc02ff00dd00f905ff00f305ff00e702ff00df01ff 00cf03ff00de00ff009f04ff00fe009605ff003f00f700bf02ff00fe007f 00ff00fd01b700f300b800dd00de00ee006e005500090600000300ff00fc 02ff00dd00f901ff00fe01ff00fe00f304ff00bf00e605ff004f05ff009f 007f01ff00bf01ff009f04ff00ef003f01ff00df00fb00ff00fe007b00ff 007f00fd00be00dd00c4007a00d3001900590028001000800500000300ff 00fc02ff00dd00f84300000300ff00fc02ff00dd00fc4300000300ff00fc 02ff00dd46ff00fc02ff00eb46ff00fc02ff00f746ff00fc4aff00fc4aff 00fc4aff00fe4aff00fe4aff00fc4aff00fc4aff00fe4aff00fc4aff00fc 4aff00fc4aff00fc4aff00fc4aff00fc4aff00fe03ff00fb04ff00fd00ff 008f03ff00fb00ff00df03ff00f700fe003f03ff00ef00fc007f04ff00bf 04ff00df00f804ff00bf00fd04ff007f00e303ff00fe00ff00c704ff00e3 00ff00fc03ff00f504ff00fa00ff007703ff00f500ff00df03ff00eb00fd 00df03ff00d700fb00bf04ff003f04ff009f00f7007f03ff003f00fd03ff 00fe007f00dd03ff00fc00ff00bb04ff00dd00ff00fc03ff00ee04ff00f7 007f007703ff00ee00ff009f03ff00dd00fd04ff00bb00fb00bf03ff00fe 00bf04ff005f00f7007f02ff00fe00bf00f903ff00fd007f00df03ff00fa 00ff00bb04ff00dd00ff00fc03ff00ee04ff00f7007f00f703ff00ee00ff 005f03ff00dd00fd04ff00bb00fb00bf04ff00bf04ff00df00ff007f03ff 00bf00f504ff007f00df03ff00fe00ff00bb04ff00fd00ff00fc03ff00ee 04ff00f7007f00ef03ff00ee00ff005f03ff00dd00fc003f03ff00bb00fc 007f04ff00bf04ff00df00fe04ff00bf00f504ff007f00c303ff00fe00ff 00c704ff00fb00ff00fc03ff00ee04ff00f7007f00df03ff00ee00fe00df 03ff00dd00fd00df03ff00bb00fb00bf04ff00bf04ff00df00fd04ff00bf 00ed04ff007f00dd03ff00fe00ff00bb04ff00f700ff00fe03ff00ee04ff 00f7007f00bf03ff00ee00fe000f03ff00dd00fd00df03ff00bb00fb00bf 04ff00bf04ff00df00fb04ff00bf00e004ff007f00dd03ff00fe00ff00bb 04ff00ef00ff00fc03ff00f504ff00fa00f7007f03ff00f500ef00df03ff 00eb00dd00df03ff00d700bb00bf04ff00bf04ff00df007704ff00be00fd 04ff007d00dd03ff00fe00fb00bb04ff00df00ff00fc03ff00fb04ff00fd 00e3000703ff00fb00c700df03ff00f7008e003f03ff00ef001c007f03ff 00fe000f04ff00060030007f02ff00fe000c007d03ff00fc001800e303ff 00f8003100c704ff00c100ff00fc0aff00f705ff00ef05ff00df05ff00bf 0cff007f04ff00fe05ff00fd05ff00fb07ff00fc4aff00fc4aff00fc4aff 00fc4aff00fc4aff00fc4aff00fc % % Run-length encoding savings = 27.9% % grestore showpage %%EndDocument @endspecial 37 1745 a currentpoint currentpoint translate 1 0.62503 div 1 0.62503 div scale neg exch neg exch translate 37 1745 a 484 1232 a Ft(Figure)g(4:)20 b(House:)g(geometry-inspired)c(sub)q(division)106 1372 y Fq(\017)22 b Fk(If)15 b(the)h(di\016culty)g(in)f(the)h(inte)n(gr)n (and)f(is)g(along)g(a)h(line)f(that)h(c)n(annot)f(b)n(e)g(made)i(an)e (e)n(dge,)g(make)h(sur)n(e)151 1428 y(the)h(line)e(is)h(p)n(ar)n(al)r (lel)f(to)i(an)f(e)n(dge)g(of)g(the)h(r)n(e)n(gion)e(that)i(c)n (ontains)e(it.)106 1527 y Fq(\017)22 b Fk(Cover)16 b(as)g(much)h(as)f (p)n(ossible)f(by)h(r)n(e)n(ctangles)f(\(or)h(p)n(ar)n(al)r(lelo)n(gr)n (ams\).)37 1627 y Ft(The)k(ab)q(o)o(v)o(e)e(example)i(violates)f(the)g (second)g(rule)h(and)f(th)o(us)g(one)g(pa)o(ys.)30 b(With)19 b(little)i(extra)d(e\013ort,)g(a)37 1683 y(signi\014can)o(t)f(impro)o (v)o(emen)o(t)e(is)g(obtained.)21 b(Replace)c(the)e(core)g(of)g(the)g (ab)q(o)o(v)o(e)g(routine)g(b)o(y)109 1784 y Fn (//------------------------)109 1840 y(TRIANGLE)23 b(T1\()g (Point\(0,0\),)g(Point\(1,0\),)f(Point\(0,1\)\),)324 1897 y(T2\()h(Point\(1,0\),)g(Point\(2,0\),)f(Point\(1.5,0.5\)\),)324 1953 y(T3\()h(Point\(2,0\),)g(Point\(2,1\),)f(Point\(1.5,0.5\)\);)109 2010 y(RECTANGLE)h(R1\()g(Point\(1,0\),)g(Point\(0,1\),)f (Point\(2,1\)\);)109 2066 y(REGION_COLLECTION)g(House)h(=)h(T1)f(+)h (T2)f(+)h(T3)g(+)f(R1;)109 2122 y(//------------------------)37 2222 y Ft(and)16 b(the)f(follo)o(wing)h(output)f(is)h(obtained:)37 2322 y Fn(The)24 b(integral)f(is)g(-0.407393)g(with)g(absolute)g(error) g(0.0203507)37 2379 y(105968)h(function)e(evaluations)h(were)g(used.)37 2478 y Ft(The)16 b(con)o(tributions)g(of)f(eac)o(h)g(of)g(the)g (user-de\014ned)i(subregions)f(is)f(giv)o(en)h(in)g(the)f(follo)o(wing) h(table.)584 2575 y(Region)51 b(In)o(tegral)105 b(Absolute)16 b(Error)p 559 2593 795 2 v 625 2633 a(R1)90 b(-0.283031)70 b(0.00816722)625 2689 y(T1)90 b(-0.221416)70 b(1.09496e-06)625 2746 y(T2)105 b(0.068406)70 b(0.0055473)625 2802 y(T3)105 b(0.0286485)47 b(0.00663513)p eop %%Page: 17 20 17 19 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1160 b Ft(17)37 1854 y currentpoint currentpoint translate 0.62503 0.62503 scale neg exch neg exch translate 37 1854 a @beginspecial 0 @llx 0 @lly 453.542175 @urx 382.676208 @ury 4535 @rwi @setspecial %%BeginDocument: vb16.ps % % /inch {72 mul} def /rlebuffer 2 string def /samples 256 string def /plotimage {607 583 1 [607 0 0 -583 0 583] % run-length decoding block { currentfile rlebuffer readhexstring pop pop rlebuffer 0 get 1 add %% number of copies of the sample /nsamples exch store %% save it away /lum rlebuffer 1 get store %% the sample itself 0 1 nsamples 1 sub { samples exch lum put } for samples 0 nsamples getinterval %% leave the pixels on the stack } image } def gsave 1.5 inch 3.3 inch translate 5.2 inch 5.2 inch scale plotimage 4aff00fe4aff00fe4aff00fe4aff00fe02ff00fc007f49ff00fb00bf49ff 00fb00bf4aff00bf4aff007f00804200000304ff00fe00ff4300000104ff 00fd00ff003f04ff00fe007f04ff00fc05ff00f905ff00f305ff00e705ff 00cf05ff009f05ff003f04ff00fe007f04ff00f904ff00fb00ff003f04ff 00fe007f04ff00fc05ff00f905ff00f305ff00e705ff00cf05ff009f05ff 003f04ff00fe007f04ff00f904ff00f8013f04ff00fe007f04ff00fc05ff 00f905ff00f305ff00e705ff00cf05ff009f05ff003f04ff00fe007f04ff 00f906ff003f04ff00fe007f04ff00fc05ff00f905ff00f305ff00e305ff 00cf05ff009f05ff003f04ff00fe007f04ff00f906ff003f04ff00fe007f 04ff00fc05ff00f905ff00f305ff00e705ff00cf05ff009f05ff003f04ff 00fe007f04ff00f906ff003f42ff00f906ff003f1fff00fe00ff007f1fff 00f906ff003f20ff007e20ff00f906ff003f42ff00f906ff003f42ff00f9 00ff00fe04ff003f42ff00f900ff00fe04ff003f42ff00f900ff00fe04ff 003f22ff007f1eff00f900ff00fe04ff003f1fff00df21ff00f900ff00fe 04ff003f21ff00bf1fff00f906ff003f1fff00fb00ff00bf1fff00f900ff 00fe04ff003f1eff00ef22ff00f906ff003f42ff00f906ff003f42ff00f9 06ff003f42ff00f906ff003f20ff00df20ff00f906ff003f20ff00f720ff 00f906ff003f42ff00f906ff003f38ff005f01ef001f01ff005f02ff00f9 06ff003f22ff00f700b713ff005f00ef00ce00ef01ff005f02ff00f906ff 003f38ff005f00ef00ae02ff005f02ff00f906ff003f1eff00df18ff00fb 00a100ee00ff00f1008703ff00f906ff003f1dff00fe19ff00fb00ae00ee 001f00ee00bb03ff00f906ff003f1dff00bf01ff007f16ff00fb00ae00ee 00ef00ee00bb01ff007f00ff00f906ff003f1dff00df19ff00fd006e00ee 00ef00ee00bb03ff00f900ff00fe04ff003f1eff00fe01ff00fc15ff00fd 006e01ee00f0008703ff00f906ff003f1eff00fd18ff00fe00e10083001c 007e00bf03ff00f900ff00fe04ff003f3bff00fe00ee00bf03ff00f900ff 00fe04ff003f1cff00df06ff00fd16ff00f100bf03ff00f900ff00fe04ff 003f1cff00fd24ff00f906ff003f1cff00df24ff00f906ff003f1bff00fe 25ff00f906ff003f1cff00ef007f23ff00f906ff003f1eff00bf22ff00f9 06ff003f1cff00fd007f05ff007f1cff00f906ff003f1bff01f724ff00f9 06ff003f1bff00b904ff00f71fff00f906ff003f42ff00f906ff003f20ff 00bf20ff00f906ff003f1dff00fd23ff00f906ff003f1dff00f523ff00f9 06ff003f1bff00bf08ff00fe1bff00f906ff003f1aff00f700fe09ff007f 1aff00f903ff00ef00fc007f003f1cff00fe01ff00f721ff00f903ff00cf 00fb00bf003f1bff00ef05ff00fb1eff00f900ff00fe01ff00af00fb00bf 003f1aff009f02ff00ef05ff00fd00ef1aff00f900ff00fe01ff00ef00fb 00bf003f24ff00f71cff00f900ff00fe01ff00ef00fc007f00071aff00bd 007f09ff00df1aff00c100ff00fe01ff00ef00fb00bf000719ff00fd00ff 00fe007f00ff007f00ef21ff00c103ff00ef00fb00bf003f42ff00f903ff 00ef00bb00bf003f1aff00fe00ff007f09ff00f719ff00f903ff0083001c 007f003f19ff01fd02ff00fe00ef04ff00bf1bff00f904ff00bf00ff003f 1aff00ef03ff00df21ff00f906ff003f19ff007b02ff00df00be00ef21ff 00f906ff003f1aff007f26ff00f906ff003f1bff00fb02ff00fb00ff00df 00ff00bf1dff00f906ff003f18ff00fe04ff00f707ff00bf19ff00f906ff 003f19ff007f00ff00eb06ff00bf1dff00f906ff003f19ff007f01ff00fb 24ff00f906ff003f18ff00ef00fd00f701ff007700ff00f701ff00fe1eff 00f906ff003f1aff00fd0cff00f718ff00f906ff003f1cff00df02ff00d7 07ff007f17ff00f906ff003f18ff00bf03ff00fb0aff007f17ff00f906ff 003f18ff003704ff00fb00ff00fb20ff00f906ff003f17ff01fe007f00ff 00fd03ff007f01ff00f71dff00f900ff00fe04ff003f17ff00fb00fd03ff 007f00ff00f700bf07ff00df17ff00f906ff003f19ff00fe0aff00ef01ff 00bf18ff00f906ff003f17ff00fe00fd00fe27ff00f906ff003f17ff00df 00fb02ff00fd01ff00fd00ff00df04ff007f00cf18ff00f906ff003f17ff 00f700df03ff00df01ff007e20ff00f906ff003f16ff00fe03ff00bf01ff 007d00ef01ff00bf1eff00f906ff003f17ff00fe02ff00fd05ff00ef1eff 00f906ff003f19ff00f700ff00fe00ff00f323ff00f906ff003f19ff00f7 01ff00ef24ff00f906ff003f16ff00f701ff00cf06ff00f504ff00f701ff 00fb16ff00f906ff003f16ff00f901ff00bf00f702ff00fb00ef00f720ff 00f906ff003f16ff00df00fb04ff00ef00dd00ff00df00fd1fff00f906ff 003f18ff00fb01ff00bf01ff00bf01ff00bf05ff00df00fd17ff00f906ff 003f15ff00fd03ff003f02ff00ef02ff00fb02ff00fe007f19ff00f906ff 003f16ff007f03ff00f701ff00fb05ff00fb1bff00f906ff003f15ff00fa 05ff00f700ff00ef00ff00bf02ff00bf1cff00f906ff003f16ff00fd01ff 00fb02ff00fe00ff00ef01ff00df1eff00f906ff003f15ff00d700ff00fe 01ff00fe00bf00ff00ef007f00fe02ff00df1dff00f906ff003f15ff00fd 00ff00fd07ff00ef01ff00bf1dff00f906ff003f16ff00d301ff00df04ff 00bf21ff00f900ff00fe04ff003f1aff00fb00bf03ff00fd01ff00bf06ff 00f715ff00f900ff00fe04ff003f15ff006f00bf02ff00f701ff00de00fb 22ff00f900ff00fe04ff003f14ff00fd03ff007f01fe00fb00df02ff00fb 08ff00dd15ff00f900ff00fe04ff003f14ff00fa01ff00ef07ff007f03ff 00f700fe1aff00f900ff00fe04ff003f14ff00f300fb007f02ff00df00e7 00ff007f05ff007f00fb1bff00f906ff003f14ff00ed00f700ff00bf01ff 00df06ff00fc01ff00fb1bff00f906ff003f14ff00bf00ff00fd00bf03ff 00f701ff00fb03ff00fb02ff00f718ff00f906ff003f14ff008b00d701ff 01df00ff00df00fb00df01ff00fe01ff00fe1dff00f900ff00fe04ff003f 13ff00fe00ff00b705ff00bf00ff00b70aff00ef16ff00f900ff00fe04ff 003f13ff00fe00df00ff00af03ff00fe02ff007f03ff00d71cff00f900ff 00fe04ff003f13ff00f9005e01df00fe00ff00f701fe009f02ff00f702ff 00fd05ff007f00ff00ef13ff00f900ff00fe04ff003f13ff00f000bd03ff 00ef01ff00f704ff007f01ff00df1bff00f903ff00ef00fc007f003f13ff 00e700fe007f00df00fd01ff00ef00ff00df01ff00bf01ff00fe07ff007f 15ff00f903ff00cf00fb00bf003f13ff00da007b00fe00bf00f702ff00bc 00df00bf01ff00bf01ff00fd00ef1cff00f903ff00af00fb00ff003f13ff 008d00ed00ff00bf00ef00fd07ff006f02ff007f1bff00f903ff00ef00fb 00ff003f13ff001900ff00f907ff00df03ff00fe01ff00fd1aff00f903ff 00ef00f8007f000712ff00fe00f7008701ff01f701ff00ef00ff007f02ff 007f01ff007f06ff00fb14ff00c103ff00ef00fb00bf000712ff00fc0027 00cf00eb00ff007f02ff00f700fe04ff00fd00ff00bf1cff00c103ff00ef 00fb00bf003f12ff00fa00de007900db01fe02ff00bd00f700fe01ef02ff 00fb1dff00f903ff00ef00bb00bf003f12ff00e300df00fb00af00fd00ff 00ef00fd00f700bf05ff00ef00bf1dff00f903ff0083001c007f003f12ff 00eb007800e700df00fb00bf00ff00ef01ff00df00fd00bf01ff00fe05ff 00fd00fe03ff00f712ff00f904ff00bf00ff003f12ff00c6007300df003f 00fb01ff00df06ff00fe1fff00f906ff003f12ff00ac00ef00de005f00ef 00ff003f00ff00fb04ff00fb04ff00ef1aff00f906ff003f12ff0019007f 003d007f00df00fa00ff00df00ef00bf00ff00f704ff007f01ff00df01ff 00fb03ff00ef12ff00f906ff003f11ff00fe0023008f00fd00ef00bf00f7 00ff00bf00f7007f00ff00ef00fd01ff00fb1fff00f906ff003f11ff00f8 0046005e00f700ef007f00ff00fd00ff007f00fe00ff007f03ff00f701ff 00f702ff00ef17ff00f906ff003f11ff00f000ce007d00f7009a00ff00f7 00ff00fc01ff00fe00ff00df02ff00eb00fe1dff00f900ff00fe04ff003f 11ff00f0001d00fb00ef00b100ff00ef00ff00ef001f01ff00df00ef01ff 00ef00fb07ff00df15ff00f900ff00fe04ff003f11ff00c2003900e700fe 005400ff005f00ff00fd00bf03ff00fe0dff00ef12ff00f900ff00fe04ff 003f11ff0086007500ef005c00f101ff00d700fa00bf007f03ff00fd00ff 00bf03ff00fd19ff00f900ff00fe04ff003f11ff000c00e70096007b008f 003d007f00ff003d03ff007f01ff00fb1fff00f900ff00fe04ff003f10ff 00fe000b00470038007600c600fa00fe009f00f701ff00df01ff003f01ff 00bf04ff007f18ff00f906ff003f10ff00fc0012008f007900c7009c00f5 02ff007f00ff007f00ff00fe10ff007f10ff00f900ff00fe04ff003f10ff 00f80004009c00f1008c005b00c700f800ff00bf00f401ff00f700fe0dff 00f913ff00f906ff003f10ff00f0000a006900e30018009300af00fe00f4 00db00ef02ff00fd05ff00fe00ff00df19ff00f906ff003f10ff00e00034 00c300ee0060007f009c00ed00fe007b02ff00df02ff00f704ff00ef03ff 00ef14ff00f906ff003f10ff00c000490003008c00f000af007d00fb00ed 00df05ff00be20ff00f906ff003f10ff0080009200010038008500bc00fb 008f00f800bf00df00fb02ff00fd00ff009f00f705ff00fe17ff00f906ff 003f10ff000100a0000000770083003d00ef00af005504ff00f700fb21ff 00f906ff003f0fff00fe00000060000400a20016007700cf007f007700fd 00fb00e704ff00ef01ff00df09ff00fd11ff00f906ff003f0fff00fc0000 008000030046000c00f700de00bd00d6007f00ff007f00fb02ff00ee0eff 00fd10ff00f906ff003f0fff00f80001002000060088005900c7007e00f6 00af00fd04ff00f705ff00bf08ff00fb10ff00f906ff003f0fff00f00080 0000004c00800027008f007b00e4007f00f700fd04ff00ef0fff00bf0fff 00f906ff003f0fff00e00000008000030040006b003e00ff00dd00bb00ff 00fb04ff00d707ff00bf17ff00f906ff003f0fff00c30040000000020000 008a005900f300d0001f00df00fb00bf00df00fe00ff00dd00b707ff007f 06ff00fb0fff00f906ff003f0fff008600500200001c00f300ff002c003f 02ff007f00fb01ff00e7007f0eff00f70fff00f906ff003f0fff000d00a0 01000001003b00f700af007200fe00df00f702ff00fb00ff007304ff00fd 04ff007f01ff007f11ff00f900ff00fe04ff003f0eff00fe001a00400100 0004007300cf003d00c7009d00ff00ef00fd02ff00f700ba20ff00f906ff 003f0eff00fc001600d00100000500a7009e007b004501ff007f00fb00ff 007f01ff005f04ff00ef05ff00fe01ff00fb10ff00f900ff00fe04ff003f 0eff00f80009002001000009004f00be00e200a6007d00fe04ff00fb00f7 00ff00f70cff00fd00fb0fff00f900ff00fe04ff003f0eff00f000130040 01000012005e007800c7000d00e901ff00ef00fc01ff00fd007f009f05ff 00df05ff00fb11ff00f900ff00fe04ff003f0eff00e00004018000000021 001400f7008c00a900d700fb04ff00fb00ee20ff00f906ff003f0eff00c0 000900800100004a006100e70050003f00df007f00ff00bf01ff00fd00e7 007f00fb07ff00ad00ef05ff007f0eff00f906ff003f0eff008000020001 01000014008100ce0030006700be00fb01ff00fb00ff007d00f609ff00df 16ff00f906ff003f0eff0021030000490000001c00c200de00bd00f700fe 01ff00f300ff00df00f700ef01ff00f709ff00fe11ff00f906ff003f0dff 00fe0002030000020001003900c1009e00f300d701ff00ef00f700fe00fc 00ef00fe00bf1eff00f906ff003f0dff00fc0024008002000020000200d1 000b003b00f700bf00fb00ff00df00ff00fe00db00ff007d0aff00fb13ff 00f906ff003f0dff00f8000900200300000100a30004007b00ef009b00f7 00fe00ff00f700fb006f00df00fa07ff00bf01ff00f701ff00df01ff00bf 0dff00f906ff003f0dff00f000120040030000090064000800e700bf007b 00ff00fd00ff006f00dd00ff009f00fb00df0cff00ef10ff00f906ff003f 0dff00e10022008000000080010000020050001100ef00bc00eb00df02ff 00ba00df00fd01bf01ff00bf1bff00f906ff003f0dff00c200400400000d 00a000ab008e007d00ee003f02ff00af00fd00f700ff00f700fd01ff00fe 07ff00e711ff00f906ff003f0dff0086009000800300000a0000006f007c 00fb00dc003f00fb00ff00fb00a301ff00df00fb0aff00df12ff00f906ff 003f0dff00090024040000160000001e003d00f700b400bf00f700fd007f 00c600ff00df00fd00a706ff00bf00ff00fd14ff00f906ff003f0cff00fe 00320048020000040000006d0004009d00fb00cf00bb00ff007f00f700ee 00fd00ef00fe01ff00f71dff00f906ff003f0cff00fc0060009002000002 00000058000000390086009e00e000cf00df00ff00ed007f00ff00f500ff 00cd007d0cff00fb0fff00f906ff003f0cff00f800c50020004002000001 0024001600d300cf003e008700fa00ff00f700fe01ff007f00ed00bf07ff 00fe15ff00f903ff00ef00ff007f003f0cff00f300cc040000090040000c 00a3009f0079007f00bf02ff00df00bf00eb009f08ff00fd15ff00f900ff 00fe01ff00cf00ff007f003f0cff00e10038002000800200001200c0000b 006b003c0073009700f900fe00df00af00fe00bb00ff00fc00bf009f04ff 00ef17ff00f900ff00fe01ff00af00fe007f003f0cff00c4007300c10200 000100210000000200c2007900e4005e00e701ff0077007b01ff00b500f7 007f1dff00f900ff00fe01ff00ef00fd007f003f0cff008400e700820040 020000820040002500a000f200aa003f00ff00bf00fb00de00ff00ef00bf 00e900ff00fd03ff007f03ff00fe00f704ff00fb0cff00f900ff00fe01ff 00ef00fd007f00070cff003100ef00340090010000010004000000420008 006f0010007701fe00ff007701ff00fb00eb007b00f707ff00fe00ff007f 12ff00c103ff00ef00fb007f00070bff00fe0033000f0079002001000002 004900000084008000ce0020007f003f00f500fe00af00bb00fe007f006f 00f600ff007f00fb08ff00ef03ff007f0cff00c103ff00ef00f8013f0bff 00fe00e5003e00f200c8000800000004001200010029002100bc00e000cf 00fd00ef00df007f03ff007d00ff007f05ff00ef15ff00f903ff00ef00bf 007f003f0bff00f800de003900e000b00002000000050034000000120005 00680081009f00fb00ef00fd00ff00bf00e900ed006d00ff00bf07ff00f7 00bf13ff00f903ff0083001f007f003f0bff00f300de00fb00e600200100 00030048000100a4000000530087003d00ff00fd00f700df01ff00be00ff 00ef00ff00ef0dff007f0dff00f904ff00bf00ff003f0bff00ef007900f7 008c0040000900000004009000430048000500b60016007100ff00df008b 00fd003f00ff00fb00ff00df00fc1dff00f906ff003f0bff00d6007f00cb 001800800090004000090020008000900001004c000c00f700df00fd00b7 01ff007f00f5006f00fe00ff00df06ff00fe01ff00fe11ff00f906ff003f 0bff008d00e7009d00750001002000000002004100080020000200d80001 00c7003e00f6001600f700fe00ff00f700fe00bb00f700e107ff00df13ff 00f906ff003f0bff00bd00ff00bc006700020048000000240082001a0000 000d0010000300be007d00df008702ff00fb00ff007f00ee00fd07ff00e7 06ff00fe0bff00f906ff003f0aff00fe001700ce007900c6000400900002 0049000000260000001b00600005001c00f700fc005f00f701ff00df007f 00ee007f00d604ff00fe16ff00f906ff003f0aff00fd0067003f00f300ac 00190020000400920003004d0000000600000048007900ef00fd009300bf 00fe00ff00be00f700fe00ff00ed01ff00fd01ff00fd16ff00f906ff003f 0aff00f900be00b900ff001400320040000900200004001a0000008d0020 009400f300ef00f80067007f00fb00ff007f00ef00bf00fd00d706ff00ef 14ff00f906ff003f0aff00f7007e01f70030006700900012004800090024 0004010000600027009f006900cf00ff00df01ff00df00ff00f604ff00fb 01ff00f714ff00f906ff003f0aff00f100f800f700de004200ce00200004 00900003004000000004000000d0000f009d00ef00be007f02ff00bf00fd 00cf007f1cff00f906ff003f0aff00cf00f500ef005c00c1008c00410001 0020000400c000100000000100b0001e003900c300bc01ff00fb00ff007d 00ff00de00bf00f704ff00df15ff00f906ff003f0aff009b00ef00df00fb 008b000800e000920040000900200000000800000060000600f200160037 00fe00ff00df00f701ff00fb00ef00bf00ff00bf08ff00fb0fff00f906ff 003f0aff007f00db00bc00f6008400b300c1002400800052004102000040 000900e4001f00ff009f007f00ef00ff007b00cf003901ff002f1aff00f9 00ff00fe04ff003f0aff00b7001f00fb00e5000c00e300da004900010020 0080000000200100001300c8001900d700bf00ff00df01ff00fd00d700fd 1cff00f906ff003f09ff00fe00ff00df00f500ee005900c700b800920002 004904000005009400b7008f007d00ff00bf00ff00fe007f01ff00fe1bff 00f906ff003f0aff00fd00ff00c7009800a3009e00790020000400120100 00800100008a0021004700fe00f301ff00fb20ff00f906ff003f09ff00f7 00fd007f006b0068007f002e00f00040000900200300000100b4001000ff 007d00f500fe00ff00b700be00f6009f01ff00bf01ff00ef04ff007f03ff 00ef0cff00f906ff003f09ff00fe01ff005c005100ef003d00e300000012 004000080200000100280083005e00fb00ee007d02ff00df007b01ff007f 1aff00f906ff003f09ff00ef00f501ff00c100bc007300c6000000a40090 0300000600da0003007800f700af007f00ff007f00db00f500bf00f71cff 00f906ff003f09ff00bf00df00f9007f0087003b00f7008c004100490020 0300000c00a6000e006700cf007a00f702ff00eb01ff00f704ff00bf00fb 08ff00fd0aff00f906ff003f08ff00fe00fb02ff008600f700ef00180080 0030004003000009006c000800ef00df007d000f02ff00fb02ff00fe03ff 009f09ff00fe0aff00f906ff003f09ff00bf00ff00f700ff009a00f700de 003100000024008001000020000000020098001100ef00bf006b008f00fe 01ff006e06ff007f09ff00fe0bff00f906ff003f09ff007f00df00ff00fe 007b00cf00bc00e2001200c90400000d00b00003009e007900ee00bf00ff 00fd00bf00f504ff00ef18ff00f906ff003f09ff01fe00f700fd00fb00bf 00fa00d60014009200020300001200200007003f00f700bc007d00ef00fd 00fb00bf00fb01ff00f702ff00ef01ff00bf13ff00f906ff003f08ff00fb 00fd00ff006f00f900ff005c00ff00880019002c040000040080004a0039 00df00f401b700ff00fb00af00ff00fd01ff00fb19ff00f906ff003f0aff 00fa007f00f700ff003900fb0018003300c8000905000034007300f60033 00ef00bf00fd00ff00f700ff00fb1cff00f906ff003f08ff00ef00f901ff 00ef00fc007700ef00290067001000120044000000020000008000000068 00e700de00d700ff007f00df00fd00ff00a701ff00bf00ef01ff00fd0cff 00f708ff00f906ff003f08ff00f702ff00ef00fd00f700ac0060008f0060 0024008002000010001200d800cf007800c500de00ff00f700ee02ff00bf 00ff00f701ff00fe16ff00f906ff003f08ff00f700df00f700ff009f00fa 00cf00ff00c5009c0070004900200300000100b4001f007f009f00f901ff 00f700df007f00ff00fe00ff00df07ff00f710ff00f906ff003f07ff00fe 03ff00bf00eb00fe007b0083003b00f000920040001000400120000b0060 003c00ff000f00ff00ef00be00fb05ff00fd00fb17ff00f906ff003f0aff 00f700fe00ff00df00f800f2004400b100ed0024008002000010002600d2 000900e5000d00ff00dd00ff00dd01ff00df02ff00f700fd17ff00f906ff 003f07ff00fb01ff00f700ff00df00ff00f300f700ac00e600de00490300 0080000d00a0001300cf005b00cf00f9007f00ef00fe04ff00df0aff00fd 0cff00f906ff003f0dff00cf00fb00cc005900cf003c009203000040000a 00000047009000a300ff007b00f700ff00ef00ff007f01ff00bf0bff00ef 0cff00f900ff00fe04ff003f07ff00fd01ff00df00fb00fe00ff00d70034 005f00be007900a0030000010000008000da0028007f00fe00ff00fe0077 00ff00fb007f02ff00fe18ff00f900ff00fe04ff003f07ff00df02ff00ee 00fc00bf00ef002800f7009c00fb00c2040001010094004100ef00bf00f7 00b7007700ef01ff00bf01ff003f18ff00f900ff00fe04ff003f08ff00fb 01ff00df01ff005f00e200de00b900e30084004004000003006d002100bd 007700ff00eb00ff006f1eff00f900ff00fe04ff003f09ff00fb03ff00fe 0087009d00fb00ef0120020000080000000600500007003b01ff007d00bf 00ff00df03ff00fd18ff00f900ff00fe04ff003f07ff00b7007f00ef00ff 007f00bb00fd00390023007900f7000a00510048050000940006005200ef 009e00a600fd00ff00bd00fd00ff00e700fd00ed00bd00ff00fb01ff00ef 01ff00fb01ff00fe01ff00fb00ff00f700bf06ff00f906ff003f06ff00fe 007f03ff00f301ff00be007b00cf005c00c0009800000020000000100000 0001004c001800f7009f00bb00d502ff00fb00ff00df1aff00f906ff003f 07ff00fd04ff00f500fe004500eb00de0031000100240400001200d80041 00c700bd00ff006b00f600ff00bf02ff00df00fb18ff00f906ff003f07ff 00fd01ff00fb01ff00fd00ca006d00ef007d00e700020049000403000005 0020004300de00fb00ff00b602ff00ef02ff007f01bf0eff00df06ff00f9 00ff00fe04ff003f06ff00fe03ff00fe00bf00ff00f800ff00be00fd00d4 00040096008800400200001a00600049005d01fb005b00df00ff007f00df 00fb02ff00df0fff00ef06ff00f900ff00fe04ff003f07ff00fb00fd01ff 00fd00ff00f700b700df009c00ff008d0009002400040080020000140080 0040003800ff005b00f700ef00f704ff00df10ff00df06ff00f900ff00fe 04ff003f07ff00fb02ff00fb00fe00ff00e300fe003b00d700b000b20008 00290020010000080009000000d2007300af007d00ff009f02ff00cf01ff 00ef00fd0eff00f700fe06ff00f900ff00fe04ff003f06ff00bf00df05ff 001700ff00fb00de00700027000000120048000001100002000000480067 00bc00ea006f00bf00ff00fe03ff00ef00fb0eff00fb07ff00f903ff00ef 00fc007f003f06ff00df00bf01ff007f02ff00de00fb00e700ff00e200ae 0000002c00800100000101000001000f00bf00cf007e00f300bf00fd03ff 007700ef17ff00f903ff00cf00fb00bf003f08ff00f702ff00fe00fb0077 01ff00b900c1009e00c000490020010000020100000f001e0071008700ff 00fb00df01ff00df00fb00cf19ff00f903ff00af00fb00bf003f08ff00ef 00fd00fb00ff00e500ff00af00eb00fe007b004f003800e0001600400000 0010002400c000000040002400e6009e00f700ef00bf00f701ff009f00df 00ff00bf02ff007f0bff00df06ff00f903ff00ef00ff00bf003f08ff00ef 02ff00ef02ff00fd00fb00d6007300c5002401800000006900a000100040 00d900f700ac00ef00bf007f02ff00bf00ef01ff00fd0cff00f708ff00f9 03ff00ef00ff007f00070bff00df00ff00dd00ff00bf00fd00e6002d00e3 00da004900010000004000920000004900d8000300c8005b00ff00fc01ff 00fe12ff00fb08ff00c103ff00ef00fe00ff000708ff00df01ff007f00ff 00f500df00ff00eb0098003f00cb003c0102004000010024008000d80041 007d0030006f00df007d00ff00bf00f500ff00bf00df01ff00fb0cff00fd 01ff00f905ff00c103ff00ef00fd00ff003f05ff00f702ff00df01ff00df 00fb00bf007f00f70096006b00cf007d0024000400900082000900010034 0040005a002000c700bf00fb00df007f00ef017f00fc01ff00df0dff00bf 00ff00ef05ff00f903ff00ef00bb00ff003f07ff00ef04ff00af00fd003f 00ff00f1007f005e00f3004800090020000000d20002006c004100b60080 00be009d00ff00be01ff00fb00fe01ff00fd0fff00fe06ff00f903ff0083 0018013f05ff00fe05ff00fe00f600ff00ee007f00e200ce00f900f70090 0012004800000024000000500002002f0083009d00ff00bf00f702ff00f9 00ff00df0fff00ef07ff00f904ff00bf00ff003f04ff00fb02ff00fe03ff 009702ff00f300bd00fb00cf002000240090001000680000000400060058 0002003b00f700df007300ff00bf00ff00de007f02ff00df0bff00bf02ff 00ef04ff00f906ff003f0aff00cf01ff00ef02ff00df003d00e700ce0040 00490120001000000008000c00260086007300cf00fd00a300ff00bf00f7 00fb04ff00fb08ff00fd0aff00f906ff003f0bff00ef00fd00df00b700fd 00ff00fe00f500ef001c00a0009300100048020000030068008800eb00de 03ff00af00f71aff00f906ff003f09ff00fe01ff009e01ff00fb00ff00be 00f700be00f9008b000c0020009200000040000000020080003100cf007d 00ff00df007b00ff00fe007f12ff00df06ff00f906ff003f06ff00f701ff 00fd01ff00fb00ff007d00cf00fe00ff004f00be00e20006004800440024 0200000100a00024008e007500ed00ad00c500ff007f00ef00ff00fd00bf 04ff007f00ff007f01ff00ef04ff00df00ff00ef04ff00f906ff003f0fff 00bf01ff00df007f00c6000c00f200820049030000600000003c00ef009f 00fb1eff00f900ff00fe04ff003f04ff00fe04ff017f00ff00fe007f00ff 00fb00ff003e00f100d8005900c000100092030000410000003900e300bc 00bf009f00f500fd007f00fd01ff00ef00ff00df0aff00fe01ff00fb00bf 04ff00f900ff00fe04ff003f0cff00fd00f701ff00fb00fe00f900ef0058 000300c80021006401000001000000010000004300de00b50077005f00ff 00fb00f703ff00fb0aff00fd03ff00fd04ff00f900ff00fe04ff003f08ff 00fd00ed007f00f700bd00ff00fe00ff00ef00ff00f300ef00e80067009c 00060048030000080020008700df00c100ff007d00ff00de04ff007d003f 0eff00fe04ff00f900ff00fe04ff003f0aff00fd03ff00ef01ff007f00dc 00f1000f007d002400900000001001000101004f003100e3007f00ff00f7 00db0aff00fb00fe08ff00ef04ff00f900ff00fe04ff003f04ff00f704ff 00cf00fd01ff00fd00ff00df00ff00fe003d0087001c007b0049002000a4 02000025009200120073000f00fb00f7001f00f700fe10ff007f08ff00f9 06ff003f03ff00ef06ff00fe01ff00fd01ff00fb00fc00f300d3003900e7 009200400048020000010000002800e700b5007500df007e00fb05ff00f7 08ff00fc00fe03ff01fb03ff00f900ff00fe04ff003f03ff00f701ff00df 06ff00f700fe00ff00f701ff001600f100cf002500800092010000100004 002400290044002d00ff00be00ff00de01ff00f70fff00fb07ff00f906ff 003f05ff00df01ff007f01ff00ef00bf01ff00fd00ff00bf00fd00c6001e 00f7009e0031000100240080010000080038002e008c003d00ef01ff00bf 03ff00ef16ff00f906ff003f05ff00bf01ff00bf01ff007700fe03ff007f 00fb00fa007b00e7003e00e6000200480000008000400012002000250010 00ef00df00fc00ed01ff00ef01ff00ef0fff00f705ff00f906ff003f05ff 007f04ff007f00ff00fe00ff00f701ff00df00f800b300df007900e40004 00d20100000100340002005f0051006f007e00ff00d801ff00df19ff00f9 06ff003f0bff00bf02ff00ef02ff00e1006f007e00fb00c8000900240000 0001000000090000001700c200de01ff00f107ff00ef06ff00fe0bff00f9 06ff003f02ff00f707ff004f00ef00fd00ff00ef00fe007f00ef0059005e 007900c30098001200400300000a002c000300be00b300e700aa01bf00f7 00ff00bf00fd00ff00bf006f07ff005f00df00fb00ff00df00fe00ff00df 00b702ff00f906ff003f03ff007f0bff00fd01ff00ed001e00fb00ef0020 00240090000000040100000600d30042003d004f00fe00d600df0fff00f7 0aff00f906ff003f0cff007f03ff00fd007f00b1007b00f7009e006000c9 01200200000800b4000e00f700ee007f00e907ff00e707ff007f06ff00f3 02ff00f906ff003f0eff00fe00ff00f700ff00fb00df007700ef003c0085 0092000000400100000800100049000a00ef00de00fd00fe00bf06ff007f 06ff00fb07ff00df02ff00f906ff003f03ff00ef0bff00bf00fd00ff00bf 00f700df007900410034002000900200000200d0005f006f00be00f600cf 00fb0fff00bf0aff00f906ff003f04ff00ef05ff00fe00ff007f03ff00fd 00f700e700be00e200060070004500200200004900200036009f007d00cf 007900eb00fd04ff00f708ff00fd00fe04ff00fb03ff00f906ff003f03ff 007f01ff00ef02ff00df01ff007f00ff00fe00ff00db00ea00ff00ae0079 00ed002c00e0008a008801000004008a0040006d003c00f200de00ff00c7 05ff00fb00ff00bf00ef03ff007f00ff00fd05ff00fc00ff00df01ff00f9 06ff003f0dff00df03ff00ed00df007d00f700ac003900cf001600900200 0014008000ca00ab00ef005b006f007f06ff00fd00ff00f704ff01df06ff 00fe02ff00f906ff003f01ff00fe04ff00fd05ff00df01ff00fe00f300bf 00fd00f700f4003e008f002900240004008000010029000100b600f300ef 00a9009f04ff00bf00ff00de06ff00fe00f703ff00df01ff00f700bf02ff 00f900ff00fe04ff003f0cff00fd03ff00be00dd01ff00ae00aa00e700be 009600420009008000010003000200290017004c005001ff00f703ff00fb 0aff00fd03ff00fd04ff00f906ff003f06ff00f704ff00fb00ff007f00ff 00f9007f00eb00fa00ff009e00eb00de00b900c500d00042010000120002 009b0000003d00d200bb007f00ff01fd00ff00ef01ff00ef09ff01fe00ff 00fb01ff00f700fb01ff00f900ff00fe04ff003f01ff00f701ff00bf09ff 00f700fb00f702ff00f900cf00de00f300c900a00045009002000022009e 00f30099003f00fe00ef0fff00f709ff00f900ff00fe04ff003f0fff00ef 01ff007f00ef00ff005f005b007a00f7008600e000580008008000200043 0060003500be009600f700fb00af01ff00bf03ff00fb07ff00c701ff00de 00ff00fe01ff00fe01ff00f900ff00fe04ff003f01ff00fd09ff00bf00fb 00ff00ef00ff00fd00f700ff00f900e300bf00fb00ef0019008000120040 000800280006009000560047001a00f700fd05ff00df00ff00e701ff00fb 01ff00fe05ff007f00ff00ef00ff00fb01ff00f906ff003f0cff00ef02ff 00f700ea00ff006f00ff00fd005f00f700bf007100210060008200030001 00090028009a00d200fb00c700df04ff00fb00ff00bf00fb04ff00df00fb 05ff00fe00ff00df02ff00f906ff003f05ff00fd0aff00ed00fe00ff00df 00fc005d00ff00bc006a009a004902000012004100ef00a8008200ff00df 01ff007f04ff007f05ff00bf00fb07ff009f01ff00f906ff003f08ff00fe 03ff009f02ff00d700bf00ff00df00fc00ef00be007d00c6001500960000 00090002000400b1005b00e1005f007d00ee00fe03ff00df02ff00f704ff 007f01ff00bf02ff00ef02ff00fb00ff00f906ff003f00ff00ef0aff007f 03ff00f102ff00fc01ff00fb009c001f00640000000200030060000500d5 0020009f00fb00bf04ff00d701ff00ef00f702ff00fe007f06ff00eb02ff 00fb00ff00f906ff003f0aff00fd02ff00fb01ff00fb00fd01ff00fb00df 00fd00e70094009600c800090060000000020000001d00a4003a007300ff 00fd03ff00df00ff007f04ff00fe07ff00f704ff00f906ff003f02ff00df 0aff00bf00fb00f7007f00f700ff00bf00ff009d00ff00df00b000670030 0013004800200000000400f8000f007b00fa009f00ff00fe01ff00df00ff 00df06ff00fd03ff00bf00ff00ef00ff00ef03ff00f906ff003f02ff00bf 01ff00fd06ff00fe01ff00f500bf00df00fb007f00ef01ff00be00e000cc 00e80004009000100034000800ba0004007700e7001f01ff007f00ff00fe 01ff00ef00ff00bf00df01ff00b702ff00fb00ff00bf01ff007f00ff00f7 00ff00df00ff00f906ff003f0eff007f00ff00fe01ff00f700ff00df00fb 00ef00fe008100ab0048001900200024000000510068002700af009d007f 00ef00df0aff00df0dff00f906ff003f0dff00fd02ff007f00df00f701ff 00eb00df00790077009800fe001200400020000900b0009f00d300c700fe 00f700ff007703ff007f00df01ff007f01ff00ef00fb00fd06ff00bf00ef 01ff009f00f906ff003f00ff007f03ff00fb04ff00ef02ff00ef01ff00df 00ff00fe007f00df007e00ff009600700049002000800090000000450000 00160086003b00f7007f00bb007f00bf01ff007f00fb00fd00ff007f02ff 00f702ff00fb00ff00df01ff00bf01fe00ff00df00f906ff003f05ff00f7 0aff003d00ff00bf00fb00ff00bf00ff00f6001800e70089004901010002 00d200000045007600d700ad00ff00fe01ff00fc00f702ff00fe02ff00ef 00bf06ff007d03ff007f00f906ff003f04ff00ef00fb08ff00fd00ef02ff 00fd00ff00de00fb00ff002f00cf008e00da0082000000030014008100db 005900b500f400fd00ef007f00ff00bf02ff00f702ff00fd03ff007f00fb 01ff00ef02ff00fb01ff00f906ff003f0fff007f03ff00f701ff00ef0075 007300de006b00a100040040000a00a90001007400f200fe00aa00fd0bff 00fd0dff00f906ff003f07ff00f705ff00fb00ff007f01ff003f02ff009f 00f200ef001e00f200f0002900110010005a000000660011009e00eb00f7 00ff00cf00fc01ff00fe02ff00fe03ff00ef02ff00e700fe007f01ff007f 02ff007904ff00fe00ff003f09ff00ef02ff00ef00ff00ef00bf03ff00fe 00ff00be00fd00ef00fd00e500d400130040002900640004005a0053005b 00cf00df01ff00fe00ff00fd02ff00f900fe00fb00f704ff00df01ff00bf 03ff00fc00ff007900ff00fe02ff00fc00ff003f00df11ff00fd00ff00bf 00fe00ff00bd00b500be00fb00c30068006c000c0069006c00000027009a 001b004b007f007700df02ff00f707ff00af06ff00fd03ff00f900ff00fe 02ff00fa00ff003f0fff00fb00ef02ff007f00f700ff00f700cf007d00f7 00dc00d00009000000ae00940000002c008b00a700df00b902ff00bf01ff 00fd03ff00fb02ff00ef03ff00df01ff00fe02ff00f900ff00fe02ff00fe 00ff003f00ff00fe07ff00bf04ff00cd00ff00df02ff00df00fb007e00af 00f900ef0018008000b20051001500a000000004008d006e005f007700fd 00ff00b700ff006f03ff00fb00ff00bf00f702ff00df00ff00df00db00ff 00bf03ff00fc00f900ff00fe02ff00fe00ff00070eff00fe02ff00bf00fe 02ff00fc00be00ff009c0031000700240082000600410000000400d200d8 007d00f800ff00fe01ff00fe04ff00bf01ff00f707ff007f03ff00c104ff 00fe00ff000700f700ff007f00ff00ef01ff00fd00ff00f505ff00cb007b 00fe007f00eb00fb00de00fb00f2009b00cf003a0082001a00c80004000d 008200100001008d00f100ff00de01ff00af00ef00fd00ff00e700ff007f 00ef00c900ef00ff00df00ff017f00ef00ff005b00f700fe01f700ff001f 00f7008104ff00fe00ff003f0fff00db04ff00bf00ff00db002f00ff00fc 00cf000300b00002000800410031000200ea00a000d700ef00ff00ed00ef 03ff00fe01ff00fa04ff00ef01ff00f704ff007f00ff00f904ff00fe00ff 003f16ff002f00fd007f00fe00f300ec004d006c00000003000000580004 003600c3006b00fd00d700fe005f04ff00fd01ff00bf04ff00ef00ff00ef 05ff007f00f904ff00f8013f00df08ff00fd05ff00df01ff00df01ff007e 00f600ce00ff00e7005800b300c800780004003600f2000e003d002d00bd 00ff00df00bf00ff007f00ff017f02ff00df00fb01ff00f702ff00fd00ff 00df00ff00df00bf02ff00e906ff003f007f0eff00f703ff00f500ff00fe 00eb00ff00f700ff00f9006c006800960080000800060005001f0006009e 00ef00ff00f704ff00df00ff00fb00ee03ff00fd01ff00de04ff00ef00ff 00fd00f906ff003f0bff00fb01ff00ef01ff00ef01ff00ef00df007f00ee 00fd00fe00fc006100cf002400790090005600ca002600a4003d00f300ff 00bf00f7007f00ff00bf00ff00fe01ff00fd01ff00fb02ff00fb03ff00df 01ff00bf00ff00fe00f906ff003f00ff00df0cff00f700ff00bf05ff00bf 00f900ef00bd00af00be00f4006f00200036009e001b00df003600ab00ff 007b00ff00fe05ff00fe00ff00f705ff00f700ff003f05ff005906ff003f 0dff00df00fd04ff00bf00f700fd005f00eb00bf00bb00cb00bc0087009a 00c0000d008200e600d2005f00d1007b00f6009f00f702ff00fe00ff00fb 00ff007f03ff00f703ff007f02ff007f00fd00ff00f906ff003f03ff00f7 11ff00fa00b700df01ff0016003700c500370080000a00e20005007100fb 00ac00ff00fc00db06ff00f707ff00bd00f705ff00fd00f906ff003f08ff 00ef07ff00bf00f701ff00f7009e01ff007900ff009f00ff0087004d0000 0002009100630040006900d400fb00ef007f00ff00fc00ff00df01ff00be 007b02ff00fe01ff00fd00f700bf00ff00ee007f00f701ff00ef003f00f9 06ff003f02ff00bf04ff00fb0cff00fb007e00ff00f700da003900e700b5 00f20080000100e9007c00d200cf00fb007f00b4001f01ff007f00ef13ff 007f00e906ff003f11ff007f00df01ff005f00fd00ff00bf00e700fe00f7 009f007000b800140000001a002d001100b500ae008f00fe00ff00ed00eb 00ff007f00ff00fd01ff00f700ff00cf00ff00fb00ff00cf02ff00fe00ff 00bf00ff00fe00ff00b700f906ff003f13ff00fd00ff00fe00ff00fb00ff 00df00bf005700ee00f200ea00080000000c00120093003c00f700bf007f 00ad00ff00f701ff00f704ff00df01ff00bf06ff00fb01ff00fd00e906ff 003f0dff00fd01ff00fe01ff00fb01ff00cf00ff00fe00de00da00ff005d 00f500a8001b000000080034000600d700cf00ad00b500ff00ef007b01ff 00ef01ff00bf00ff00fb00bf06ff00d701ff00f702ff00f906ff003f007f 10ff00fe01ff00fd00ff009d01ff00bd00e700fe00eb00ee0079000e0000 0008010a00a500b6005300fe00ff00ef00f700fb01ff00f700fe03ff00df 01ff00bf00e700bf01ff00fd00ff00fd00fb00ff007f00f906ff003f01ff 00ef05ff007f06ff007f03ff00f800ff00eb01ff00db00fd00e700af0010 005d0080000c00040099004b005b00f5003700f100ff00ef03ff00ef007f 00ff00df04ff007f00ff007f04ff00fb00ff00f900ff00fe04ff003f0eff 00f705ff00f7006f00ff00f300ff001f007700df007a00a300d4004000c0 008000e200c1007f00e800ba00ef00fb00ef03ff00df00fc05ff00fe01ff 00fe04ff00ef00fb00f906ff003f0dff009f02ff00f700fb01ff00fd03ff 001d00ef00df007d0006006900e200000001002d003c00b600d8007f00ff 00bf00ff00df02ff00f702ff00fc00ff007f01ff00bf02ff00ef02ff00fb 00ff00f906ff003f0bff00fe06ff007f01ff007f02ff01f700ff006b0082 00eb004001c0008a002100770058002f03ff00fd00ff00df05ff00df01ff 00ef03ff00fe00ff00ef01ff00f906ff003f06ff00f702ff00ef06ff01fe 00ff00fe00ff00bf00ff00fe01ff0071006e00bf00b60088004c00840072 00a2000f00e5003f00dc00ef017f00fd00fb00ff00fa04ff00bf00df00ff 00bf03ff00fe00fd00df01ff00f906ff003f12ff00f700ff00fd00ef00fd 00ff00ef00fb00f7007f00f700ac00690065005c0008000a005d006700b6 00d200ce00fb00c301ff00df00ff00f7007d06ff00bb00ff00bf01ff007f 00ef00ff00fb00dd00ff00f906ff003f06ff003f01ff00fb07ff00df01ff 00d700fb00fe00df00f700fa00fb00ff00f4003600fc0023000900350034 000d000f00a900b500f700ef00fb00fe007f01ff009f01ff00bf00ff00fa 01ff00f503ff00fe005f00ff00df01ff00e906ff003f17ff00fc01ff00fe 007700fe003000e70094005a008c005a00810017005300be00fd00df0077 00ff00fd0dff00bf00ff00fe02ff00df00ff00f906ff003f01ff00f713ff 00f301ff00df00fb00ff00de009700df003000310088004b000600240076 005b00d100ff00bd00ff00fe03ff00df06ff00fe00ff00f704ff00fb00fe 00f906ff003f01ff00ef0eff00fd00ff00fb04ff00bf00fb00ef00dd00c5 001e00cb00cf00a1007c00d100f100a0002d00fd00df00db00ef01ff00ef 05ff00b706ff00fe00ff00f702ff00f906ff003f14ff00fb00ef00bf00ef 00ff007f00f700bf00ff008b007b00e200b300e000c30000002800e80036 00ca007b00ff003f00fe01ff00ef00be00ff00bf04ff007b00ef01ff00df 02ff00fa01ff00f906ff003f11ff00f7007f00df007d01ff00fe01ff00f7 00fe00fb00cb007f00e300ac0092004d00e100530000007f00ff007d00ff 009f00dd00ff007d00f703ff00f900df00fb00ef007f01ff00df02ff00df 007f00ff007f00f906ff003f0bff00fd00ff00bf03ff00fe00ff00ef01ff 00ef00fd01ff00f300ec003900e300da00fb002d00f300d600de00eb006f 00fc00ae00da006f00ff00fb00ff003f00ef08ff00fd02ff00fe00ff009f 01ff00f906ff003f0bff00fe05ff00fe00ff00f701ff00ef02ff00e700ff 007b008f00bc00d6011a005d0016008a00da00d7006300ff00bf00ff00fb 00ff00bf05ff00df00fd02ff00fb01ff00fd01ff00bf00ff00f906ff003f 0cff007f0cff009f00ff00df002b009f007b0075000e002b008e006a0083 001e00fd009b00fe00c700df01ff00df01ff003f09ff00f304ff00f906ff 003f0aff00fe02ff00fd04ff007b01ff00bf00f700fd00ff00ef006500ff 00fc00fb0064006f008400bd00da000e00eb00d700d600db00f800ff00f7 00bd00ef00ff00f600bf03ff00df007f00ff00ef03ff00ee00bf01ff00f9 06ff003f04ff00fe0aff00fb01ff00fb00bf02ff00df00fb00ff00de00d3 00bf003f00f700bc00d800eb006d0066009600da00bb002900fd00b500bf 00ff006d04ff007f01ff00ef02ff00fb01ff01f700ff00f700ff00f906ff 003f13ff00f700ff00f701ff00bf00ff00fe00ff00ad00ff007100d700a8 00ff00c400bf00e8005f00f100af00fa00d300fd007f006f00de00ff00df 04ff00fe00ff00fd05ff00ef02ff00f906ff003f16ff00ef03ff00fe0007 00bb00f700de006300ff007300ff00fc007d00de01fb005f007601ff00bf 00fb00ff00bf00ff00fe04ff00fd04ff005702ff00f906ff003f0bff003f 06ff00fb007e00ff00df00fe00ff00f700fe00f6008600f700ee00be00a2 00ba0021005500a000b600da001b006d000d00b2009f00fd006f02ff00fb 02ff00fe007f02ff00df02ff00f501f700ef00b106ff003f0bff00fb06ff 00fe04ff00eb00ff00fe00fb00ff00bf0079005500ff00ea00ff00f1005f 00fc01be001700ff005f00bf008a07ff00df03ff00fd007f00ff00fb02ff 00f900ff00fe04ff003f11ff00df01ff00fb04ff00eb00fd00fb00df00bc 00f7004200ff00d200be00ee00dd00f400af00f80037007d004500ff0085 00ef03ff00fb01ff00fe00ff00fe02ff00fb00ff00ab02ff00f900ff00fe 04ff003f05ff00df0fff00fb00f700ff00f700ff009f00db00df00fb00de 001c00da00ee00ed006d00b600d300db006900e500b600f700ef007902ff 00df02ff00f701ff01fe02ff00f700ff00bf01ff00e900ff00fe04ff003f 18ff00fd007f00df00fb00ff00bd00ff00da007f006f00bf00be00db004f 00ef00f600d2005b00db00f500fc003f01ff007f08ff00fd00bf05ff00f9 00ff00fe04ff003f0dff007f05ff00f700fb01ff00fb01ff00ef00ff007b 00ff003e00f700de007900cf007d00f300bc00f900d1007200af00de007c 005700ff00ef01ff00fb04ff007f03ff00fb03ff00f900ff00fe04ff003e 02ff00f706ff00df06ff00fe00ff00ef00fb01ff00f700fd00df00d700fe 00ff00ef00f2003e00bb005b005d003f00f200db0057004900e900ba0056 00eb00de00bf02ff00bf01ff00bf00fd00fe01ff00fd00ff00fb00ff007d 01bf00ff00f906ff003f1aff00fe007f00ff00f700fe00e200f700ad00ff 00f600be00eb007f00b40016003b006f00ed00b5009b03ff00df08ff00f7 04ff00f906ff003f04ff00fb08ff00bf05ff007f00fe03ff00bf00ff00df 00ff00c500b600d200db006900f700fe0036006a003500ae009500db000b 007b00f7007f00fb02ff00fe01ff00db00ff00bf02ff00ef02ff007f00f9 06ff003f0aff007f08ff00fd00ef02ff00fd00f601ff00fe007300ef00ff 00fb00ff007f00ff00fc00db00bf001f0052003e006b0047007f00ef01ff 00f709ff007d00ff00eb00fe01ff007900ff00fe04ff003f04ff00ef09ff 007f03ff00fd00df00fb01ff00cb01ff00df00fd00fe009b00f700ec007f 009600fd00e9000b00f4009500dc004100fd000d00d300bf007f00ff00ef 04ff003702ff00fb04ff00fe00f900ff00fe04ff003f04ff00fe12ff00bf 00df00bf03ff00ac00a600bb005b005f00be00f700d200d3006f000700e2 00d6005300ef00f501ff00fd00ff007f05ff00ef00fb00bf00dd007f007d 01ff00f900ff00fe04ff003f0cff00fb0cff00fb01ff00fd00ee009d007f 005c00bb009700df00fa000f00f4000300e0008b00fc00af00be007c007f 06ff00bf07ff00fe00ff00e900ff00fe04ff003f04ff00fb0aff007f02ff 00fb01ff00fe01ff00ef02ff003800ef0055007b008e007f00ff006f00a1 0097005000a200fa006400df00fc00eb02ff00df03ff007f01ff00df00ff 00fd02ff00fe00ff00f906ff003f16ff00bf01ff00bf00ff007f00ff00ef 007d00ad007600de00db003b00ff00be005200eb006100f8009c00d8002e 003f00f700be01ff00fe00ff00df02ff00f701ff00ef03ff00fd00ff00f9 03ff00ef00fc007f003f0fff00fb08ff00fe005f00ef01ff00e700ff00c9 00ff00e200bf00fb0053006100a500b80007006d002500bd00fb00df00bf 00fb00ff007f08ff00de00ef00ff00fb01ff00f903ff00d700fb00bf003f 19ff00fd03ff00eb00ff00f700ff00f901ff0075005000be00c9002400df 0006003300f7007e00ef02ff00f707ff00af02ff00fb00ff00f903ff00bb 00fb00bf003f08ff00fe05ff00ef00ff00f702ff00fd03ff003f02ff00e3 006a00a2009b006100df007c00d00058004b002c002e0035008f00f500cd 00af00a702ff00fd03ff00bf01ff00bf00ef01ff00df00fb00ff00f903ff 00bb00fb00bf003f14ff00fb01ff00df05ff00f700ff00c900bf00ea00bb 00f8007900ec002c00ea001a00cd000c00a700ff00f9005300ff007f00ff 00fe01ff00fe007f00ff00fb06ff00fb00f903ff00bb00fc007f00070eff 007f08ff00df00db03ff00fd00bd005600de00df00bf00ec004600b60042 00c900a600f1001b00d700bc00fb00d700ef00fe00ff00ea05ff00f700f6 05ff00c103ff00bb00fb00bf000716ff00f501ff002f01ff007f01ff00ef 00dd00fb00df007f00f6008600d30045006800c50089003300fe00e000de 003c01ff00fd00e703ff00fd01ff00eb00f700ff00eb00ff00f700ff00c1 03ff00bb00fb00bf003f08ff00ef04ff00df06ff00fb03ff00fd00df00ff 00fe00df007f007d00bf00b600d9008d006d00e400b000930049006d005e 01fa001f00eb01ff00df03ff00fc04ff00bf007f01ff00f903ff00d700bb 00bf003f16ff00df01ff00fb04ff00bd00b6009e00fb00ff00ac00a30092 004100c0008000ea00bb007d00df005e007a007701ff00fd03ff00fb03ff 00ef02ff00f700e903ff00ef001c007f003f0dff00f704ff00fe007f01ff 00fe00ff00fd00fe01ff00f700ff00ca00f700a900ff00f700b400c8009b 00a0000800c4004900b4007700cf0075006d001f02ff00d700ff00cf05ff 00f700ff00f701ff00f904ff00bf00ff003f19ff00fb03ff00fd00eb00ff 00eb005f00dc005b0079002e009400040010000f002d002e009d00e300cf 02ff007f00bf00ff00bf03ff00fb04ff00f700f906ff003f12ff00fb03ff 00f700ef007f04ff00e5003600d300ff00fc00ed00ac003200c200200002 001800d300df00af00a100fd00fb00ff00bd00ef00fe03ff00fe00fb00df 00fd02ff00df00ff00f906ff003f17ff00fb07ff00fe01ff00fe003a00aa 002d0074000c0014000b00ae001900f300c700bd007700ef00ff007f00ff 00df01ff00fb01fe00f705ff00f906ff003f07ff00f707ff00bf05ff009f 00fb05ff00f800ff008f00fb00ff000b0063001400d4008400c8004f0122 00f600be00d300de00ff00f200ff007f03ff00f707ff00f906ff003f02ff 00bf12ff007f00fe00fd05ff00fb00b600ef007f00df00a500f601da0000 008000070092007100de006a00ff00de03ff007f01ff00df00ff00df00fd 01ff00df01ff00df00d900ff00fe04ff003f17ff007f07ff007f006f00ff 00be00c700c300a300e1004000900009007400d000fc005f009b003f00ff 00df00f700ff009f00ff00fb00ff00ef007f06ff00f900ff00fe04ff003f 18ff00df06ff009c02ff00e4003e00f20083006000e000120051005d0034 007a00be00fe00ff007b00ff00fd04ff00f606ff00b900ff00fe04ff003f 16ff01fe07ff00f202ff00e700d700d200c000000001002000720047006b 00df009c005b00db00bf00d704ff00dd00bf06ff00f900ff00fe04ff003f 17ff00ef07ff00e302ff00f8007f00fc00100004008a0049002f01be009a 00bf00ef005e01ff00f703ff00fd00bf06ff00f900ff00fe04ff003f06ff 00fc07ff00ef06ff00fe07ff00f702ff00fc00ff00fe007e003f000500d2 000400cf008500fd00b300ff00e300df00ff00ef0cff00f906ff003f17ff 00fe005b00df00f300ff00df00de00ff00df00b200bc00fb00b500b80036 008200100024002700240017005a008700fa00e700df006003ff007f02ff 00f301df00bd00d100df007e00ee00d900ff00fe04ff003f24ff00f8007f 00fd0010000400110088000d00e60085005300ff00bc00a001ff01fd01ff 00fe00ff008f06ff00f906ff003f0dff007f03ff00df01ff00df02ff007f 05ff00f202ff00ed00d700d200c00000000600a000510069000d00ef00dc 00bd00e300fb007f00db00bf00ff00fb00ff00fd002706ff00f906ff003f 20ff00bf02ff00e600be00f200830060008400e800a200f80011001700be 00f30056007700ff00bf00f703ff00fe06ff00b906ff003f0cff00fb06ff 00bf00ff00fe09ff00ef00ff00fe00d700c300a300f10040008100180005 00a400be00ff007500fd001f00ff00fd00ff00ef00f300bf00ff00df009f 06ff00f906ff003f17ff007e00fd05ff00fb00ff00ef007f00df00f500be 00da00ca010000ea00d20079006d000e00ff008b005900f700fb01ff00f7 01ff00eb007400fd04ff00df00d906ff003f0cff00df07ff00fe08ff00fd 00ff00df00fb00ff009f00e3001400d4008000c000490024008000db005c 004700b400b700af00ff00fd007f00f700ff009f08ff00f906ff003f20ff 00fe01ff00fe007b00ba002d0074000400000009002900010094005700de 00a000c700ff00ef007f03ff00fb00fd00f705ff00f906ff003f10ff00eb 007b05ff00df05ff00ef007f00fb00ff00fc006d00d4003200c200240002 001e00d20003006d0027004e00c200fe00fc00df007e03ff00bf00ff00df 00fd02ff00df00ff00f906ff003f10ff00f707ff00fb03ff00fd02ff005f 00dc00df00fa002e0094008c0010000b00a600040056008700f900e100de 00f800bf00fb00ff00e702ff00af00fb04ff00f700f906ff003f16ff00bf 02ff00fe00fd00ff00f701ff00f701ff00f700bd00ea001b00a000800000 0041006c000d00360000007b008f007800f700df02ff00df00ef00df000f 00df00ff00f700ff00f701ff00f906ff003f19ff00fb07ff00fb00ff00b5 00b70092004100c00000000100900000004d003d00660036007f00de007f 01ff00bf00df00ff003d00fd00d700ff00ef02ff00f700e906ff003f0aff 00fb07ff00fe007f06ff00df03ff00fd00ff00b600dd00cf006d00c00060 008100030060008600c0006b007c000b00ef009f007f01ef005f00ff00ed 00ef00fd00bd01ff00bf007f01ff00f906ff003f13ff00fd01ff00f701ff 00ef04ff00ef00ff00fb00df007f00f700be00f300420010004000000050 000d002000a4008e001500ef00bb00ef00df00fb00bf00de00fe01ff00fb 00f700ff00eb00ff00f700ff00f106ff003f16ff00fb06ff00fd00ff00df 01ff00bf00ed01d6004c004100200080000200120040003500b40097008e 00fd00cf00ff00f700fd00bb09ff00f900ff00fe04ff003f0bff00af14ff 00bf00fa00bb00fb007f00ec002b00840010000000050024008300df0040 004700ff00f3003f007f01ff00fe00ef00bf00ff00ef007f03ff00fb00f9 06ff003d08ff00df00ff007f09ff00fd03ff00bf02ff00ef00ff00f700ff 00f900df007c00b200d8003e0020000a0000000400c9004400360082009e 00b900df00fd02ff00fe003b00b6008b006e00cf01ff00df00fb00ff00f9 00ff00fe04ff003f14ff00f700fd07ff00fb02ff00fd01ff00f7007e0008 000e00040000000600d0000b00aa0041003d00f100ee007000ff00ef00fc 00ee00bf02ff00ef02ff00fb00bf00f900ff00fe04ff003f09ff00fd05ff 00ef01ff007f06ff00ef01ff00ef03ff00bf00fb005700ed008402000009 00250000003b0040007800ef005400d300ff00df00f700fb002f00ff006f 00ff006e00ef00ff00fb01ff00f900ff00fe04ff003f1bff007f00ff00ef 00ff00ef01ff00df003b00ff00d7005600e200200080000000db00c80009 00b4008400f700fe003e00f500bf00ff00df00f900ce01ff00fb009b02ff 00fd00ff00f906ff003f17ff00fe05ff007f00fe00f703ff007e00e90081 01a000000002006800110074001b00e300dd0073008b017f00ff00b700ff 00ef00af00bf03ff00fe00ff00f906ff003f12ff00bf09ff00fd04ff00d7 00df00e3002f00f000000080000800d8000800a20090001100df003600fe 008f00e300ff00df00ff003d00fe00fb00fd00ef04ff00e906ff003f1fff 00bf00ef01ff00f700be00f600ca00d202000096007a00690034002b009e 007d00a500da00e701ff00f400ed02fd00b9005f007f007d01ff00f906ff 003f1bff00bf00df01ff00bf00ff00fe00ff00be00fd00eb004f00f40004 0080000100b50080000a00000047005c00e600de005f00df00fb00be00bf 00ff00df000f00df04ff00fe00f906ff003f1dff00fe007b03ff007f00ff 00fc00f300be001a00000002006b004500040000008e007900c700780073 00b700ff00fd005700fb01ff00fd00ff003f00eb00fe01ff007906ff003f 0eff00df04ff00bf04ff00fe00bf00ff00df01ff00f700f900ff00fd00f7 00fe003600ea002400000004009a00020009000100150071000f00e800fd 00de00ff00e7007f00f700bb00fd00df007f00f700fe01ff007f00f906ff 003f0fff00ef02ff00bf00df0eff00be00eb007f00f4000400000009002f 00000102000100e1007c00d900ef007d00eb00f900bf003f00bf00ff02ef 03ff00f906ff003f15ff00fb03ff00df00f700fe02ff007f02ff003f00f2 00d900570008000000120042000000200000004000df003000f300bd006b 009700ff00f600df00ff007700ff00bb007f007d01bf00ff00f906ff003f 1dff007f03ff00fd00ff007d00f300bc00f900d000000025008400100100 00e000b80063009f003f00ef009f007f02fb02fe04ff00f906ff003f12ff 00fd00f70aff00fb03ff00fb004b00ee00d600d000000059002800900004 00120002003000ea001700e6006f00bd00d300df00ff007b009e00f700ff 00de03ff00f906ff003f01ff00f704ff00ef0dff00ef01ff00df01ff01df 01ff00fe02ff00ed00be00fb00df00780044009200500000002000260008 007300ce001e00c5005f00f300d9007f00ff00f70077007f00ff00fc00ff 00bf01ff00f906ff003f1cff00fb00ff00bf03ff01fe00d5009600eb00e8 000100650082000200010000001c008b0098008b00cf00b80074009f00ff 007f00fe00f700ff00f700ff00cb02ff00f906ff003f16ff00bf07ff007f 03ff00f5005f00fc00bf00be000e00510004000200000008000900060038 00a300ee00fb00dd03ff009f02ff00fb02ff00f906ff003f13ff00f307ff 009700f700fe00ff00f700ff00bf00f700ec00b6009a0053006d00050080 0100000400300003000a0069002d006d00fb00f2002e00ec001500d50005 005b004500b7004d01f700ef00b106ff003f13ff00fd07ff00f704ff007f 01ff007500de00f300fb002b006c00040082000000480006001500f0009a 003d00fb0018007f02ff009f00fd01ff00f302ff00f900ff00fe01ff00ef 00fc007f003f11ff003f0dff00f700ff00fe00ff00fe005f00e100af00f8 009600d8000b002800000090000000080000007200c700af0068001f01ff 00fe00f702ff00df02ff00f900ff00fe01ff00d700fb00bf003f0eff007f 0dff00bf01ff00bf02ff00ed00d400da00fb0029006500b00012004a0021 00250080006200c0007d007f009d0072001d01ff00f70077007f00ff00fd 00c900ff00f700ff00f900ff00fe01ff00bb00fb00ff003f12ff00fb0dff 00ef00ff00fd00f700ee00eb00d600d200d900e8002400b00000000a0008 006000000096004d00be00cb00d300df00ff007f00ff00f700ff00de00ff 00bf01ff00f900ff00fe01ff00bb00fb00ff003f1eff00df05ff00f3001a 00fd00c3009e00400048002000c80010004000480101001f0072008e0073 02fb009e02fe00f302ff00f903ff00bb00f8007f00071dff007f00bf02ff 00fe00ff007f00f200da00d7007f007d00a8009600c0022000980002004b 002600d2008d009100f600df00fb007600ff00bb007e005d01bf00ff00c1 03ff00bb00fb00bf000721ff007f01ff00bf00f1006f00bc00960079004f 008c0080000000100041002000060092007000f1005700eb00bf003f00bf 00af02ef03ff00c103ff00bb00fb00bf003f0cff00f700ef03ff00bf03ff 00fe05ff00ef03ff00fb00ef00be003f00ff002d002f008a004b00000001 000200080040004d0000004b00cc006f00f6007f00f700bb00fd00df007f 00f7007f00bf00ff007f00f903ff00d700bb00bf003f0cff00cf04ff00f7 0aff007f00ef01ff00ef003d01ff003600ca003f00ff0005009a00000004 008000340080008a0001005100d400280014005700fb00af00ff009d00ff 003700eb00fa01ff00f903ff00ef001c007f003f24ff00fd00ff002d00fc 006300cf006b00e401000002004900000004008000df002c005e007a003f 00ff00df009f00df00ff00f700f300f701ff00f904ff00bf00ff003f12ff 00fb09ff00fd00ff00bf00ff00fe03ff00db00c100ef003e00e200500000 000100100082000000280000001600b0001500ac000600ed00df006f00dd 00bb005f00ed00fd00ff00fe00f906ff003f20ff00fb04ff01fe00ae00fd 00e500d40028000000180024000000400001002a00030086006500cf003d 02fd00ef027f005f00ff00f906ff003f0fff00fb04ff00df03ff00fb04ff 00f701ff007f01ff00a900b500ff00ba00eb005800100000001200480100 0004005a0000000b00d600f700df00ee00fb00bf00df00fb00ff00ef01ff 00e906ff003f1eff00fd01ff00fb00ff00bb01ff007a00ce00fd00f700dc 00d0010002100042000d0024008000020094001500ce00ff00af00fb009b 00bf00ff00fe00fd00ff00f906ff003f12ff00fe09ff007f03ff00f700ff 007700ff00fd003700fb00cf003d00200100001800000020008200110048 00010002005b00f500ef02ff007d02ff00af00ff00f906ff003f11ff00ef 0fff00ef01ff00f700fe003e00ef00be00f5018000000001008000400000 00a2008000100050002f00bc003f02ff01ef00ff00fb01ff00f906ff003f 1dff00df00ef02ff00fb02ff00fe003b00df00be00fa0004000200400000 002000900040004100200100002a000a003b00b6008b006e00c600ed00a2 00db00bb00ff00f906ff003f1fff00fe01ff00fe03ff00ef00ff00fc00cf 00000002000000010000003000000082002000100050002f00fc001f00bf 00ff00ef00c702ff00f900fb00f906ff003f20ff00fd00ff00fd04ff00fc 00f300dd000000200010010000410000001400c000810000001b00f5002f 02ff006d02ff00ef00ff00f906ff003f10ff00fb01ff00f70aff00ef00ff 00fb00bf00fb01ff00f700ee007f00ef0058005000000028010000b00108 020000040015004e01ff00fb001100bf00eb00fe00e7007f00f906ff003f 1fff003f00ff00fe00af00ff00fd02ff00f700ff00e9002c001000460100 002100000012000100a00000000600f500eb00ef00ff00be00ba00fb00bf 006f01ff00f900ff00fe04ff003f24ff00fb01ff00fc00ef00fc006000da 001000a503000020000000c10080000500cb003901fd00fc00c6017f007b 007900fd00e906ff003f06ff00bf07ff00ef00ff007f0bff00fe02ff00bf 00e701ff00bf00f700ff00bf00a800b60000004901000010000000400001 00400100002200e4007f006f00f000ba003700ed00f7006e00d700f906ff 003f11ff00bf0dff00f706ff00df00bb008b002d0085009c00c001000040 0080000100f40100002f00fd00df009f00dd00ff007700f300f701ff00f9 06ff003f16ff00fd09ff00f700df007f00ff00fe00ff00df007f00ff0000 00cb0041006500800100000101000028010000140012003f00af00c10041 004700ff00fb00bf00d700f906ff003f0fff007e0fff00be00fb05ff00f9 00cf008f00aa000700d50021010000820000007100bc00480014003d00ff 003b00fd00c700fd00c7007f00bb00df00fd00f906ff003f0eff00fe0fff 00fd00ff00df01ff00df02ff00e700f8006b00cd002500f6000200000081 002c010000d50100002b0035001f00ff00a400ee004b00ff00fb00f900f3 00f906ff003f1fff00fd00f700ef05ff00df00fe00b20052005d002c0010 0080000000290008000100740100000e00ca00130074000900bb00a000dd 00bf00f600df00d906ff003f1aff00fb0bff00bf00ff00be006500940012 00ea00140020000000100017000000db0080000100c3003a00f3009e007a 00c600bc00f302bf00b906ff003f20ff00fe00f701ff007f02ff00fc00db 00fa0050007c00800010004000100004001c000100aa00e00000000100eb 003b00fc00c600ba00c7007f00fd00ff00f700b906ff003f20ff00f7007f 02ff00bf01ff00bd00a5003600d6005b006c0110000000080070000000b9 003800000001004e008700270047005500c500dd00df01ff007906ff003f 20ff00ef00ff00ef05ff009700fd002200b6008000980200005c0000002f 00d000000001000500fa00f200fd0045007e009e02ff00f106ff003f0fff 00e712ff00df03ff00fd004700ff00c5002e00a200c000000040000100fc 0020007f00fc0108001f00ff008f00ff00c700ff00e302ff00f906ff003f 10ff007d00fe01ff00f301ff00fe01ff007f00bf00ff00fe00ff00fd00f4 00bd00ff00bf00fd00fe00ef007d00fd008d00a600940040000401000080 000000a000000010005001000001010501000081004000560050006c00e9 06ff00370fff00bf15ff00df01ff00df007f006c00c60180000100310001 007c0000003f00f40100001700fe008b00ff005500ff00a302ff00f906ff 003f21ff00f704ff00df00fb001100f5005b00680009001000020048000a 00540020002b009800480004000c00ea00060075006d005c00d602ff00f1 06ff003f10ff00ef12ff00ef02ff007d00b700be007600ca003800000004 0092001200d00002002c002800800000004300920024004e005400e50048 00df01ff003106ff003f25ff00fb01ff00f700fa005b00fd00b400320012 00290025001b00940000000b008000500000000200700014007200ba009c 0051003d00ff00f700b906ff003f20ff00f700ef00f702ff00ef00ff00df 007e00e700de00600067000800120008004a008a00000005000000700100 0050000c002a00c600a80063003f01bf00d906ff003f21ff00df02ff00df 01ff00ef00f4003a009600c2008e01240090008f004c000000120090002c 0008000000b00011004800ba00a5009d005f00f600df00d906ff003f28ff 00df00ef004b00ff00a5009f004000490001005b006000000001000000fa 0200001e00a500ef004a00ff00cb00f900f300f900ff00fe04ff003f00ff 00df0cff00df13ff00fd03ff007b00ff009500db004b00f800e000b60080 008100280200001402000009008500410043002000a300df00fd00d900ff 00fe04ff003f1bff00bf05ff00df02ff00fb00cf00df00ff00fc00b700ef 007b00c9002400800000002000500020005800fe0004000a0006000f0081 00ff004300ff00eb00bf00d700f900ff00fe04ff003f13ff00df0dff00bf 00f701ff009f00fe00bf00af00eb00fc003d00e3009800da050000280100 0040000a001400fe005200a1005500ff00fd00f900ff00fe04ff003f11ff 007f0bff00fe02ff00bf00ff00fe00ff00bf02ff00fa00d6007900cf003c 00b6050000280200000400010093002100490050006e00d500e900ff00fe 04ff003f1eff00fe08ff00fd00ff00e100dd00b700be0079002500000002 0300006001000080001c001800ee003d0037006e007900ef00f906ff003f 1fff007f00ff00fe01ff00fd01ff00d6007f00ff007e006100ff00ad00f3 0088000800020100000200000140000300a00074000e00ba00e3004900ab 00bf00fe00f906ff003f23ff007f01ff007f00ee00fd00ff00df00db00df 007700f700b0070000060080000000030001008500c200e400e7007700f9 06ff003f26ff00fe00ff00f700fd00ff004500ff007300cf002005000080 0000000500800000000d0045007e00aa00bf0049007b00f900ff00fe04ff 003f22ff00fb00fd01ff00fa00bb00ff00fb00ff00d700bb00f700fe0040 0300002000580018000c001f00860007001f00c700fd00e300ff00f300ff 00f900ff00fe04ff003f22ff00f902ff00fe00bf02ff00ce00f700ef00bc 00a00010002005000029010000020082008100000041002900bb00a900ff 00fe04ff003f12ff00fe09ff007f05ff003f01ff00bf02ff007d00ff00bf 0039000000fa00d00500000700800000001f004500ef00aa00fb0081007f 00f900ff00fe04ff003f25ff00bf00f7007e00df00f700ff00fb00df00bc 00fa0080005a00800500000c0080001000150001005c00d600ae0069007f 00f906ff003f20ff00f701ff00fb00ff00fe007b00fd00ff00ef00fd00fb 00df00fb00560000006a00c20000000101000080000000420080002c000a 001000a7006b00b000a5007700f906ff003f15ff00df00ff00df01ff00fb 07ff00f701ff00ef01ff003f00fb00fd00be00ff00da0004003300020004 0080040000800010001800000039005d002e0029004e00e903ff00ef00ff 007f003f12ff00fb13ff00fd00fe02ff007b00ef00160000000c00020004 050000400004000800000009004100540008009f00e903ff00d700ff007f 003f04ff00bf06ff00ef04ff00f710ff00fd01ff00f901ff00ef00fc00f7 00ef00f80000001a07000080000b00080000002500a1005200df00ac00f9 03ff00bb00fe007f003f17ff00bf0dff00f700df00fb00fe00ff00fb01ff 006002000020010000400300001e00800040000200eb00c0003f00cb00f9 03ff00bb00fd007f003f17ff00fe0cff00de00f701ff01bf00ff00de00ff 00c10020004000800020004005000009008000000003002000a200900055 00f903ff00bb00fd007f000722ff00fb00ff00f705ff00fd00ff007500c0 00000041005b0060010000400000000800040002001c008100410002007f 0081007f00e800c103ff00bb00fb007f00071eff00bf02ff00fe00ff003f 00f701ff00f700ef007f00ff00f900fe00340100008b0050010000010080 01000080002b01000001009f005a00d000a900c103ff00bb00f8013f25ff 00fb01ff00f701ff00ef00f300ef00980100007b00c00300002001000004 02000041001400a800aa005903ff00d700bf007f003f28ff00df00fb00ff 00df00ff00fa00a600040008000e00800081020000500100001c02000073 002c00bf00d7001903ff00ef001f007f003f25ff00be02ff00f700fe00ff 00f7005d003c00000008003200840001000000010080003000e300800074 000000380000005d00b100af005800d904ff00bf00ff003f24ff00fd00df 00fb02ff00fd00ff006f00e400f70100000a04000054000c00800400008e 00610057003106ff003f27ff00fb00ff00df02ff00a700b500e00600007c 001700800300000200ff00d5007f00e106ff003f13ff00fb00ff00fe05ff 009f06ff00fe01bf00f700ff00bf00fd00ff00bf00010072008003000020 00480000000800010400000100410000002000a106ff003f1cff00df06ff 00fd007f02ff00bf00fb00ff00fd00e10072008000000001004d00240020 0048001c007e001f0086000400030041008100c300ff00f000ff00f900ff 00fe04ff003f2aff00f601ff00a700b500e0010000ed0078000000010000 007d005700800300000200ff00d5007f00e100ff00fe04ff003f25ff00fd 04ff00f500fe00b800b700140100003d00c00000000300c00055000c0080 0400008e00610057003100ff00fe04ff003f16ff00ef0fff00fd00fb00ff 00db00ff01ef003c00e500080002001700010000000700e0003500eb0081 0070000000380000001c003100af005800d100ff00fe04ff003f29ff00fe 00ff00f701fc00a7001c00080002000900c10002000700e0005300fa0001 00800300002c00bf0097001900ff00fe04ff003f15ff00fb03ff00df09ff 00fb00fd03ff00ef00f500ff001900f300c0000000060100001f00f80022 002a00030400001400a800aa005906ff003f29ff00fb00ff007f00af007d 00f600360000000800050100003f00fc002a0014000500c00400005000a8 00a900ff00fe04ff003f15ff00fd15ff00bf00ef00e100b600c00300007f 007e003f00ff000b00c0000000010100000100ff00f800d906ff003f1bff 00bf03ff00f703ff00fe00bf00ff007f01ff00fb00c7007f00c500a600d0 008000000040000000ff00ef00140012008a0400000200900055005106ff 003f26ff00f702ff00fe00fb007e00fe00f900b600c00200000301ff0087 00f9000700c00400003f00c800b906ff003f25ff00fe00ef00fd01ff00e5 00ff00df00ff00f400be009a0200000101ff00aa00e60005000000400300 00ce00ac00a906ff003f09ff00fb1eff00df00ff00de00ff00ef00fc00d5 008d000000040001000701ff00f0002800050080002003000028008a0049 06ff003f1dff00fd02ff00bf00ff00df04ff00bf00ff00fd00d900ff0037 00360033000000040080000f00df00fb00f5002800000041020000010020 00280046004106ff003f17ff00fe0eff00ef00ff00bf00ff00f600ff00ef 00ff00ed00ea00c20100001f01ff00ed0040000000a100c0010000080000 0005005000d906ff003f2aff00df00ab007f00ff00fd0094005e00800100 003f01ff00fd0024000000460040030000490057003106ff003f1bff00ef 08ff00f704ff00bf00fb006f00bd00e000ba00500100007b00ff005f00ff 0100000b00c00400003f00e906ff003f26ff00fe03ff004d00f700ef00de 00e100b90068010003ff01000001050000a000a906ff003f20ff00f706ff 00ef01ff00c900f700ef00de00a000b900500020000100df01ff00fb008e 0006000f00c20001008101c000e000ff00f906ff003f29ff00ef00ff00fb 007b00ff00bd002200da00f00000000300ef02ff00e00000000200e00200 00200000005b00a906ff003f20ff00f705ff00fe01ff00cd007702ef00cc 007b00820000000700fe01ff007f00e000000003004004000072007106ff 003f16ff00f701ff00ef0cff00f901ff00d700df00fd00ff007f00f700ae 003b0084000f03ff00f000a00071008800b800200040000a000f001c00d1 00ff00fe04ff003f19ff00f710ff00fe00df00ff00f5001c0052008e0084 009f03ff00f80100004000e00000003001000007005906ff003d15ff00fe 02ff00fb0cff00ef01ff00fa00f900ff00ef00fc00b6008c00bb00c0003f 01ff007f00ff00fc010000010080000000400200002900ff00fe04ff003f 25ff00bf02ff00bf00f700ff01fe00ff00b600d300ab0030007f03ff00fe 020000e0000000b1020000a900ff00fe04ff003f2bff005f00f700ff00d9 00b200c9005b006100fb03ff00df00860007000100e1000300f000c000a0 004000f900ff00fe04ff003f28ff00fd00f700a700ff000f00ef00e100b6 00c200db00a900ff00fb01ff00df00fd0080000000050040000300200100 0001005106ff003f2aff01fd01ff00e100360041005b006705ff00e00000 000500e0000a00f0020000b906ff003f28ff00ef00fd02ff006d00b400be 009a008f004f00ff00fe00ff007f01ff00f0010000a00025009000000040 0000000906ff003f01ff00f711ff007f01ff00fe10ff00bd00ff00df00f9 00ff001b00d500ed004a009f05ff00f00000002000c0002a006000040000 0002001906ff003f29ff00fd007700fe00ef00ee00660036003a001b00af 00bf03ff00fd00f0010000a0009c005100200100001106ff003f28ff007f 00af00ff00dd01ff00b5006500ea00f601ff00ef01ff00f700ff00fe0100 004000e500480200000106ff003f29ff007501ff00fb002800bd0014005e 008a03ff007f01ff00fb000000100021005c00d00200000106ff003f28ff 00fe00ef00cf00cb007f00e5005400a000930041007e00ff00df007f00ff 00fa00ff007e00800000004500ff00a00200000106ff003f18ff007b00ff 00f701ff00df01ff00f701ff00fd01ff00f700ff00ef005b00ef00df00bd 00c3007200c100ab0061005d003400b200ca001000050008001002000081 00400200000106ff003f29ff00cf00df00db00ff00c700df00b700f700e0 006c00a8001600580200000400020001004700ff00e001000020002106ff 003f29ff00b501ef007b006d00bd00ff00de00db002d0050005200d00100 00a0008001000005007e00800200000106ff003f24ff007f03ff00bf00ff 00dd00ff00bb00ff007700ff00e6007d00e0002e00f00100008002000005 00c500c80200000106ff003f29ff00fd00f300fe00ff00ef00fe00ff00be 00bb00870001000300800000000300b0002000400000000a00df005d0200 000106ff003f06ff00bf08ff00fd0bff00fe09ff00fb00f5007f00ff00e9 00ff002f00ff00fb004e008000c1000a00400000000200e4010000300006 00bc0043000800000007001906ff003f1dff00fe0cff00df00ff006d00ff 00f700fe009b004f0000000300800000000700b80200000a00a0009d0200 000906ff003f2aff01fd01ff00f7007f007d00eb00700300001900ab0200 000f004a00ff00d0010000b900ff00fe04ff003f29ff00bf00af00ff001f 00ef00f300ff00e2005b00280300000900b4000400000003004d00c3007f 00a00080004000d900ff00fe01ff00ef00fc007f003f21ff00fb07ff00f7 005f00e700ff00cf00f300f8005b002005000004010000010043002000a0 0100005100ff00fe01ff00d700fb00bf003f27ff00df00bf00ff007700ff 01fe01ff00d100ab00300800000f005200f300d0010000b900ff00fe01ff 00bb00fb00bf003f19ff00fb0cff00ee01ff00de00fb00ff00ef00ff00be 00d600bb00ce01000001020000b00100000a0021008d00400100002903ff 00bb00ff00bf003f1bff00fd08ff00bf01ff00ef00fd00fb00fc00df00f7 00f400ff008000ca00a400810000000101000081002001000006002d0063 000e00080007000903ff00bb00ff007f00072bff00df00fd00ff007f00f7 00ae003b0097000100020001020000e800400010000a00fb001d0100001c 000103ff00bb00fe00ff000725ff007f04ff007702ef00dc00fb00c2007d 00e0000000010100000700be0000001000000085004a01000050000103ff 00bb00fd00ff003f1aff00fd0aff00df01ff00bf00ff00fb007b00ff00bd 00be005e00bb00a700400300000200f50100000d007e00d400040001005e 000103ff00d700bb00ff003f29ff00bf00ff00db00ff00ef00ff003400bb 0050006d00a80000000800200000001500b60100000500ff00a001000078 000103ff00ef0018013f1aff00f700df0aff007f02ff008d00f700ef00de 00e100b90069005500900020000800100000000800000004000000020081 020000a0000104ff00bf00ff003f27ff00ef01ff00fd01ff006f00ff00f4 00bb0050006d00a80020000802000004000a00dd004500ef00a00100007c 000106ff003f1bff00ef08ff00f704ff00fb007b00ff00bd009c005e009b 002700410000000103000059007a0028007e00c00100005c000106ff003f 28ff007f00ff00bf00fe00ff00ef01ff00ea00e200f10073000000010100 008000000047005b009a008502000050000106ff003f0cff00ef0fff00fd 04ff00df01ff00fd03ff00ef00dd00ff007700f700b3001b009c008d00c0 000101000091002100d800cc006800b90001002000000014000106ff003f 2bff00fe00fb00ff00bc00ff008d00ee00f6009700600001010000800023 007700b100bb006a0000000400000008000106ff003f29ff00bf01ff00df 00ef00f700be00da00ab004d000500a000010200000200d50059006d0004 02000004000106ff003f26ff00df04ff007e00fe00fd00ff00f1003b00a2 00bd00f0000000200100000500dc008300ef00900300000106ff003f26ff 00fd00fb01ff00f700ef00e700ff00c700e700f000db0021006d00580300 000600db0009006500a00300000106ff003f20ff00f705ff00fd01ff00ef 01ff00ef00fb00ff00e8005b0020002d00d00300000600da0003006d0081 0040008000000040005106ff003f20ff00f70dff017f00eb007800d500ac 0300001e00d700ce006c008000010200000100ff00fe04ff003f26ff00bf 01ff00bf02ff007d00ff00f300fe009b0046001d00e300010200006200d9 003100ef00100300000106ff003f2cff00fc00fd002f00ff00fb004e0089 00e7005e0041010000830091007200df00390110000800020007000106ff 003f25ff00f700df03ff00fe00fb00ef00be00ff00bf00bb0097001d00e3 008100000040009000e900dc007800ee00100300000106ff003f27ff00f7 00ef00bf00fb01ff00bb00ff00f700bf00e6007d00d1003e00f901000003 00be004200de000800100300000106ff003f29ff00bf02ff00ed00bd00ff 00de00db002d005d00d200900100000a00b400d9005a00e80400000106ff 003e1bff00ef00df06ff00fd00bf007f00ef00ff00bf00fd00ff00bf0065 007300f7006f0070004d0028003000c800000004001400b2000a00d50040 010000c000000040007106ff003f24ff00fe01ff00ef00ff00bf00fd01ff 00d7007b00f7006f0071005d002400b200c8001000040100000600d50100 00400200000106ff003f22ff00df00ff00fd00bf007f04ff00bf006d00f5 00f700df00fa006d0028003000d8000000040100000a00d9004004000001 06ff003f25ff00fb02ff00bf01ff00eb00fd00bf00ff00fe00ca002f0055 009700d103000001007a000000100000008000000040002106ff003f02ff 00bf14ff00fb05ff00df06ff00f701ff00fb03ff00f700bf00ff00f50059 007a00bd00a00000008000200003005a0000001000040200000106ff003f 25ff00f700df03ff00fe00fb00ff00ae00ff00bb00fb00d9008d00c60047 0060004000910000004000dc0100000400200100000106ff003f23ff00bf 00ef00df05ff00fe00fd00bf00f700ff007f00c600f5007b004300400000 00800020000000b4010001040100000106ff003f1eff00bf02ff00fe03ff 007f00ff00bf00ff00bf04ff00db006d001700a2008b00c0030000580500 000106ff003f07ff00ef0bff007f07ff00fb04ff00ef00fd07ff00ef00ff 017f00ff00fa008d00c10057006a01000004000000020000008000000040 0100000106ff003f1dff00f708ff00fd01ff00ef02ff00f300ff00e300fb 00fc006d00d80037006c0000000200040000000200400080000000400100 000106ff003f26ff00fd03ff00ef02ff00e700bd00ff00f600ad00500057 006a0004000000040000000200000080000000400100000106ff003f23ff 00fb01ff005f04ff005f00ff00f500be00ff00bb00bf00c500a400eb0057 01000080040000020100000106ff003f29ff00bf03ff00fe00ff00bf00fb 00ff009d00e3001f007800c00200001004000008000106ff003f20ff00f7 02ff007f00f705ff00fb00ff00bf00ff00d700ff00fe0087004401c30020 008100200400000900000004000106ff003f20ff00f70dff00d700ff007f 00df00fd006b009f007900d00090002004000008000c001c000100ff00fe 04ff003f23ff00df03ff007f00ff00bf02ff00fe00dc02fb00e3001600f1 000f007808000070000100ff00fe04ff003f24ff00f507ff00ed01ff00de 00ff00f7007800f6009a007d006f0800005c000100ff00fe04ff003f23ff 00ef02ff006f01ff00fd00bf02ff00f200bd00fb00f700c8002600980009 0064080000fc004100ff00fe04ff003f0eff00df0fff00fd01ff00fd02ff 00fe03ff00df02ff00f300bd00fb00f700d80026009a0059006400080600 002000a0000100ff00fe04ff003f23ff007f01ff00e701ff00bf00ff00f9 02ff00bf00fe00fb00f700ff001e00b8002d007800400200001002000005 0078000106ff003f21ff00fd00ff00fd00ff00fe05ff00ef00ff00ef00fe 00df00fb00ff006b001600d3004d006800a001000010002800100100000a 0054000106ff003f1fff007f00ff00fe08ff00ef04ff007f00df00fd00fb 009d003900de00100020000000100048001000040000001200d8000106ff 003f28ff00ef00fd05ff00f600ff00ee00ff00ec00c700e3003300f10020 00400000007c0200001f0084000100ff00fe04ff003f24ff00fd03ff00bf 02ff00ef01ff00df00fb00ff009f00e3003b005c00c600a8002000000001 00ab01000008002a00c0000100ff00fe04ff003f20ff00f705ff00fe01ff 00df04ff00f500ff00f600ef00be00cb00d3006500e001000001007d0200 000f004c000100ff00fe04ff003f21ff00fe00f703ff00bb01ff00f7007f 02ff00fb00dd00bf00b7007900fd00470062008d0094000400000003004d 008000000001005a0060002100ff00fe04ff003f20ff00bf00ff007f0cff 00bb00fb00fd00bf00fe0037006c001b00b6008400010002004000010300 000106ff003f23ff00e701ff00bf01ff00bf01ff007f00ff00f901ff00fb 00fe00df00eb0057006a008900b1004400000002020000400100000106ff 003f007f01ff00f717ff00ef01ff00fd05ff00fe05ff00df03ff00df007f 01ff00cb00c3002500e900b0000000580500000104ff00fe00ff003f04ff 00fe007f01ff00df01ff00fc05ff00f901ff00fe02ff00f305ff00e702ff 00fd01ff00cf00fb00f702ff00ef009f01ff005f009f00fd00ff002f0074 00df00be006000000030000000100004000000020000000904ff00fd007f 003f04ff00fe007f04ff00fc05ff00f905ff00f305ff00e700df04ff00cf 00ef00bd03ff009f00ff00fe00ff00eb01ff000300c2007200e100900040 005c0100000401000004000104ff00fb00bf003f04ff00fe007f04ff00fc 05ff00f905ff00f305ff00e700fd007f00df00ff00df00ef00cb01ff00f7 00fd01ff009f007f00bf00fb00ff00bf00e7013d00c6009c00ec00030078 010000040200000104ff00fb00bf003f04ff00fe007f04ff00fc02ff00bf 01ff00f905ff00f305ff00e702ff00fd01ff00cf01ff00fe01ff00ef009f 01ff00ee007f00fd00ff0039000d006900a200b40001005a0500000104ff 00fb00bf4300000104ff00fb00bf00804200000104ff00fb00bf49ff00fd 007f49ff00fefeff77ff00fe4aff00fe4aff00fe4aff00fe4aff00fe96ff 00fefeff81ff007f04ff00bf00f104ff007f00fb03ff00fe00ff00c703ff 00fd00ff008f04ff00ef04ff00f700fe003f03ff00ef00ff007f03ff00df 00f804ff00bf00f104ff00f105ff00fe00bf04ff005f00ee03ff00fe00bf 00fb03ff00fd007f00bb03ff00fa00ff007704ff00cf04ff00e700fd00df 03ff00cf00ff007f03ff009f00f7007f03ff003f00ee04ff00ee05ff00fd 00df03ff00fe00ef00ee03ff00fd00df00f303ff00fb01bf03ff00f7007f 007704ff00af04ff00d700fd00df03ff00af00fe007f03ff005f00f703ff 00fe00bf00ee04ff00ee05ff00fd00df03ff00fe00ef00fe03ff00fd00df 00eb03ff00fb01bf03ff00f7007f007704ff00ef04ff00f700ff00df03ff 00ef00fd007f03ff00df00f704ff00bf00ee04ff00fe05ff00fd00df03ff 00fe00ef00fd03ff00fd00df00eb03ff00fb00bf008703ff00f7007f008f 04ff00ef04ff00f700ff00bf03ff00ef00fd007f03ff00df00f004ff00bf 00f104ff00fd05ff00fd00df03ff00fe00ef00fb03ff00fd00df00db03ff 00fb00bf00bb03ff00f7007f007704ff00ef04ff00f700ff007f03ff00ef 00fb007f03ff00df00f7007f03ff00bf00ee04ff00fb05ff00fd00df03ff 00fe00ef00f703ff00fd00df00c103ff00fb00bf00bb03ff00f7007f0077 04ff00ef04ff00f700fe04ff00ef00f8003f03ff00df00f7007f03ff00bf 00ee04ff00f705ff00fe00bf04ff005e00ef03ff00fe00bd00fb03ff00fd 007b00bb03ff00fa00f7007704ff00ef04ff00f700dd04ff00ef00bf007f 03ff00df0077007f03ff00be00ee04ff00ef06ff007f04ff00bc006004ff 007800fb03ff00fe00f100c703ff00fd00e3008f04ff008304ff00c1008c 001f03ff0083001f007f03ff0006003803ff00fe000c007104ff00e000ff 00fe0aff00fe05ff00fd05ff00fb05ff00f70cff00df05ff00bf05ff007f 04ff00fe53ff00fe4aff00fe4aff00fefeff30ff % % Run-length encoding savings = 28.5% % grestore showpage %%EndDocument @endspecial 37 1854 a currentpoint currentpoint translate 1 0.62503 div 1 0.62503 div scale neg exch neg exch translate 37 1854 a 299 1341 a Ft(Figure)16 b(5:)j(House:)h(in)o(tegration-inspired)e(sub)q(division)f(with)f(1)f (rectangle)37 3192 y currentpoint currentpoint translate 0.62503 0.62503 scale neg exch neg exch translate 37 3192 a @beginspecial 0 @llx 0 @lly 453.542175 @urx 382.676208 @ury 4535 @rwi @setspecial %%BeginDocument: vb16-b.ps % % /inch {72 mul} def /rlebuffer 2 string def /samples 256 string def /plotimage {593 562 1 [593 0 0 -562 0 562] % run-length decoding block { currentfile rlebuffer readhexstring pop pop rlebuffer 0 get 1 add %% number of copies of the sample /nsamples exch store %% save it away /lum rlebuffer 1 get store %% the sample itself 0 1 nsamples 1 sub { samples exch lum put } for samples 0 nsamples getinterval %% leave the pixels on the stack } image } def gsave 1.6 inch 3.4 inch translate 5.1 inch 5 inch scale plotimage 49ff008049ff008002ff00fc007f44ff008002ff00fb00bf44ff00a002ff 00fb00bf44ff00fe03ff00bf49ff007f00804100000f00ff00df02ff00fe 00ff4200000704ff00fd00ff003f04ff00f905ff00e705ff009f04ff00fe 007f04ff00f905ff00e705ff009f04ff00fe007f04ff00f905ff00e704ff 00fb00ff003f04ff00f905ff00e705ff009f04ff00fe007f04ff00f905ff 00e705ff009f04ff00fe007f04ff00f905ff00e704ff00f8013f04ff00f9 05ff00e705ff009f04ff00fe007f04ff00f905ff00e705ff009f04ff00fe 007f04ff00f905ff00e706ff003f04ff00f905ff00e705ff009f04ff00fe 007f04ff00f9007f04ff00e705ff009f04ff00fe007f04ff00f905ff00e7 06ff003f41ff00e706ff003f20ff00df1fff00e706ff003f1fff00bf20ff 00e706ff003f1fff00df00bf1fff00e706ff003f41ff00e700ff00fd04ff 003f41ff00e706ff003f41ff00e706ff003f21ff00df1eff00e700ff00fe 04ff003f41ff00e700ff008004ff003f1eff00f721ff00e700ff008004ff 003f1eff00fe00ff00ef1fff00e700ff008c04ff003f1dff00fd01ff00f7 1fff00e700ff00fb04ff003f1dff00fd22ff00e700ff00f604ff003f41ff 00e700ff00fd04ff003f41ff00e700ff00ef04ff003f1fff00f720ff00e7 06ff003f1fff00fd20ff00e706ff003f41ff00e706ff003f36ff00fa00ff 007f007801ff00fa03ff00e706ff003f21ff00fd00e912ff00fa00ff007e 0077007f00ff00fa03ff00e706ff003f36ff00fa00ff007d007701ff00fa 03ff00e706ff003f1dff00fb18ff00dd000f007700ff008c003f03ff00e7 06ff003f1dff00df18ff00dd0077007000ff007500df03ff00e706ff003f 1cff00ef01ff00df16ff00dd0177007f007500df00ff00fd01ff00e706ff 003f1cff00fb03ff007f14ff00eb0177007f007500df03ff00e706ff003f 1eff00bf01ff00bf14ff00eb02770084003f03ff00e706ff003f1eff007f 17ff00f7000c001800e300f504ff00e706ff003f3aff00f7007504ff00e7 06ff003f1bff00fb07ff007f15ff008d04ff00e700ff008004ff003f1cff 00bf23ff00e700ff008004ff003f41ff00e700ff008904ff003f1cff00ef 23ff00e700ff00b004ff003f1dff00f722ff00e706ff003f41ff00e706ff 003f1cff00bf05ff00df1cff00e706ff003f1bff007f03ff00fd1fff00e7 06ff003f41ff00e706ff003f41ff00e706ff003f1fff00f720ff00e706ff 003f1dff00bf22ff00e706ff003f25ff007f1aff00e706ff003f41ff00e7 03ff00ef00fc007f003f1eff00fd05ff00df1aff00e703ff00cf00fb00bf 003f41ff00e703ff00af00fb00bf003f19ff00f706ff00fe02ff007b1aff 00e703ff00ef00fb00bf003f23ff00fd1cff00e703ff00ef00fc007f000f 1aff00bf09ff00ef1aff000703ff00ef00fb00bf000f1bff00ef24ff0007 00ff00fe01ff00ef00fb00bf003f1bff00df01ff00fd21ff00e700ff0096 01ff00ef00bb00bf003f26ff00fb19ff00e700ff008001ff0083001c007f 003f19ff00bf09ff00df1bff00e700ff008002ff00bf00ff003f1eff00fb 21ff00e706ff003f1dff00f700f521ff00e706ff003f41ff00e706ff003f 20ff00f700ff00ef1dff00e706ff003f26ff00df19ff00e706ff003f18ff 00ef08ff00ef1dff00e706ff003f41ff00e706ff003f19ff00fe01ff00ef 04ff00bf1dff00e706ff003f27ff00fb18ff00e706ff003f1fff00fd07ff 00bf17ff00e706ff003f17ff00f728ff00e706ff003f17ff00ef28ff00e7 06ff003f17ff01ef08ff00fb1dff00e706ff003f17ff007f00df0aff00f7 02ff00ef17ff00e706ff003f17ff00ef0eff00df18ff00e706ff003f18ff 00bf0dff00ef18ff00e706ff003f16ff00fb00ff007f0cff00bf00f718ff 00e700ff00fe04ff003f16ff00fe00fb03ff00fb03ff00ef1eff00e706ff 003f16ff00ef29ff00e706ff003f17ff00ef02ff00bf04ff00fb1eff00e7 06ff003f41ff00e706ff003f26ff00fb19ff00e706ff003f16ff005f00ff 00f90fff00fb16ff00e700ff00fd04ff003f15ff00fb005f00bf00f705ff 00fd00ff007f1eff00e706ff003f18ff007f00ff00f70cff00fe17ff00e7 06ff003f26ff007f00ef18ff00e706ff003f15ff00d702ff00e709ff00fe 00ff00bf19ff00e706ff003f15ff00ef08ff00f702ff00ef1cff00e700ff 00f104ff003f15ff00af00df29ff00e706ff003f14ff00fe01ff00ef00ff 007f04ff00bf20ff00e706ff003f14ff00fd0cff00f71dff00e706ff003f 15ff00bf007f00df28ff00e706ff003f15ff00fd007f00ff00fb00ff0077 0eff00f715ff00e706ff003f14ff00f400fb02ff00fe26ff00e706ff003f 14ff00df02ff00ef00ff00df0eff00dd15ff00e706ff003f14ff00ef0eff 00fb00ff007f19ff00e706ff003f14ff007f007700fe01ff00fb00fd08ff 00fd1bff00e700ff00fe04ff003f14ff007f00ff00fb01ff00fb00fd08ff 00fe1bff00e700ff008004ff003f13ff00fb00ff007f00d70bff00fe02ff 00fb18ff00e700ff008004ff003f13ff00fb00bf007f00ff00fd00fb00ff 00fb25ff00e700ff008004ff003f14ff00fa007f06ff00fe0aff00f716ff 00e700ff00e904ff003f13ff00ed00ff00fa04ff00df24ff00e706ff003f 13ff00b700ef00fd00ff00ef00ff007f00df00d707ff007f04ff00bf00ff 00ef13ff00e703ff00ef00fc007f003f13ff008f02ff00bf00fd0aff00f7 1bff00e703ff00cf00fb00bf003f12ff00fe003f00b700fd02ff00fd00ff 00bb0dff00bf15ff00e700ff008001ff00af00fb00ff003f12ff00fd00a7 00ff00f700ff007f01ff00f700d724ff00e700ff008001ff00ef00fb00ff 003f12ff00f800de00ff00bf00fe00ff00bf27ff00e700ff008001ff00ef 00f8007f000f12ff00f1009f007f00bf03ff00fd09ff00fe1aff000700ff 00a001ff00ef00fb00bf000f12ff00e3007802ff007e01ff00fe00ff00df 05ff00df06ff00fb14ff000700ff00fe01ff00ef00fb00bf003f12ff00d4 007500fd00ff00f703ff00fe00ff00fb22ff00e703ff00ef00bb00bf003f 12ff008f00e700bf00ff00df00ef00ff00fe00f700bf24ff00e700ff00df 01ff0083001c007f003f12ff003500ef00be00ff00fb00fe00ff00be0eff 007f16ff00e704ff00bf00ff003f11ff00fe00b7009e007d00ff003f00ff 00f901ff00f700ff00ef08ff00fe04ff00f712ff00e706ff003f11ff00f8 004700bd00f301ff00f700fb0bff00fb1aff00e706ff003f11ff00f2008e 00fb00ed00fd00ff00ef01ff007f00ff00fe0aff00fd03ff00f712ff00e7 06ff003f11ff00e1001600f700de00fb00ff007f00fb00fd00e700ff00fd 23ff00e706ff003f11ff00ca003900ef00dc00ff00fe00ff00b700ee00ff 00df24ff00e706ff003f11ff0084006700ef007900ef02ff00df01ff00df 0aff00f717ff00e706ff003f11ff000a00e7009e00fa009f02ff00c701ff 00f700fb02ff00fe07ff00df15ff00e706ff003f10ff00fe001300df003e 00e7001f00f900ff00fd00dd26ff00e706ff003f10ff00fc0007009e00f5 00fd001f00ff00fa00ff00e30cff007f04ff00ef12ff00e700ff00fd04ff 003f10ff00f9000f007c0067004c00d300df00fb00f7007f00ef01ff00df 22ff00e706ff003f10ff00f00006007900b700f8006b006f00ff00f600bf 00ff00f70aff00bf18ff00e706ff003f10ff00e0002400f7008c006900cf 007f00fb00ff006f00ff00ef04ff00ef0cff007f10ff00e700ff00fe04ff 003f10ff00c0004800ef009800d700be00ff00bf00f700fe009f00ff00fe 00ff00bf0cff00fd13ff00e700ff008004ff003f10ff0080009a00de0035 008b003c00ff00ef00db04ff00bf05ff007f00ef04ff00fd13ff00e700ff 008004ff003f10ff00010024003e00f3002600f300df00ff00ef003d01ff 00fb00ff007f21ff00e700ff008c04ff003f0fff00fe0012004a003800ee 000f00ff00df007d00eb11ff00ef14ff00e700ff00fb04ff003f0fff00fc 0004000000130088005a00c7003a00ff001700fd00ff007f03ff00f707ff 007f16ff00e700ff00f604ff003f0fff00f800490020002700d80033009e 00f300ff00bf05ff007f20ff00e700ff00fd04ff003f0fff00f000120040 004f0021006f007e00f700ee00ff00df007e01ff00fe0fff00fd11ff00e7 00ff00ef04ff003f0fff00e00024008000300060005700f900e700fa00ef 00ff00ed13ff00fd10ff00e706ff003f0fff00c00009000000240081004c 007f00ee006d00ef00bf01ff007f00ff00fd0fff00fb10ff00e706ff003f 0fff00800002000400480082003a00e7003e005700fe01bf14ff00bf0fff 00e706ff003f0fff0001010000140086007300ef00fb00db007f00ff007f 03ff00f407ff00df17ff00e706ff003f0eff00fe00120040000000200008 00a5009f007d000b00fb00ff007700f300ff009f00f700ad0fff00f70fff 00e706ff003f0eff00fc002400800100000100cf003f00e2008702ff00ef 00ff007f00ff00fa0fff00f70fff00e706ff003f0eff00f8004902000013 00be007100ef000f00db00fe03ff007f00ec04ff00fe04ff00bf01ff007f 11ff00e706ff003f0eff00f00092001001000007003c00f300bc007100bf 00fd00ff00bf01ff00fd00f600bf1fff00e706ff003f0eff00e000200200 0012007900c700b200bf00ff00ef00ff007f00ef01ff00d704ff00fb06ff 007f00ff00fb10ff00e706ff003f0eff00c2004800400100009400f300ce 006400e700bf00df01ff00bf01ff007d0eff00fd00fb0fff00e706ff003f 0eff00840090008000000001002d0067001c00f100de007f00ff00fd00ff 00bf01ff005f00e70cff00fb11ff00e706ff003f0eff0001002101000002 0010004f00780047001b00ff007f03ff00fe00fb00bf1fff00e706ff003f 0dff00fc0000004200100000000400a4001c0073000b00fb00ef00ff00f7 00ff007f00ff00bc00ef00fe07ff00cd00f705ff007f0eff00e706ff003f 0dff00f8002003000048000900e0000d007b00df00bf00df01ff00ef0075 00df00fb07ff00ef16ff00e700ff008004ff003f0dff00f0004803000090 001100cd000b00c700be00ff00df00ff00fe00ff00bf00f90dff00fe11ff 00e700ff008004ff003f0dff00e000900000008000000001002000230018 00b300ff007b01ff00fd02ff00bf00ff00bf1eff00e700ff008904ff003f 0dff00e1002802000002000000680020002700be00fb00ff007f00d300fe 00ff00c600ff00df00bf09ff00fd01ff00df01ff007f0dff00e700ff00b0 04ff003f0dff00c00052000202000080009a004000cf003d00f7007e03ff 007b00f700fe00f709ff00fb01ff00ef10ff00e706ff003f0dff00040084 040000440080009c007300c7007b00ff00bf00ed00fb00bf00e7007e02ff 00df1bff00e706ff003f0cff00fe00090048000802000002004800030039 00f700bd006f02ff00e600fb007f01ef0bff00f711ff00e706ff003f0cff 00fe003000900300000400920082007100cf00be008702ff00f900ff00fd 00ff00fc00ff007f09ff00f711ff00e706ff003f0cff00fc000500200400 0024000c00f700df007300c700fe007f00ff006e00bf00ff00f7007a0aff 00df12ff00e706ff003f0cff00f000d20040030000420048002900c7003c 00f7001f00ff00fe009f00f500ff00fb00bf00ed00fd05ff00df00ff00fd 14ff00e706ff003f0cff00e100140080030000040090001300da007b00de 003d00ef00ff00f900cf007b00fd007f00f700df0cff00fb0fff00e706ff 003f0cff00ca002904000019002000ad001c00e300da00db005b00fd00ff 00bf00ff00dd00fb006b007f07ff007f14ff00e703ff00ef00ff007f003f 0cff00860062040000940000004b007900eb003d00f700df01ff00fb00f7 00fb00e71fff00e703ff00cf00ff007f003f0cff000900c0030000010005 000000b2007300ae006b00ff00bf00df00fd00ff00a700fe00ff00bf00e7 1dff00e703ff00af00fe007f003f0bff00fe000300c80300000200090000 002400a7009c00e200de007f00f700e600df00fe00ff00ed006d00df1dff 00e703ff00ef00fd007f003f0bff00fc00a7001e00020200000400860002 00db000f0038008700fd00f700ff007b00df007d00ff00fc007f00de03ff 00bf04ff00f704ff00f70cff00e703ff00ef00fd007f000f0bff00fc000f 007d00840200000901000086000e0063000601ff00df006e01ff00f600fa 00de09ff00fe007f12ff000703ff00ef00fb007f000f0bff00f3009c007b 00090200001600900003004c000400e6001f00f700de00bf00d500fe00ff 009f00db00ff00fd07ff00fe14ff000703ff00ef00f8013f0bff00f50029 00f70092014000000004002000000098004100cc006900ef00bd00fb00ef 00f702ff00dd003f009f09ff00ef02ff00fe0dff00e703ff00ef00bf007f 003f0bff00c200f900e7000400000080000000490000002500a000020088 001700ff007d00ff00bf00ef00ff007f00db007f00ef07ff00f700df13ff 00e700ff00fe01ff0083001f007f003f0bff008e00f700de003100010100 003400400012000000090030007700bf00ff00be00f300ff00fb00eb003f 00fb00ff00fb0cff00fe0eff00e700ff009602ff00bf00ff003f0bff003b 00e700be0062000200580000004d0000002400820032002000df003f00fb 00b3007f00af02ff00f700ff007f1cff00e700ff008004ff003f0aff00fe 00d300df005800c4000000a00000005200000068000400240080009e00fb 00ff00ad01ff00df00fc005b00ff00bf00f709ff00fe11ff00e700ff0080 04ff003f0aff00fe006f003c00eb00880003010000b40000008200000049 00030039007700de00c600de00ff009f00fd00ff00ae00fd00f807ff00ef 13ff00e706ff003f0aff00fc00ef00fd00e3003000160000000b00400005 0020000000920002007f00ef00bb00f902ff00fe01ff00fb00bf007f06ff 00f706ff00fd0bff00e706ff003f0aff00f800be007300c60028002c0080 000600d00002006800010024000400f3009e00ff006700fe01ff00fb00df 00db009f00f5007f03ff00fe16ff00e706ff003f0aff00f500b900ff009d 0060008b0000000100800094009000020048000900ef00fd00ff00b600f7 00ff00bf00ef00bd00ff00bf00f7007f00ff00fe01ff00fd16ff00e706ff 003f0aff00ee00f500cf00f800810096000000030040000100a000000090 0010008e007f00ff004c00ef00ff007f00df00fb00ef00ff007306ff00ef 14ff00e706ff003f0aff00db00f300df0079000200380000003400800092 014000200024009e00fb00ed007700ff00f301ff00fb00ff00fd00bf1cff 00e706ff003f0aff00af00d700be00f2001500f200000069000000340100 00400049003d00f300bd00ff00ef02ff00ef00ff007300bf1cff00e706ff 003f09ff00fe007f00a7007a00e5000800e00012001a0000004802000012 005300d70038006f009f00ff00fe00ff00df007f00f7009f00f91bff00e7 06ff003f09ff00fc00df005c00ff00dc001a00cf00010024000400920200 0005000700de00e700fe00ff00df00f900fd00fe00ff00fc00f702df08ff 00fb0fff00e706ff003f09ff00fb00be00fd00e700b4002700be001a0048 000100240300000f003e00a300ff00fb00df00fd00ff00df00f700cf007f 00ff00df1aff00e706ff003f09ff01fc007f00cf002800c7003c00a40090 0002000802000004008200790047007700ef00bf00f702ff006d00ff017f 1aff00e706ff003f09ff00f700ff007f00bf007200ce00f900cd00a00004 009000200010020000f300d600f700ff00bf00ef01ff009f1eff00e706ff 003f0aff00f700fe009c00c3001800f300820040000100200300000100e4 000800ff00dc00bf00ff00fe01ff00ef0aff007f03ff00df0cff00e706ff 003f09ff00bb00ed00fb0073004700fa00e70014008000b2004000800200 0096009a003f00ff00bf00ff00df00f500ef00bd008e01ff00df01ff00f7 17ff00e706ff003f09ff007300ef00fe00e2009d007300cf007900010024 0080030000650010006b009f00fd00df007f00df00fe00f700ee01ff00bf 1aff00e706ff003f0aff002f00fb00fe000d00e7009c00f2000200480400 005b0040004d003d00ff00fe01ff00fb00fd007f01fd05ff00fb08ff00fb 0aff00e706ff003f08ff00fe00df00ff00cb00fc007900df007d00e40004 00900001020000010096000300ce01ff00d702ff00fa01ff00fb04ff00cf 15ff00e700ff00fe04ff003f08ff00fa01ff00bf00fc003700be00f100c8 0009002003000003000c0001001d00f700cf007300ff00df00ff00de00bf 02ff003f0dff00fd0aff00e706ff003f08ff00fe02ff00fb00d7003d00f3 009000120042030000060052000200b100ef00fd00b100ff00bf00ff00fb 007f10ff00fd0bff00e706ff003f08ff00fb00f600ff00bf00f700dc00fb 00c70030002400c40300000900340004006700df007f00df01ff002f00ed 007e05ff00f716ff00e706ff003f08ff00df00ef00f7007f00ef00dc00f7 009e000200cb0008002003000040000c00c700bc00ff00ee007900ff00fe 00f702ff00fd05ff00df13ff00e706ff003f0aff00e900ff00df00fb00ef 00bc008000960090008000000040010000d0001a000f007500f400b700e7 00ff007f00ef01ff007f1bff00e706ff003f08ff00bf00ef00f700ff00df 00e300df00790003003800010094030000200024009e00fb00df00fb02ff 00fd00fb00fe01ff00f701ff00fe0cff00ef08ff00e700ff00fd04ff003f 08ff00df00ef01ff007f00ef00bc007a008600700003002c04000049001d 00e300dc00bf00df00f500fd007f00eb00ff00ef00df00fb02ff007f15ff 00e706ff003f08ff00de00ff00df00fe00ff00b7007d00e6001800e70006 00500100010100000092001b00ef003200f7007f00ff00fb00b700df02ff 00f719ff00e706ff003f07ff00fb00bf01ff00fd00ff00fe00f300fa0019 00c7000d00b40300000500240007008f00d100ff00fd00ff009c00f702ff 007f00ff00fe00fd05ff00f710ff00e706ff003f0bff00fb00fe005f00eb 0014003300de0051004c0300000200490045001c00a300bf01f700fb007f 1eff00e706ff003f0aff009f00fe01ff008f00700067001400f400d00400 00900080003100a300fb00ff005f00f5007f00bf00f702ff00eb0aff00fb 0cff00e700ff00f104ff003f07ff00df03ff00fe007f00bc00e100cf0073 00e5002004000061000c00e7001e007f00ef007e00fb01ff00df01ff00df 00ef0aff00df0cff00e706ff003f09ff00fe00ff00df01fe009d00a500bc 00f3008b00700400005c00390044000d00ff00de00ff00df00fb00fe00bf 1cff00e706ff003f07ff00f702ff00b700f500ff00f200c700bd00e700bc 00c0040000100012008c003d00ef00ff00ed00bd02ff00ef01ff00bf18ff 00e706ff003f07ff007f00ef02ff00ef00fb007f000e00f300ce00b90004 0400002000ac00b000b7009f00fd00fa00df00d304ff00df18ff00e706ff 003f09ff00df00fe01ff00fe00f0002a00df009e007200080500004a0021 006600fe00ff00db006f00ff00f703ff00fe18ff00e706ff003f06ff00fe 00bd00ff003f01fd00df00eb00f8001700df003000a40010008004000016 00c000da00bb00f700a900bf007f00ef017f00fb00fe00f600de00ff00fd 01ff00ef01ff00fb01ff00fe01ff00f700ff00ef007f06ff00e706ff003f 06ff00f904ff009f00ff00db006b00de00f900cc00010000010200000001 0000002d0083005e00fb00ee00f4007f03ff00ef1aff00e706ff003f0dff 00af00f9006f003c00eb009000020040002001000010000200db000d0079 00e700bf00da00ff00bf00ff00fd01ff00ef19ff00e706ff003f07ff00f7 01ff00ef01ff00ae004600ce00fb00c70070000400900010010000040000 00860004007700de007f00ed00bd00ff00ef00fb02ff00bd01df0eff007f 06ff00e700ff00fe04ff003f06ff00fb03ff00f601ff00cb00fd00f700de 0040008900200024010000480001006c0004002f00be00fe00d600fb00ff 00bf00f700fd02ff00ef0fff00df06ff00e700ff008004ff003f07ff00df 00f701ff00f700ff00bd00be00f900ef00f800d000920040004801000010 000200900004000f003f00e6007d00fb00fd04ff00ef10ff007f06ff00e7 00ff008004ff003f07ff00df02ff00df00f700ff001f00eb00de003b000b 002000800092000000010028002500200014000e00f100df007f00e302ff 00f301ff00f700fe0eff00ef00fd06ff00e700ff008004ff003f05ff00fe 00ff007f04ff00f800bf00ff00bd00eb0002007000410025008000000002 001a00400004008d00ef009a00db00ef01ff00bf02ff00f700fd0eff00ef 07ff00e700ff00e901ff00ef00fc007f003f06ff007e01ff00fb02ff00fe 00f700df003f00ff000c00e0000200cb0200003600800000001100ff00f9 00ef00bc00ef00fe007f02ff00bb00f717ff00e703ff00cf00fb00bf003f 08ff00df02ff00f7009b00bf00ff00f900ac001100ec0000008200000003 008000090000000100a300ec006000df00fe00f701ff00f700fd00f719ff 00e703ff00af00fb00bf003f08ff00bf01ef00ff002f00fd007e00bf00e7 00b800f3008e0003006c01000010009a000800040084003d00c700fd00fb 00ef00f901ff00cf00ef00ff00df02ff007f0bff007f06ff00e703ff00ef 00ff00bf003f08ff00bf00ff00fe00ff007e02ff00ee00fb00f700bc0012 009801000001002400040000001a007700db003b00f7009f01ff00bf00df 00f701ff00fe0cff00ef08ff00e700ff008001ff00ef00ff007f000f08ff 007f03ff00ef00fb00ff00df007600de003900a500840100000200600009 0024000400bb009600ff00df003f00ef00ff007f03ff00fb0cff00f701ff 00f705ff000700ff008001ff00ef00fe00ff000f09ff007f00fd01ff00ac 00ff00fe00f800cf00fc00b300ca0000000800000004009000120014002b 0046001a00f701ff00df00fb007f00df00ef0fff00fb01ff00ef05ff0007 00ff008001ff00ef00fd00ff003f05ff00df04ff00fe00fd005d00eb00ff 00bf008f00fc00e700d4008000120000004100200184001a005c001b00e7 00fe00f700ff00f700bd00bf007e007f00ff00ef0cff00fe01ff00df05ff 00e700ff00a001ff00ef00bb00ff003f07ff00bf03ff00fd007f00ff00fb 00ff0017007f00cf0038000400a6008000d3004000090020002500b00023 00df006f00ef00bf01ff00fe01ff00fe0fff00fb06ff00e700ff00fe01ff 00830018013f05ff00fb01ff00fb02ff00f500f700fe00f700ff005b00ef 009e00700000004100010024008000000040004900600057007d00fb00dc 02ff00fe007f00ef0fff00df07ff00e704ff00bf00ff003f04ff00e706ff 00fe007f02ff003f00ff00fc00f4000200d2000200490100008000920040 00df00fb00f700fe00ff00ef00ff00ee00bf02ff00df0bff007f02ff00bf 04ff00e700ff00df04ff003f0aff007f00ff00fe00ff00bf00ff00fe00f7 00fe00fc00ec000900a4000400d200000101002500d000bc007b00ff0068 00ff00ef00f505ff00fb08ff00fb0aff00e706ff003f09ff00f700ff007e 00ef00fd00ff00ef00fb00ef007f00f3000a001200680001002400100000 000200480042003b00f700bf00f700de00ff00df00bb1aff00e706ff003f 06ff00df01ff00ef00ff00fd00f700fb00ee00df02ff00ef003000600090 000200480000010400b00086003300cd007f00e3005b007f00ff00b700ff 00fe00df06ff007f07ff007f00ff00bf04ff00e706ff003f0cff00df00ff 00fe00ff00f700f600fb00fe0069004d0020002400900020000000030020 00120007009f007b006e00eb00ff00df08ff007f03ff00df0cff00e706ff 003f04ff00fb07ff00fb00fd01ff00fb00f700dc004300ac004000490020 000000800000001200020047003a00e718ff00fe05ff00e706ff003f09ff 00fb00fd01ff00f301ff009f00f700df00bd00a3009c000000ca00400000 0140008000020006007100ef000f00e700fd007e00bf00fe01ff00f700ff 00ef0aff00fd01ff00ef05ff00e706ff003f09ff00f300ff00fd00ef00bf 00ef01ff00ef01ff0006003100c100240000008000000020000000d00070 00f700bd00fd00df00ff00fe007d03ff00fb00bf09ff00f703ff00f704ff 00e706ff003f08ff00ef00af00ef00bd01ff00fe00ff007f00f700bd00ff 008f00f700c2004c0001006002000080000100c500f4007f00fe00fb00ef 04ff00bd00bf03ff00fb00fe08ff00bb04ff00e706ff003f04ff00df04ff 007f00ef02ff00fd01ff00f700d8001a00e700b50090008200d802000012 004400de004800df00fd00df00f900ff007f0eff00fe09ff00e706ff003f 0aff007f00f701ff00ef02ff00c700fe003b001f00790020000400b00100 000200420041001c007100dc00ff009700fd05ff00fb08ff00fb00fd03ff 00ef00f703ff00e700ff00fd04ff003f03ff00bf0cff00bf00ff00bd0063 007e00f2004200010060000000020004000b000a0079000b001f0077009f 007e0fff00fd0aff00e706ff003f03ff00df01ff007f03ff007d01ff00bf 00f700fd00ff00ef0069007f00f900e6000000160090010000080082000b 0013000b00ff00ef00ff00d7007f00ff00fb0fff00f707ff00e706ff003f 05ff007f00ff00fd01ff00fd00bf02ff00ef00fb00ff00bd00b300ee007f 00ef0000006402000010000200090065001f007300ff007b007f03ff00f7 0fff00ef05ff00e700ff00fe04ff003f04ff00fc04ff00fb00ff00f701ff 00bf00ff00fe00ff008b007a00e7008e0000005b0040010000020086001b 0060005d00d700bf00fe00bf00ff00f319ff00e700ff008004ff003f0dff 00f703ff00fe008e007700ef0078008000960100002000000020000500d0 007300bf00ff00f41cff00e700ff008004ff003f02ff00ef06ff00fd017f 00ef00fe00ff00f700fe00f5009500e700dd007500030069000102000010 000900a0002f00ae00f900ea006f00df00fb00ff00df00fd00ff00bf00a7 06ff00fc01bf00f700ff007f00fb00ff007e00df02ff00e700ff008c04ff 003f02ff00fd07ff007f03ff00ef00ff00fe00d900ef003f00e200020052 000202000080009200d2004f005100ff00b500b70fff00ef0aff00e700ff 00fb04ff003f0bff00fb04ff00cb00fd001700af007900ed000d00340006 0080010000450026002200bd007b009f00f207ff00e706ff00fe07ff00df 02ff00e700ff00f604ff003f0eff00f702ff00bd00f700fd00f700bc0039 0048000d00a002000040004500bf00f700bf007f005f06ff00bf06ff00f7 0bff00e700ff00fd04ff003f03ff00bf0aff00f9007f00df00fb00ff007d 00f700b200320094001a006001000110009600db00ef00bd00b700fe0fff 007f0aff00e700ff00ef04ff003f04ff00bf05ff00f700fb04ff00df00be 007b00fe007c00e7003000a00090010000010065002500d300df00f300b6 00f900fe04ff00fb08ff00fb00fd04ff00f703ff00e706ff003f02ff00fd 02ff00bf01ff00fe00ff00f700fb01ff00f700fd00df005700fa00e7009e 00e5008c00420041008002000040000b004f003c003700bf00f105ff00f9 00ff00bf00ef02ff00fe01ff00fb05ff00f300ff007f01ff00e706ff003f 0cff00fe03ff00fe00ed00f700df007a00c7001a00e200d2001001000045 0080003200aa00fb00d6009b00df06ff00fd00ff00f704ff00df00bf0aff 00e706ff003f01ff00fd04ff00f704ff00fe02ff00f7003d00ff00bf007f 000b00e100e500340080009000000080002000ed00bc00fb00e800e704ff 00df00ff00ef007f05ff00fd00ef03ff007f06ff00e706ff003f0cff00ef 02ff00fd00ee00df00ff00fa00e600ad007300da00c80041002900000010 0040005b004900d70015003f00ff00fd03ff00fb0aff00f703ff00f704ff 00e706ff003f06ff00bf04ff00df00fb01ff00d700ff005f00af00f100ed 003b00c7009a00ba0088004000000004008000f600c0000f0060005e00df 00ff01fe00ff00f701ff00ef09ff01fd00ff00ef01ff01df01ff00e706ff 003f01ff00ef00ff00fe0aff007f00df00bf02ff009c00fb00df00790034 000400b201000001002a002500bc00e7005f00ff00bb0fff00ef09ff00e7 06ff003f0bff00fd01ff00fe01ff00f300fe00ff00a500a100b700ae00f0 00da000b0004000000120000005800cf002d008500bd00fd006701ff00df 03ff00f507ff008f01ff007b00ff00fb01ff00df01ff00e706ff003f01ff 00fb0aff00df00fe01ff00ef007f00ff00de007b00ff003d00f700340002 00c80000010400a4001500d300d600fb06ff00cf00ff00f701ff00fb01ff 00fd04ff00fe01ff00bf00ff00ef01ff00e706ff003f0cff007f02ff00be 00b700f601ff00c700ff007b00c6000400ac0010004200480001004a0022 00b4003f00e900e704ff00fd00ff00bf00fb04ff00bf00f70bff00e706ff 003f05ff00f709ff00fe00df00ef00fd00ff009500bf00f7008c00510049 0020000000100002009a007800ea002500bf02ff00bf04ff007f05ff00bf 00f707ff007f01ff00e706ff003f08ff00fb01ff00fb00fc02ff00fd007b 00ff00fd00ff00ce00f300ef00ba008200b600c100080020010000d600d8 003700df0077007f00bf02ff00cf01ff00ef00f702ff00fd00ff007f00ff 00fe007f02ff00bf02ff00ef00ff00e706ff003f00ff00df0cff00df01ff 00df02ff00fd01ff0073008000ed0080001400400000000100550048002f 00ff00ef04ff00f707ff007f0cff00e706ff003f0aff00ef03ff00df00ff 00bf00ef01ff007f00ff00bc00f6001300d900010028000400920022002b 0041005d00bd00ff00fe03ff00ef00ff00bf04ff00fd0dff00e700ff0080 04ff003f02ff00bf09ff00fd01ff00bb00ff007f00fb00fe00fb00df00fb 00d6000c00e600000052000200000004003e002b009e00fd005701ff007f 00ff00ef00ff00df01ff00bf03ff00fb01ff00f700fe01ff00df05ff00e7 00ff008004ff003f02ff007f01ff00f706ff00f301ff005500fe00ff00b7 00fd00ff00fe00ff00fa0011001d000400a0001200040000008e0001006b 00f500c700fb00ff00bf01ff007f00ff00ef01ff00df01ff002f04ff007f 03ff00df02ff00e700ff008904ff003f0dff00ef04ff003f01ff003b00ff 00180033008800030048010000100012008800db00fe00fb00ff00ef04ff 00df01ff007f03ff00fb09ff00fe00ff00e700ff00b004ff003f0bff007f 03ff00fb00fc01ff00f700fc00ff00ef00eb00c60008009000c000420000 00220004000700a300ef007f00ff00db03ff003f01fd00ff007f01ff00df 00f702ff00f703ff007f00f700fb00fe00ff00e706ff003f00fe04ff00ef 07ff00fe04ff00af00ff00f700ee00e2009e006900e900200002004000f0 0008002100f500bf00f700df00dd00bf00df0fff007f02ff00fb02ff00e7 06ff003f05ff00cf09ff007b00ef00fb00ff00bf00fb00df00ff00c5003c 00f10033004000480040000800100096005a0077007e007f00ff003f00ff 00fe00fb01ff00f700fe02ff00df007f00ff00fe00ff00ef01ff00fd03ff 00fd00ff00e706ff003f04ff00bf08ff00fb00ef007f03ff00fd00ff0077 00e7007b00e500d400000090001100630000003d0090005b00bf00be00f7 01ff00df06ff00fd0eff00e706ff003f07ff00df05ff00df00fb01ff00fb 00ff007f00ff00f900fe001c00f300dc0059000100240040005600400019 0030002f00f400fe00ff00f700fe007f00ff00fe05ff00fb00ff00ef02ff 00ef00fc06ff00e704ff00fe00ff003f0eff00fe00fd01ff00f701ff00ef 00f300ff00bd00ef009c007a0002004a000f00180081001c01cf00ff00eb 00ff00ef00ff007f03ff00fb00fc00fb05ff00bf00df00fe04ff00ef00fb 00e704ff00fc00ff003f09ff00bf02ff007f03ff00df00fb00ff00df00ff 00ee009700df003c003e000500900088004e0000000300a2008700f500df 00bb02ff00fd00fb01ff00fd01ff00f701ff005f09ff00f700ff00e704ff 00fa00ff003f00bf0eff00de03ff00fe00ff00f7003800ef00be00f10088 000d0020000f003200040001000200ea00d700ed00ff00ef00ff00df06ff 00fb0eff00e704ff00fe00ff003f00ff00fb06ff00fd04ff00fe00ef00fd 01ff00f700fd00ff00ef00ed00ff00bf00f3009f001200c8000900ed0000 000300c2007b00ff00fa01ff00db00ff007700ff00fd01ff00fb00ff00bf 00f701ff00df00bf00ff00bf007f05ff00f700e704ff00fe00ff000f0eff 00ee01ff00fb00ff00ef01ff007f008200df00790086002000a400900013 000000400001002500d5001600d9007e00ff007f01ff007f03ff00bf01ff 00ef0cff000704ff00fe00ff000f00ef00fd01ff00bf01ff00f700ff00d7 04ff00fe005b00df00f700fe00bf00bd00ef007f0023007900f700520061 0058000000250080000400080023007c007f00ef007f00ff00d700f700fd 00ff00eb00ff007f00ef00cb00df00ff00bf01fe00ff00df00fd006f00ef 00fb01df00fc00ff00dd000704ff00fe00ff003f0eff00fe00bf02ff00bf 00fb00ff00fb00f300ff00f7009d00c100f20000004900a0005c0000003a 00d4003d00f700bf00f700d702ff00ef02ff00fa02ff00fe03ff007f06ff 00e704ff00fe00ff003f14ff00fb01ff00b600ff00df00790041007c0004 00920050000e0001002f00b4003500fe00ff00fe006f03ff00fe02ff00bf 03ff00df09ff00e704ff00f8013f00bf08ff00ef04ff00fe04ff00f600fe 00cd00cf00fe00fb0017006200070004000100980081008b0049006b007f 00eb00ff01bf00ff00bf01ff00fd00ff00bf00fb04ff00df00fb00bf01ff 007f03ff00e706ff003e0fff00bf01ff00fd00ff00df00ff00ed007f00ff 00fd00ee000c00bc008a00480004002b0081000700c1008f00b700ef00db 03ff007f01ff00fb00ec02ff00f702ff007d07ff00c706ff003f0bff00df 01ff007f03ff00fe007d00f700fe00ff00de00ff00ec00370082000e0090 000500d00089008d000700f500fb00ef00fb04ff005f00ff00fd01ff00f7 01ff00fb00ef05ff00fd01ff00fb00e700ff00fe04ff003f00ff00bf0dff 00fd00fe04ff00f700df00bd00d70097006b00cf00c900e0000500a300e4 00f300eb002800ff00bd00ff00bf007f00bf03ff00fd00ff00ef00fb05ff 00fe05ff00fb00e700ff009604ff003f0cff00fe00ff009f03ff00fb00ff 007f00ab00fe003b00f70079007f0004006600d000030060009d00b4000f 00f200de00fb004f00fb007f01ff00fe00ff00fb00fe007f03ff00ef01ff 00df00fd04ff00f700ff00e700ff008004ff003f16ff00b6007b01ff00e2 00ce00f8005500f0000200980081005a007e00ea007f00fe006d0fff00fb 00ef06ff00a700ff008004ff003f03ff00df03ff00bf06ff00fb00ff00bf 00ff00fe00fb00cf00ff00ef00bf00f300ff00f200eb0010004000a00098 00d0005a0065007d00f700bf00ff00fc00ff00ef01ff00de007302ff00fd 01ff00fb00ef007f00ff00b903ff00fd00fb00e706ff003f01ff00fe05ff 00ef0cff006700ef00fe00fb0047003d00ed00bc00500000007a005f0034 00ab00fe00df00da000f01ff007f00ef12ff00fd00ff00e706ff003f10ff 00f300fe01ff00f500ff00bf00fb00fc00ff00de00f700ee004f00110000 0002008b0042006a00eb004b00ff007f00f600f500ff00bf00ff00fd01ff 00f700ff00df00ff00f700ff009f04ff007f00ff00fb00fe00ff00e706ff 003f13ff00df00ff00df00ff00bf00fd00f700ea00fd009c00dd00020000 000300040082008f003d00cf00bf00d600ff00fb01ff00fb04ff00df01ff 007f0aff00e706ff003f0dff00ef01ff00ef01ff00bf00ff00fd01ff00eb 00db005f00e700be00b4008600c00002000d000100b300f701da00ff00f7 00bb01ff00ef01ff00bf00ff00fb00bf06ff00af01ff00df02ff00e706ff 003e11ff00ef01ff00df00fb00df00ff00f700bc00ff00dd007d00cf0023 00a0010200820069005d002d00ff00bf00f700fb00fd01ff00f700fe03ff 00bf01ff007f00cf007f03ff00ef02ff00e706ff003f01ff00df04ff00fd 06ff00f704ff00af00fd003f00ff00fb007f00bc00f300d0009b00600013 00010005004100ad00fb005b00f800ff00f703ff00ef007f00ff00df03ff 00fe00ff00fd07ff00e706ff003f0eff007f05ff007600ff00fe007f00e3 00ee00fb00ef004000b100100030002000290071003f00fa004d007700fd 04ff00df00fc05ff00fd01ff00fd06ff00e706ff003f0cff00fc03ff007f 00bf01ff00df02ff00e300bd00f700cf006000cd002c00800004005a0046 0059006d001f00ff00df00ff00cf02ff00f702ff00fd00fe02ff007f02ff 00bf02ff00ef00ff00e706ff003f0aff00bf00fb05ff00e701ff00f702ff 00de00fe00ef00dc00f000ba00f2001000200022002c00bf00be009b00ff 007f00ff00bf00fd00ff00df05ff009f01ff00df03ff00fb00ff003f00f5 00fd00e706ff003f06ff00bf0bff00ef00fd00ef00d700fd02ff00fe003d 0083007600a200120000001a00a8004700fa009f00ee00f300bf01ff00fb 00ff00ba05ff00bf00f7007e08ff00e706ff003f05ff00fd0bff007f00ff 00de01ff00fb00ff007e00ef00fd00f1000e001900450002000300170040 00dd002d00e700bd00e501ff00df00ff00f700dd05ff00fe00fb02ff00fd 00ff00bf00ff006f01ff00e706ff003f05ff00fe02ff00df06ff00fe01ff 00fd00ff007f00cf00fe00ff004f007f00f4001600d7009c00c2004d00e9 0067000600d200da00fb00bb00fd00ff003f01ff00df01ff00bf00ff00f5 01ff00ef03ff00f904ff00e706ff003f01ff00ef14ff00df01ff00de00ff 00c7009900e5003400c3001600900049006900ef00be00ef00fe00ff00fe 0cff00fe01ff00fb04ff00e706ff003f01ff00df10ff00bf01ff007f00ff 00fb00ff007f00f300f800b7008a002c006a001300c20040005a001500ec 00ff00df00ff00fe00ff00ef01ff00df06ff00f900ff00ef00ff00fb00ff 00df02ff00e706ff003f01ff00bf0eff00df01ff00fe00fb01ff00fb00fe 00fd00ff00b2008700d4007200e800550010003c0022005f016f00ed00f7 03ff00fe00ff00bf01ff006f02ff00df08ff00e706ff003f11ff00f700ff 00f7009d00ff00fe01ef00ff00f700ff007000ff007c00ad00b800b600c0 0061006c002900a6003d00ff009f00ef007f00fe00f700bf03ff00df00ff 00de00f701ff007f00bf03ff00fb00ff00e700ff00fe04ff003f0bff00ef 04ff007f00fd05ff00fe00ff00dd00e9001e00fa00520068001b007000aa 0088001700ff003e00ef005f00fd00ff00bf007f03ff00f900ff00f707ff 00fe02ff00e706ff003f0bff00f700fd04ff00e700fe01ff00fe00ff00df 00ff00fc007f0097007200f7009600c3000c00b5009500a000d700fd0057 007d003f00ff00f900ff009f00ef04ff00bf00fb01ff00f700ef01ff00fb 00ff003f01ff00e706ff003f0bff00fb07ff007f00ff00fd01ff00fb00fd 00f700ef007300cf002c00a6009600d200860061006d002e008900ff00fb 02ff00df0cff00cf00f703ff00e706ff003f0aff00f702ff00ef06ff00f7 00fe00ff00f700ff00fd00ad00ef009e00df005b00eb00ef00b700c500db 00fb00eb00ed006f00ef00ff00df01ff00f6003f06ff00df03ff00bf02ff 00a706ff003f13ff00f700bf01ff00fd00ff00bf00fd008e00ff00ef00bf 0062003e0071001e0078000f007c00e700b4007f00fc005f00fb00fd00ef 06ff00be02ff00f706ff00e706ff003f04ff00fb0aff00df01ff003b00ff 007f02ff007f00db00f7007700de00f900ea001700b0002b00d2000d00ea 009600d500ff00fe00ff00bf006e00ff00df01ff00fe01ff00fd00df00fb 04ff01df02ff00e700ff00fd04ff003f15ff00fe00ff00f702ff00e500b7 00fe00770098007f00d9003f00fc001600fe00dd00fd002d00bf00ff00f7 00df00fd00ff00bf00ff00fd04ff00fb03ff00fd00ff00df01ff00e706ff 003f0aff00fd07ff00b700ef00fd00ff00ef00ff007f00df00d400de00f9 00b700b8002e0084005000ea005b006d000d00b6009f00da00df00ff00ef 02ff00fb02ff00fe03ff007f02ff005f02ff00e706ff003f13ff00ef03ff 00fc00ff00fe00db01ff00ce007100ff00fe00ff00fd001f00ff00be005f 008f00fd00ff00bd00a307ff00bf03ff00f704ff00fe00e706ff003f0bff 00df0cff00bd007f00ff007f00e7009e00d1005f00f1002f00f5002700fa 00d700fc000b00ff00ba00ff00960cff00fd00ef00ff00f702ff00e706ff 003f05ff007f09ff00fe02ff00bf00ff017f00fe00fd00fb00b7007700fe 007b00cd00b600be00fa005b006d006b00ae00b400f300bf00f300ef0069 00ef01ff00df00ff00f700ff00f700fd00ff00fd00fb02ff00fe01ff00fe 00ff00e700ff00f104ff003f18ff00b700ff00f7007f00fb00bf00ff0017 005f00eb00af00f600d700f900eb00f9002d00ed00ff00fe005f01ff007f 08ff00fa01ff00df01ff00fe00ff00e706ff003f0cff00fb07ff00bf01ff 00bf00fd01ff00ef007f00e600bd00f3009e0073009f007d00ee00bc0068 00f8007f00f700fc006700ff00ef01ff00f703ff00fd04ff00ef03ff00e7 06ff003f09ff00fe07ff00ef00fe017f02ff00fb00fd00ff00ef00fd00ed 002f00ae00d700d6008f00fd007500ad00a800b600bf00ef006b00df009f 05ff007f00fb00fd03ff00ef00fe03ff00e706ff003d02ff00ef13ff00fe 00ff00df00ca00ff00dd00fb00d800dd00eb007e00fd008f00b000df00fb 000b003d0077006e0092009e03ff009f06ff00fb00ff00df01ff00fb01ff 00e706ff003f04ff00ef07ff00fd05ff00ef00ff00df02ff00f700ff00fb 00ff00f9006d00b400b600da007b00ff002d0096000a00d7001f00ff00c3 007900f7007f00f702ff00fd01ff00b700ff007f02ff00bf03ff00e706ff 003f09ff00fb09ff00de03ff00be00df01ff00cf007d00ff00fe00ff00df 00ff00fe003500ff008f00a5001f003d0003007f00ef01ff00f708ff00fe 00fb04ff00e706ff003f04ff00bf08ff00fb04ff009d03ff007f00ff00f7 00ff00bd00d600fd00fb005f00e500bf0076001a00da004b00ef002e00ee 00a500db00ff007f00ff00ef03ff00fe00ef09ff00e706ff003f04ff00fb 10ff007f00ff00f903ff007f00e500af00ae009700d700ff007b00c100ed 00a60092007300ff008900ef00d502ff00fe07ff00ee01ff00df02ff00e7 06ff003f0cff00df09ff00f700ff00f7007f01ff00bb00a7001900d7002e 00e900e700f8009300ba004100e0002300ec003100be007c007f00ff00fd 04ff007f01ff00df06ff00e700ff00fe04ff003f04ff00ef09ff00f703ff 00bf01ff00ef00ff00fd02ff00e6005d00d5005e00e3009f00ff00d300e0 00c900a80051007900b400df00fe00ed02ff00df02ff00fe02ff007f00ff 00f704ff00e700ff008004ff003f15ff00fb01ff00f700ff00ef00ff00fd 00df00ab006d00d700b600de00ff00ef00a100b600b000fc00ce006d0056 003f00f700be01ff00fd00ff00bf02ff00ef01ff00df00fd04ff00e700ff 008001ff00ef00fc007f003f0fff00df08ff00eb00fd01ff00f800ff00f3 007f00f8006f00fd00a500ba00da00dc000300b400a100de00fb00df00bf 00fb00fe09ff007f04ff00e700ff008001ff00d700fb00bf003f19ff00df 02ff00fa00ff00fd00ff00fe007f00ff00dd000a002f00640092006f0002 005b00f7007e00ef02ff00f706ff00fe00bf00ff00fe02ff00e700ff00e9 01ff00bb00fb00bf003f08ff00fb04ff00fe01ff007f02ff00df02ff00e7 02ff00f8005d003000aa00d40077009f0011003600050096000e009a004d 00f600cd00b700a302ff00fd03ff007f00ff00fe06ff00e703ff00bb00fb 00bf003f14ff00bf00ff00fb05ff00fe00ff00f3006f00fa00ad00fc00be 00fa001b0075004d006500a5004300ff0079005700ff007f00ff00fe01ff 00fc01ff00ef07ff00e703ff00bb00fc007f000f0dff00fb08ff01fb007f 03ff00af006500d700b700df00fb00890019008000a400430058001d00ef 00bc00fb00d700ef00fe00ff00d905ff00ef00ed05ff000703ff00bb00fb 00bf000f0dff00fe07ff005f00ff00f501ff00ef01ff00f900f7007e00f7 00df00f8004500f400a200b800f200d4005100bf007400ee001c00fb00ff 00fd00ef03ff00fb01ff00af007f00df00fe00ff00df00ef000700ff0080 01ff00bb00fb00bf003f08ff007f0cff007f03ff00b701ff00d701df002f 00ed00b70043005b00e00098004100a0003e006e00db00fa003f00ef01ff 00df03ff00f101ff00fd05ff00e700ff008001ff00d700bb00bf003f15ff 00fd02ff007f03ff00ed002d00b600be00ff00c6006900c900a200a00040 00f5005d003d00ff0096007a000f01ff00fb03ff00f701ff00fa05ff00e7 00ff008001ff00ef001c007f003f0dff00bf04ff00e702ff00ef00ff00bf 00df00ff00fe00ff00f600bd00eb005f00f100bd0028009600d000420064 002000b5003b00cf0079006d005f02ff00d700ff009f0aff00e700ff00a0 02ff00bf00ff003f19ff00bf03ff007d00ff00fe00f700ff002e00b80057 0052000f000d000400aa00b7001d00e300cf01ff00fe00cf007f00ff007f 03ff00da00bf04ff00e700ff00fe04ff003f12ff00bf03ff007d00ef04ff 00fd006d00b400ff00fe006b006d002500b6001000000087005a00cd00af 00a100fd007700ff007900ff00fd03ff00fd00f700bf00fd04ff00e706ff 003f17ff007f05ff00fe00df00ab01ff00ac00b600de005b000200040005 00c7009500f10067009d00f700df00fe01ff00df01ff00f700fd00fb06ff 00e700ff00df04ff003f01ff00fe04ff00df06ff00fd05ff00fb00ff007f 05ff002f00a700fe00ff00c300db005100ac00000040000b0010008c00f7 00ce00f300de00ff00e500ff007f03ff00ef00ff00f905ff00e706ff003f 15ff00ef00ff00ef00bf05ff007d00fb00df00e700a5006c00e100340140 00220068009a00de007c00fb009e01ff00f700fe00bf01ff00bf00ff007d 00ff00fd04ff00e706ff003f16ff00f707ff01df01ff00f400b700fb0059 00200040006500ac00d400f8005f009f007c00ff00bf00ff00fd007f00ff 00ef00ff00de00fe00ef00bb00ff00df02ff00e706ff003f16ff00ef00eb 06ff00e5003f01ff00f900cd006800e00010004000880079006d002e007b 001e007f00de007b05ff007f00ef00ff00bf04ff00e706ff003f17ff00df 06ff00f8007f01ff00fc006f00fa0000004000010094004400db007a00eb 003c00cb00d700bf00a704ff00fb007f06ff00c706ff003f06ff00fb0eff 00fe00df06ff00fd02ff00fe003f00fe0014000600020021000400b60087 008f00bb00ef006600df00ff00cf03ff00f600fe00ff00fb04ff00e706ff 003f06ff00f706ff00fe07ff00eb007b00fe007f00f700fb00bf00f700ed 002f003e00eb006e001b004900080012000600d0008f006d004500fd00f7 00df00d302ff00fe03ff007f01ff00ef00ff00fb01ff00e706ff003f17ff 00ef0bff003f00fe0014000600080096001500570087005200ef00fc0062 01ff00fb02ff00fd01ff00fa00ff00fe02ff00bf00e706ff003f0cff00fb 03ff00fe01ff00fd09ff00fe02ff00fe00ef00fa0000004000030044000d 00b4000100eb00dc00bd00a500fa00ff00b700fb00ff00f700ff00f700bf 01ff00df03ff00e706ff003f18ff00ef05ff00f500bf01ff00fb00ed006c 00e00010004200d8004000e9003d00bb009d00eb003a007f01ff007704ff 00e9007f02ff00fe00ff00e700ff00fd04ff003f13ff00fb01ff00ef08ff 00fb01ff00b500b600fb0059002000400014000000b8004a005f003400fd 000f00ef00fb007f00df00e7007f00ff007d02ff00fd03ff00e706ff003f 0cff00df08ff00f700ef00bf05ff007f00fb00df00f700ff007d00e10034 004000000061000d006800ae008e007f008f001500ff00fb01ff00ef01ff 00bf00ff007f00f704ff00e706ff003f0bff00fe12ff007f00f700fe00ff 00ef00fb005100ac00040040012200500039007c008700b800f7008f00ff 00fb00ff00ef00ff00bf00ef03ff00bf01ff00fe00e700ff00fe04ff003f 15ff00ef09ff00bf01ff00ae00f600de005b000200040024008400a10017 005700d600a0006700ff00fe00ff007f01ff007f00ff00ef01ff00bf00ff 00ef01ff00e700ff008004ff003f10ff007700df04ff00fb05ff00fd00ef 00fe00ff00fe007f00ef002500b600020000008c00450001006d0087006f 00c000de00f900de00fd03ff007f04ff00df01ff00e700ff008004ff003f 10ff00bf07ff00bf03ff007f01ff00f700ff006f00ff00d7005200020000 0001004200020048004700d800f100de00f800bf01ff00cf01ff00fb02ff 00fe03ff00e700ff008c04ff003f10ff007f03ff00fb03ff00df00bf00fe 01ff00fd00ff00df00f100ff007e00d600d0004800040021006c00050092 0040007b008d007800ed00df00fb02ff00de04ff00fb02ff00e700ff00fb 04ff003f19ff007f06ff00fe00ff00ce00fb00c900a200e0010000a80009 002d0055006a0035007f00de003f01ff007f00bf00ff00be02ff00f703ff 00e700ff00f604ff003f0aff00ef07ff00f706ff00f704ff00bf00ed00bf 007700db00e200500040000100f8001200d00029007e000b00ef00bf007f 00df00ee01ff00df05ff00bf01ff00e700ff00fd04ff003f13ff00cf01ff 007f00ff00fd04ff00fb00ff00fe00f700df00fd00ff00fc00a4004800a0 00000020002400900034008c001500ff003a00ff00bf00f7003f00bd00f7 00be00fb00b5006e00f700ee02ff00e700ff00ef04ff003f16ff007f06ff 00bf00f701ff00df00fb00ff00b9000600a001000040000a0060000500b4 000f000e00fd00af00ff00ef00fb007700cf02ff00fe01ff00bf01ff00e7 06ff003f0aff00fd007f13ff00ef00fe00ad00ff00bf00fa009900c20004 00000005001000c100cf0040004f00ff00f6003e02ff00fd009305ff003f 00fb00ff00e706ff003d07ff00fe00ff00fd0aff009f02ff00f702ff00fb 00ff00fd00ff00fe0077009f007d00f6000f001000040000000900600004 003600c2009e00b900df00f902ff00fc00fe04ff00fb02ff00e706ff003f 14ff007f00bf06ff00fe03ff007f00ff00fd00bf00040007000200000007 0050000300aa0041003d00f100ee006900ff00df00f900dc00ee08ff00e7 06ff003f09ff00f705ff007f00ff00f706ff00fd01ff00fd03ff00ef00fd 00ed00fa00ca000000040000000500b10082005b0040007800ef003200d7 00ff00df00ef00ee00b100fb00ff00fa00ff00fe00fa00f701ff00e706ff 003f1aff00ef00ff00fd00ff00fb01ff00f700de00ff00df00b900b00010 00400000005900e8000000b4008400f700fe003500d3003f00ff00bf0076 00fd00ff00ef01ff00bf03ff00e706ff003f11ff00fb04ff00ef04ff00ef 00ff00bd02ff00f700ff00f000c000200140005200200004007c001900e7 00bd006f008700e600ff00fe00e700d700cf00ff00bf00ef00ff00bf003f 01ff00e706ff003f1dff00bf00ff00fb01ff00e900ef00fa00df00bc0001 00400000005d000800100090001300df003600ee008e00c700ff00bf00fb 00c700be00ff007f00f703ff00fd00e706ff003f1eff00e701ff00bf01ff 007b00f500ec0200005a0078000500b40037009e00fb009c00fb00ef01ff 00ef007d00ef03ff00bd00f700b700ff00e706ff003f1aff01f701ff00ef 02ff00ef00bf007700cb00fa00020040000000b60090000a0048000f007c 00e600de003b00df00fb007d005b00ff00b700bf00ef007f00df03ff00e7 06ff003f1aff00f701ff00df007f00ff00fe00ff00df007f00fe002d0096 020000090000000200000096007100a700710073006d00ff00fa00df00ff 00ef00bf00f900ff00df03ff00e706ff003f0dff00fe04ff00fb05ff00df 00ff00fb01ff00fd00ff007f00ff00fb00ff007b00ff00020080000200da 008200840000003500f1002e00e100ed00db00f700ca00b700ff00dd03ff 00df00ff006f00ff00e706ff003f0eff00fe02ff00fb00fd05ff00fe00ff 00df01ff00df02ff00cf00b000df00fb0042000000010087008000420000 004100ea00b500af00be005f00ef00f500b5008200db007f01ff00ef03ff 00e706ff003f15ff007f02ff00fb01ff00ef05ff008f00fd007400ad00a0 0000004b006000a0010000c000de007100eb007b00f7002f00f900ff00fe 00ff003e00ff00fb01f700ff00fd00ff00e700ff008004ff003f22ff007f 00ff007d00ee003c00680000002200c000100014000000c0003800e20016 007500ef00be00f2005f00ff00ec00df06ff00e700ff008004ff003f12ff 00df007f07ff00fb01ff007f02ff00fa00c500f900eb00e8000000690020 002400400100003100e6001f00cf001f007b008500fb00cf00bf007f01ff 00f700ff003f00fd00ff00e700ff008904ff003f01ff00ef04ff00bf0cff 00fe01ff00fb01ff00f7007f02ff00bf01ff007b006d006b00a600b40000 00900040002000080024000c001b00c8000500cb00fe00f7009900970079 00f7003700ef00bf00ff00fd00ef007f00fb00e700ff00b004ff003f15ff 00fb06ff00ef05ff003700de00d700fc000300b401800000004000080087 0098003f00bf007200ed002600fb00c700be00dd00ff00fd00ff00ef00fe 01ff00e706ff003f13ff007f06ff00fb01ff00df03ff00fd001f00ff00be 00df0092004900050003008000080003000e00200087006e00ff00a9001f 00bf00ff00fb00f300f900fd03ff00ef00e706ff003f13ff009f06ff00f4 00fe00ff00bf00fd00ff00ef00fd00fb004b004d002900b6008600d00003 00000001000000060016005000f900fd00f700d40043007600fd00dd00fe 01ff00fd01ff00f700ff00e703ff00ef00fc007f003f10ff00fb0dff00fd 00ff00df01ff009600fe00dd00fd000d00a4000400900002004000000024 00800098008b00da0048002000f700ff00de001e05ff00f700e703ff00d7 00fb00bf003f10ff00f70aff00f704ff00bf00f7006d00e000b600d400ba 00780009003100000089008200580040006b0057001e00f0009300be00b6 00fb00e700df00bf007f02ff00df00c703ff00bb00fb00ff003f0dff00fb 10ff00ef02ff007b00ff007c00ef00bc00e200d400120040001000410000 00e00002005d005f007a00c3005701ee00ef00fd00df05ff00e703ff00bb 00fb00ff003f12ff00bf0cff00fb02ff00f500da00fb00e1007d00280024 0084004800a20140000c0084009d003e0050004300fd00bb007f00ff009a 00df04ff006703ff00bb00f8007f000f1cff00ef00f704ff00bf00fd006d 002e00a900ce0051004101080000002000880019000b002f00a400d700ab 00ff008b01ff00f705ff000703ff00bb00fb00bf000f1dff00f701ff00df 00ff00bf00df00f8009700ed004b00bc00a2009201100000004100000032 0090001000ea000000010059000000b5002b004800b600df0076008b009e 00f9000703ff00bb00fb00bf003f0cff00bf03ff00fd04ff00ef04ff00fb 05ff00df001700ff008e001700c500ac002000010000000a000000600000 00b70088001f00e300ff00c701ff00fd05ff00e703ff00d700bb00bf003f 0bff00fe017f03ff007f0aff00fd02ff00ee007700ff002900a6001700f7 00ca00580100008100940000008a000100c500b00013002300fd0083007f 00ff00b2007f04ff00e703ff00ef001c007f003f1dff00df02ff00f700df 01ff00dd006f003900ef003500c0008000000002002800000014008000b2 00580084005700ef00bb00ef00fd01df04ff006704ff00bf00ff003f1dff 00bf00ef01ff00bf01ff007f00f700f80077008f00730078000000010000 0043000000290045001600f00013005b00be004400fb00ef00dd05ff00c7 06ff003f12ff00df0bff00fe04ff00fd002f00f7007e00f6004800200000 000800a4000400100002001800000060008000fc003400fe001700d6009f 007f02ff00df006706ff003f0fff00df03ff00fd04ff007f03ff00fd04ff 00d200da005f005d00f500ac002400000012004800080028001000180080 00cc003f00f200fc009f00fe01df03ff00f700e706ff003f1eff007f00fd 01ff00de01ff00bd00e700fe00fb007e0078010000100018001100060029 00230001008c004300300081001900f201f900fd01ff00f700ef00e700ff 00fe04ff003f20ff00fe00fd00ef00fd00ff00fe001b007d00f7008e0085 0001010000100024000200400048000b001900af00ea006c009f00ff007d 00f700ff00ef00fe01ff00e700ff009604ff003f12ff00ef08ff00df03ff 00fb00ff00df00fb00ff008f007f00cf007a008001000002020000810090 0027007200b200810004001600d500ea00bd02ff007f00f300a700ff0080 04ff003f11ff007f09ff00f700fb02ff00fe03ff001d00e700df007b0002 002002000010000000810020004c00640011009900390023003b007f00ee 00ff00fd00ef01ff00e700ff008004ff003f1fff00bf01ff00bf02ff00fb 00ff00fe00e7008100000001000200000028000000060001001900dc00e0 00000081000a005b00ff00fd00f700ff003f00fd00ff00e706ff003f20ff 007f00ff007f03ff00fe007100ed00000110010000400100008100310091 00c8003e000200f5001e00ff00fb00bf02ff00fb00e706ff003f10ff00df 01ff007f09ff00fb00ff00fe00ef00fe01ff00fd00f7003f00f700ac0058 0020002c010000b0000000100000004700330010008100000082002e00a8 005b006700f700ff00fd00ff00e706ff003f1eff00e701ff00a701ff007f 01ff00fb00ff00f000960024006a0100002000000002000000ce00630069 00f700c700de003f01ff00e700df00ff007d00ff00e706ff003f23ff00fe 01ff00fe007700fe0031005c001000aa030000040001008c00c60040002c 00020065001f01ff00bf01ff00ef00ff00e706ff003f05ff00fe07ff00fe 00ff00fb0cff00bf00fd00ff00ef00fb01ff00df00fb00ff00df00d00072 0009002900400110004000000003003b005c008600020011008a001b0079 00ed00db01ff00fe00ff00e706ff003f21ff00f700df02ff00f700ef00fd 008400ae008200d70040010000200000000800720013000400dd00450063 003300ef003e00e700fd01f700ff00a706ff003f16ff00df08ff00fc00f7 02ff007f00ff00bf00ff0088005d0001006d008000000001000a00010050 006e0060001300810014000400c3007a00f600da00bf00ff00bf00fd00e7 06ff003f0eff00fb00ef0eff00f700df05ff00fc00e700d700d2008b00d9 00410100008000020001004800640013000200c6008300f1007d00f7007e 00bf003f00bf00ff00e706ff003f0eff00ef0fff007f00f701ff00f702ff 00f300fc0021004c008000b600400100002800000048003800c800060024 008100080024009f00cb00bf00df01ff00bf00e706ff003f1fff00fd00fb 04ff00df00ef00df005b000a002900ad0010008000040041000200800013 008000cc004a007c00850028007a00fb00e700df02ff00e706ff003f1aff 007f07ff00bf03ff00fd007400f80012007c001000200000002000010008 00060020003800dc008000120008001600df005800fa00f700ef00ff00e7 06ff003f20ff00bd02ff00ef01ff00fe006700df0020006d001000340200 000a003000000002006100b50028006a00d1009d00dd00ff00bb02ff00e7 06ff003f1fff00fd00df00fb04ff00df00da00ba00d4006b006800900200 0005000000010002004b00710010000900140017006f00ff00f301fb00ff 00e706ff003f0fff00bf0eff00fb01ff00f704ff008b00ff008700960180 020000280000006a0000004e00e7000200f5002700c5007f00ff00fe003f 01ff00e706ff003f0fff007b00df00f701ff003f01ff00ef00ff00ef00f7 01ff00df00ff00bc00b7007f00ef00ff007f007b00de00fe00c600d30041 0025008003000004000000140011009900ac000400800008002000260085 006c001e00fb00ee00c706ff003f1fff00fd007f07ff00bb00c700d50002 0080000000a00000002801000027001b0098008700fe003f00f902ff003f 01ff00e700ff00fe04ff002f0eff00fd15ff00ef01ff008d00fe00b50036 01800000004c0080004000020040000c006600320002006500250080007f 00ff00fe003f01ff00e706ff003f10ff007f0eff00fd04ff00ef00fd00da 00fa005d0069000c01000058010000100000009800ce00a0003400180014 0012006f00f700f200db01ff00e706ff003f23ff00fb00fd01ff00be00fd 00dd007a00e8005800120000003402000040000b009c00c4001c006b0061 008d009d007d00bb00bf01ff00e706ff003f21ff00fd02ff00fb00ff00fb 00bf006700df00200027000800120048010000460080004300350090003c 001000080002008f00da00fa00d300ef00ff00e706ff003f1fff00fd00fb 05ff00ef00ff005b005a006f00df001000240090010000a1000000220073 0020009b00870038005f00d300e700db00f701ff00e706ff003f24ff00f7 01ff00f700fa00a500df009200ce0041006500a000080000000800010040 00e60041003500c800240010004300bf00df00ee00ff00be00e700ff00fd 04ff003f27ff00ed00f700cf00ff00e3009c00e0009a0000001400020000 00120080004c0080006700e300f1005d00d3007e00af003e00bf00ff00e7 06ff003f00ff00bf0bff00fe12ff00f700fe01ff00fd00f700bf00ff00ca 00d9004700fb00e100a40080002000000008010000190004005300d40000 002200a200d800bd005700bf00fd00e706ff003f12ff00fd06ff00f705ff 00ef04ff00cf00df00f500be00ac007b00ca00480000004400080090001a 000100520009008d00c200130005002c006600ef00fd00de00ff00a706ff 003f10ff00fb0cff00bf01ff00ef00fb01ff00cf00ff007f00f700fb007a 003d00ef009c00920000000800040000001400000004001300b900bc0110 0021005b007f00ff00be00ff00e706ff003f24ff00bf01ff00fe00ff00fb 00df00b5009f00790024000900040029000100600080002000260033003f 000700c0005e00ba01ff00f700ff00e700ff00f104ff003f1eff00cf01ff 00bf01ff007f00ff00eb00bf00ff00b5003200bf00ee00f1004800120000 00040002000000020000004c00e6013f00f800ff00c700df00ff007d00bf 00e706ff003f22ff00df01ff00bf00f7003e00ff00ef005900df00ba00f7 00900600001d00cc002f000800200000004500d6000b006c00fb00e706ff 003f26ff007f00fa01ff008500ff007b00cf002000100000005200020010 008200410031009800ce00c700c0005e008301ff00f700ff00e706ff003f 25ff00fe00ed00ff00fc00ff00c700db00f700de00400080000000a00100 0054000000670079008500f0001200210003007f003f00b9007f00c706ff 003f21ff00fe00ff007f01ff002f02ff00c600fb00ef009c008100220001 006000200000008c000000ce0043002100f30005002c004001ed00dc00ff 00e706ff003f12ff00ef08ff00df05ff00cf01ff00df02ff00bd00ff00df 003900020060000200800040000000500000009c00cc004300e0002200a0 00c2005d005700db005700a706ff003f24ff00df00fb00bf006f00fb00ff 00fd00df00bc007a000000c8000500000080000000a00010003900880082 00f500490090003c002f00be00ef00cf00e706ff003f1fff00fd01ff00fe 01ff00bd00fe00ff00f700fe00fd00cf00fb00a60009009c000a00000040 00050040000800330018000400ee001000410000009f00fe007700fb00e7 06ff003f14ff00fd00ff00fd02ff007f06ff00fb01ff00f701ff009f00fd 00fe00be00ff00d8001200380014000201000080004000060070001900af 005f00d000e7000b00f7007c00fb00e700ff00fe01ff00ef00ff007f003f 12ff00df12ff00fe00ff007f01ff00bd00f7010600b70008000500080001 000000a0000c00640003007f01820001000200db00fb005f006700ff0080 01ff00d700ff007f003f03ff00fe07ff007f04ff00bf10ff007f00ff00fe 01ff00f700fe00f700ef00f8001c00e7000000080000000a000100020001 0088004600160088008d0064003300bb00af00b7006700ff008001ff00bb 00fe007f003f16ff00fb0dff00fd00ef00fd00ff007f00fb01ff00600039 00cc0060000400200100000400010000005d006f00b200030042008200dd 00ff00fe006700ff008001ff00bb00fd007f003f17ff00ef0bff00ef007b 01ff01df00ff00ef007f00e10031009800c0000800000008000102000099 00d80070004c008000b000ef01ff00c700ff00e901ff00bb00fd007f000f 21ff00fe00ff00fb04ff007f00fd00fe00b5004400670063009000040002 0010010000020003002300bd00e000ff00c700ff003f01ff000703ff00bb 00fb007f000f1dff00f703ff00bf00df00fb01ff00fb00f701ff00f900ff 000000d600c6002000a0010000140000008000040069007300d000000001 0004001200d400ad000703ff00bb00f8013f24ff00fd04ff00f700fb00ef 0083009d00cc00010050000100500028004000080009008600d60070005e 008000f8000f01ff00c703ff00d700bf007f003f27ff00ef00fd00ff00ef 00ff00fa0007003b00490080008400020000005000800044000300bd00c4 0002000100220082004d00ff00fe004700ff008001ff00ef001f007f003f 24ff005f007f01ff00fb00ff007f00fb000c005200360019010000010040 00a0000000280001001300990006008d0058003000a300bf00f7006700ff 008002ff00bf00ff003f23ff00fe00ef00fe02ff00fe00ff00b700f10054 00cc007000110080004200000010000000400006006700ba000100820041 0002001b00eb001f004700ff008004ff003f26ff00fd00ff00ef02ff00c5 0055005800cc0027002000800000008000100000001d00ce002000160050 00a5000500f2007c00fb00e700ff00a004ff003f13ff00bf00ff00ef04ff 00f307ff006f00df00fb00ff00df00fd00ff00bf00a200d200350080004c 0060004a0001004800010000000100de00c0000e00b10000009200040077 00fb006700ff00fe04ff003f24ff00df03ff00f900ff00fd00a000d10021 0030001d004800400002000000080000000100b90080005c007c007e0007 00fa006f00cb00e706ff003f29ff00fe00f200ff00810054000200a00009 00d800280004000000840000000200630020001a00f8009800040010005b 005700c700ff00df04ff003f15ff00fe0eff007f00fe00fd00ff00fd00fb 00ef002a007200a4008300610038004000000081000a010000f600000038 00fa006400510025009c00ef00a706ff003f29ff006f00ff00fe0099008c 00d1008400ee00730020001401000002000100cc00c2006300e200c2000a 00040029006d00e706ff003f25ff00fe01ff00fe00ff00f700fe002a0052 00a20009008c00c60040006000800028000c00000019000000c700ff00a2 00b200a90097007f00e706ff003f15ff007f02ff00fb09ff00fd00fe03ff 007700f0002d000500a0001b001900dc0080001001000002000000320001 000f00c700c500fd000b00f000fb00e706ff003f28ff00fd01ff00980029 000400a0000600330099030000840000000400030059001700c100040000 000800ba00a706ff003f15ff00df08ff00fd04ff00df00ff00bf02ff00ee 002a008a00a2004e002600b200090000000200400100004800040033005f 01d8000b0050007f00e706ff003f1aff00f709ff00bd03ff007900ac00cb 00060099009c00ee00660013002000400080000400020000000c0064003f 00be000200440020006f00e706ff003f25ff007b00fe01ff00f200ff00eb 002c00d900b20080009800c80022000000800001008a00100000002000c8 003f007e006200e50084004d00a706ff003f09ff00df1eff00f700ff00bf 00110056004400a5003b0090004c0140010000280000000b009800de00fe 002400140008001f00a706ff003f1dff00bf03ff00ef04ff00ef00ff00ed 005e00e40051000200c000620000009800c0000000100200000100390019 00f800050012004f00a900c700ff00fd04ff003f17ff00ef07ff00ef04ff 00f700ff00df00ff00f900eb00a200d2002a009400d60005003300900048 000800400020000100280061002300fc00c200040020009200e706ff003f 29ff00ef00fe00bf005400d5000200c000cc000200770030000000080100 00010000004600c300c500e300f2001f00e1006706ff003f1aff00fd08ff 00fd04ff008f00fb00fd005400a200c50018000400c60061000000200008 0030001000000008008300fb00f000d00048002a00c700ff00fe04ff003f 26ff00bf02ff004b00ff00f400710019009800b20015009c00c601000001 004001000019000c00c700e10030002c0084006700ff008004ff003f1fff 00fd05ff00bf02ff00f7007b003e008800c400a300240003003900880300 00100100000900af008e00e200270051002700ff008004ff003f27ff00f7 01ff00b700ff00fb000200a00085004000260037001901000001004000a0 000000040011001f00ae000900940056004700ff008c04ff003f1fff00fd 06ff007f00f700e6003d007a00bf00850088001500a000ac00e400700100 000203000002003f001d000f00f000bf00a700ff00fb04ff003f16ff007f 00ff00fd0cff00fd01ff00db002c00fa00dd00850088003100a000fa00cc 0064000200000006000200800100000d006e00b9001000000020008700ff 00f604ff003f18ff00fe0cff00fe01ff00fe00f7007b00bb00c600880015 00610073009900c80066000000080000002800010000000800dc0074000b 00d2009f000700ff00fd04ff003d15ff00df02ff007f0bff00f702ff00bf 00fb007f002200900089004400ef00630010004800800000000200100002 0000003300b100c0004000200050004700ff00ef04ff003f24ff00ef02ff 00df00ff00f3007f00b700d9002200c4001b005600c70000000800c00028 00140000000500000027006100b1009100a70046006706ff003f29ff00f7 00cf00fb00fd00dc004c00b2000a001f008e0003003300a0004000020200 000600d30020007000480024004706ff003f27ff00fe00fb00df00ff00bf 007f0077003200cc00aa00bf009c0080006700300080005000020100000d 00ce000000740048002100e706ff003f29ff00fa00fc00ff00cf00df008a 00d0000a000e0021000800ce0061040000030018008800e2002000930067 06ff003f27ff00f700fe01ff006b00fa00fb000a0090000a000500e60003 00ad00c4000000420200000100300009018f00c300e706ff003f01ff00ef 10ff00f702ff00ef0fff00df007f00fd00de00ff00df00e200c5002a0094 00f80002003b00180002008000100080010000600017001e0089002900c7 06ff003f28ff00f700df00f700bf002f00ff00a10080004e004100f80064 00370030010000210040010000e00007001f0044008f00a706ff003f27ff 00bf00df01ff00fb01fd00f600eb001b001800f8008d004e006000020000 000200810040000800400044002600a6005d00e706ff003f28ff00bd01ff 00ec00af00df00a80085004000540077003900da00c00004000000050000 008000000080001c00cd0070006f00e706ff003f17ff00ef0fff003f00fa 00ff007a00fb00de00fa0015002000950027006300390090000801000001 0200001100f800b8007f00e706ff003f17ff00ef007f00fe01ff00fb01ff 00fd02ff007f00ff00fb00ff00f700df01ff00f3007b00de00f400250022 0094008f00d70073002800d40000001000220080004200020063003100fc 00ba00a706ff003f28ff00f701ff009f00bb00de00ee0085006000d5000f 00c600f70000002800000008000100000001000000c2006800b9007b00e7 06ff003f29ff007f00fd00fe00ff00df00f9008d00c00066003700f900cc 004200500100000a00000002000100dc0086007300ef00e706ff003f23ff 00df07ff00e900fc00be00e9001b00100058005b0058000400a800100000 00340002008400060019008e008700fd00e700ff008004ff003f1dff00bf 0aff00fe01ff00bf00df00e700e2006a00c8009400bf0010000000800500 0033001b008f008300a700ff008004ff003f05ff00fe09ff00df15ff00fb 03ff00ae00fb00ab00dc008a0026005800fc006100030200005001000040 00260003008b00eb008700ff008904ff003f1dff00df08ff00fb00bf01ff 00fd00eb00ff003c00fc000a00010052003a00c000260030000401000004 0100000d0044007b008b00e700ff00b004ff003f28ff00fe00ff00fe01ff 01df00fa000a0001005a001d00a0004c00e00500001800c80064009f0067 03ff00ef00fc007f003f20ff00fe08ff00fd01ff007700f700ed002a0094 005800ab00c1001800c8010000210002010000210010007c00be00e703ff 00d700fb00bf003f29ff00fe01ff00fc00d9007e00fe008a000100120007 004000310098020000080100000300200098007c004703ff00bb00fb00bf 003f26ff00ef00bb00fb01ff00bf00bb00de00ef00e700db001800dc0062 00c500eb002001000001001000020000000200410025009900e703ff00bb 00ff00bf003f19ff007f0bff00f701ff00fe02ff00a600fe00ff00600054 001000a8008500c600f3020000a0000400000014008200610071008703ff 00bb00ff007f000f1bff00bf07ff00ef00ff00fd007700ef00ff00f700ff 00ef0057009e00f600f000b5000200b4000b002c00860040000000010008 0100002b000000c700e1000703ff00bb00fe00ff000f24ff00bf02ff00f7 00fe00ff00df00ff00cd00de00db00b000b1000500340017005900040080 0000000200c0000201000002000500c6000703ff00bb00fd00ff003f1aff 00bf09ff00ef00f9007700e700ff00f700df00ef0056009e00d600780095 000200a4000c003e00190100000500000001020000190084008703ff00d7 00bb00ff003f28ff00fb00fe00ff00bf00ff00f700fe00ef00e000760011 00b8009c00fd002600080500000800520030002703ff00ef0018013f19ff 00fe00fb0aff00f700b903ff00bb00de006f00f600fb0008005800430062 00fd0004001000000014000000800100001000040038004704ff00bf00ff 003f29ff00fe01ff00fe00f900fe00ff00bb00a300970001004500f100d8 00060000000800000008020000040064006706ff003f1aff00fd08ff00fd 04ff00fd02ff00f700ed00ee00d4005800a5005300eb00f0004400000010 010000020200008000e706ff003f28ff00fe00ff00fe01ff00df009f00f9 00fb00e1005a000b004100c300f100980080002000000020000401000001 001100a706ff003f0cff007f0fff00bf03ff00ef03ff00fb00bf01ff00fd 01ff01fc00ff00c10052000b004000af00e1005100810000000801000001 0100000300e706ff003f25ff00fd00ff00db03ff00af00ff00ab01df007c 00580081004400bf00cd0007006000a00010000000040002000000020003 00e706ff003f29ff00fe007f01ff00df00f700e700f300fc0094004d005b 001f009e009600f502000080001000000004000f00e700ff00fe04ff003f 2cff00fb01fe00fd00bf00b6005900230062001f003f009c00c200810100 004001000008003b00a700ff009604ff003f29ff007f00fd02ff00fd009d 00fb00ef003000a8000a008e007f001b009805000010003f00e700ff0080 04ff003f1fff00fd05ff00f700ff00f701ff009f00ff00df00fe00c7007b 00dd004200a4001200a400fa003600320001020000200100007d00e700ff 008004ff003f1fff00fd07ff00df01ff00f301ff00fe002f007b00de0085 00a40052009100fb006c0024002202000040010000ff00e706ff003f29ff 00fa00ff00fe01ff00fb00ff007a00df00d200a4001200a100e800fa00e0 01000081000000a00010002000ff00c706ff003f28ff00fd02ff00ef00ff 00bf00d700fb00fd003000a8000a008200fb00f900c00008000000080005 00000001000700be00e706ff003f24ff00fb02ff00ef06ff01bf009d0163 000a002300e300000080020000800000000700ff00e706ff003f29ff00df 00f701ff00df00ff00f5007b00d400fc001d005a0012008700d600000011 010000040100001f00ef00e706ff003f29ff007f00fd03ff00fd00df0077 007a00a10042008a000f00ae00820060010000080100001f00ff00e706ff 003d1aff00fd00fb06ff00fe007f00ef00ff00fb02ff006f02ff00b600ff 00dd009e008b005000290047005e000400ce0100001000020000002b00fe 00a706ff003f29ff00fe01ff00df00ff00df00fd00fb00e300ff000b0040 002b00470038008800d4010000080004000000fb00fd00e706ff003f21ff 00f70dff00ee00fe00fd00e50054008a0080007a00230019030000c101ff 00e706ff003f01ff00fe15ff00bf0aff00df03ff00f700df00fb00ff00df 00fe00ff009f003f00df00e50053003200c800e000060033020000110003 00ff00bf00e706ff003f1eff00f70aff00f7007f02ff00f7007b00cd00fe 00db0060000b000000d0005c006402000021000201ff00a706ff003f26ff 007704ff007f00ff00f700ff00f500ff00dd00fc000600c2003700000098 00ce00600200000f00ee00fb00e706ff003f22ff00ef05ff00fe00f701ff 00df01ff007a00dd00de00ec001a002000550082009500980088010000a0 001f00fe00ff00e706ff003f1dff00f703ff00bf00df04ff00fd003d00fe 00ff00df00fb00fd00e000b300db00760016002000c6008400e300310090 00020400000706ff003f07ff00bf0aff00f708ff007f03ff00fb06ff00bd 00fe01ff00fb00fd00ea00f500da00ff001600200046008100c700e10020 0080000200200200000706ff003f1cff00fe05ff00fd04ff009f02ff00df 01ff00fe00cf00df00ec000a00820015002300ac00800051020000800100 000706ff003f2aff00f7017f00ff01f7007f00dd00fc00ff00630012008c 0045001900ac008200000002000100800100000700ff00fe04ff003f30ff 00df002f00ff00c700f000660060003800bf003902000003000000080010 002706ff003f1fff00fd03ff00fe02ff00bf03ff00df03ff00cf00fd005a 008a009400a8007c00380002000000020007008000000020004706ff003f 1fff00fd0bff00df00ff00df00ff00fb00fa00fd007f007c000b0001006a 00b8000e01000014000d008000040000000706ff003f2bff00ef00bf00ff 00ef00bf00ff00f7019f00fa00a900510068000100cc002400000020001f 00800100000706ff003f2bff007f00ff00df00ff00f500ff00f5007b00fb 00ef004a000200290094009100cc00800050003f0200000706ff003f26ff 00f705ff00df02ff00fe00fc00ff007f0092008900aa002700e100980100 007f008000100000000700ff00fd04ff003f0dff00fe10ff00bf0aff00ef 02ff00bf007f01df00b700f600cb0024006c004300e000e10080004000dd 00800100000706ff003f22ff007f07ff007f00ef00ff00bf00f701ff00b7 00bf007e00f60037000100d100cf00630042008000ff008a0100000706ff 003f22ff00fe06ff00bf00fe01ff00fb00ff00eb00ff00fa00ef007b00a8 005500820054009c00d60040000300cf00800100000706ff003f21ff007f 00bf07ff00fb01ff00fe007f01ff00cd00ef007b00d00094008a0042003e 008c0082000700ff00800100000706ff003f1eff00ef01ff00bf01ff00ef 02ff00fb03ff00df00ff00df00ff00fe006d00ef007b00d0001400820050 007f001f0008001700fe00800100000700ff00f104ff003f2fff00fd00ff 00ef00fa00ef007b00a600150028001000df00770010001d00f700800100 000706ff003f1fff00fd07ff00df08ff00df01f700fb00ac00c400630079 004e0022003f00ff00800100000706ff003f26ff00f704ff00fb00fe03ff 00fe00af007a009f00830039008300f000f800c0007f00ff008001000027 06ff003f1fff00ef0bff00ef00ff00bf00ff00fb01ff00bf007e00ef0054 00a8004d00ed00f000c000ff007f00800100004706ff003f2cff00f700ff 006d02ff00f600db00eb00b300e90068001f003b00e90041007f00fd0200 000706ff003e02ff00ef16ff00fd02ff00bf00ff00fe00ff00bf07ff007f 00bf00df00ef00f300ff00fb00ff00bf007e007f00e10068000f00f800c3 000500df00ef00800100000704ff00fe00ff003f04ff00f901ff00fe02ff 00e705ff009f01ff00df01ff00fe007f04ff00f903ff007f00ff00e701ff 007f02ff009f02ff00f700ff00fe007f00df00b200a900bb00f700c8000f 00ff00df00800100000704ff00fd007f003f04ff00f905ff00e705ff009f 04ff00fe007f04ff00f905ff00e704ff00fe009b01ff00fb01ff00f00047 00fb00fc00aa00ff007f0098001f00fd00ff00800100000704ff00fb00bf 003f04ff00f905ff00e705ff009f04ff00fe007f04ff00f905ff00e705ff 009e00ef02ff00fe00ee007900bf00db006d00b700fb0038001700ff00fd 0200000700ff00fe02ff00fb00bf003f04ff00f905ff00e701ff00fd02ff 009f04ff00fe007f04ff00f900fd01ff00f701ff00e700fe04ff009f00ff 00ef00ff00fe00fb00fe003f00fb00bf001300fb007d00f0017f00df0088 0100000700ff008002ff00fb00bf4200000700ff008002ff00fb00bf0080 4100000700ff008002ff00fb00bf44ff00e902ff00fd007f48ff00fedbff 008049ff008049ff008049ff00a049ff00fe94ff00dffeffc7ff007f03ff 00fe00ff00c703ff00fb00ff00df03ff00ef00fc007f03ff00bf00f104ff 00fb04ff00fb00ff001f03ff00ef00ff007f03ff00bf00f103ff00fe00ff 00c704ff00c705ff00fe00bf03ff00fd007f00bb03ff00f500ff00df03ff 00d700fb00bf03ff005f00ee04ff00f304ff00f300fe00ef03ff00cf00ff 007f03ff003f00ee03ff00fc00ff00bb04ff00bb05ff00fd00df03ff00fb 00bf00bb03ff00ee00ff009f03ff00bb00fb03ff00fe00ef00ee04ff00eb 04ff00eb00fe00ef03ff00af00fe007f02ff00fe00bf00ef03ff00fa00ff 00bb04ff00bb05ff00fd00df03ff00fb00bf00fb03ff00ee00ff005f03ff 00bb00fb03ff00fe00ef00ee04ff00fb04ff00fb00ff00ef03ff00ef00fd 007f03ff00bf00ef03ff00fe00ff00bb04ff00fb00ff00fd03ff00fd00df 03ff00fb00bf00f703ff00ee00ff005f03ff00bb00f8007f02ff00fe00ef 00f104ff00fb04ff00fb00ff00df03ff00ef00fd007f03ff00bf00e103ff 00fe00ff00c704ff00f705ff00fd00df03ff00fb00bf00ef03ff00ee00fe 00df03ff00bb00fb00bf02ff00fe00ef00ee04ff00fb04ff00fb00ff00bf 03ff00ef00fb007f03ff00bf00ee03ff00fe00ff00bb04ff00ef05ff00fd 00df03ff00fb00bf00df03ff00ee00fe000f03ff00bb00fb00bf02ff00fe 00ef00ee04ff00fb04ff00fb00ff007f03ff00ef00f8003f03ff00bf00ee 03ff00fe00ff00bb04ff00df00ff00fe03ff00fe00bf03ff00fd007b00bf 03ff00f500ef00df03ff00d700bb00bf03ff005e00ee04ff00fb04ff00fb 00ee04ff00ef00bf007f03ff00be00ee03ff00fe00fb00bb04ff00bf00ff 008004ff007f03ff00fe00f1008303ff00fb00c700df03ff00ef001c007f 03ff00bc007104ff00e004ff00e000c6000f03ff0083001f007f02ff00fe 000c007103ff00f8003100c704ff008300ff00800aff00fb05ff00ef05ff 00bf04ff00fe0cff00ef05ff00bf04ff00fe05ff00fb07ff008c49ff00fb 49ff00f649ff00fd49ff00ef % % Run-length encoding savings = 27.6% % grestore showpage %%EndDocument @endspecial 37 3192 a currentpoint currentpoint translate 1 0.62503 div 1 0.62503 div scale neg exch neg exch translate 37 3192 a 290 2678 a Ft(Figure)h(6:)j(House:)h (in)o(tegration-inspired)e(sub)q(division)f(with)f(2)f(rectangles)p eop %%Page: 18 21 18 20 bop 37 50 a Ft(18)1113 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h (and)f(L.)g(Pluym)37 199 y Ft(A)j(plot)g(of)f(the)g(p)q(oin)o(ts)h (where)g(the)f(function)i(w)o(as)d(ev)m(aluated)j(is)f(sho)o(wn)f(in)h (Figure)g(5.)26 b(Note)17 b(that)g(the)37 256 y(area)e(of)g(the)g (rectangles)h Fn(Walls)e Ft(and)i Fn(R1)e Ft(are)h(equal.)108 312 y(If)e(the)g(triangles)h Fn(T1)f Ft(and)g Fn(T2)g Ft(are)f(replaced)j(b)o(y)d(one)i(rectangle)f(and)g(three)g(triangles,) h(the)f(n)o(um)o(b)q(er)g(of)37 369 y(function)j(ev)m(aluations)g(is)f (reduced)h(b)o(y)f(more)f(than)g(10\045.)19 b(See)d(Figure)f(6.)k(F)l (or)14 b(implemen)o(tation)i(details)37 425 y(see)g(the)f(example)h(in) g(\014le)h Fn(Examples/vb16.c)p Ft(.\))37 547 y Fs(10.3)56 b(When)19 b(a)f(circle)i(should)f(b)r(e)f(a)h(cut)g(circle)37 633 y Ft(W)l(e)e(next)g(giv)o(e)g(an)f(example)i(illustrating)g(the)f (distinction)h(b)q(et)o(w)o(een)f(a)f(circle)j(and)e(a)f(cut)h(circle.) 25 b(This)37 689 y(example)17 b(also)e(illustrates)h(ho)o(w)f(F)l (ortran)f(can)h(b)q(e)h(called)h(from)d(C)p Fn(++)h Ft(with)g(the)h(gn) o(u)f(C)p Fn(++)f Ft(compiler.)108 746 y(The)i(Hank)o(el)f(function)h (of)f(the)g(\014rst)g(kind)758 848 y Fm(f)5 b Ft(\()p Fm(x;)j(y)r Ft(\))k(=)h Fq(j)p Fm(H)1007 824 y Fl(\(1\))1003 860 y(0)1053 848 y Ft(\()p Fm(!)r(z)r Ft(\))p Fq(j)37 950 y Ft(where)i Fm(!)h Ft(is)f(a)f(n)o(um)o(b)q(er)g(on)g(the)h(unit)g (circle,)g(and)g Fm(z)g Ft(=)e Fm(x)8 b Ft(+)g Fm(iy)r(;)14 b Ft(is)g(to)g(b)q(e)h(in)o(tegrated)f(o)o(v)o(er)f(the)i(unit)g(disk.) 37 1006 y(The)i(in)o(tegral)f(do)q(es)g(of)g(course)g(not)g(dep)q(end)h (on)f(the)g(parameter)g Fm(!)r(;)f Ft(but)h(the)g(n)o(umerical)i(b)q (eha)o(viour)e(of)37 1063 y Fr(Cubpac)o(k)p Fn(++)f Ft(is)h(strongly)f (in\015uenced)i(b)o(y)e(it.)108 1119 y(This)h(function)h(\(with)e Fm(!)g Ft(=)f(1\))h(is)h(plotted)g(on)f(page)h(359)e(of)h([1].)20 b(It)c(has)f(a)h(discon)o(tin)o(uit)o(y)g(along)g(the)37 1176 y(ra)o(y)i(arg)8 b Fm(z)20 b Ft(=)e Fq(\000)p Fm(\031)r(:)g Ft(If)h(w)o(e)f(ask)h Fn(Integrate)e Ft(to)h(in)o(tegrate)g(it)h(b)o(y) f(sp)q(ecifying)i(the)f(region)g(as)f(a)g Fn(CIRCLE)p Ft(,)37 1232 y(it)f(do)q(es)g(so)g(in)g(using)g(2773)f(function)h(ev)m (aluations)h(with)f Fm(!)g Ft(=)e(1)p Fm(;)h Ft(but)h(returns)f (without)h(ac)o(hieving)h(the)37 1288 y(requested)d(tolerance)f(10)479 1272 y Fe(\000)p Fl(6)539 1288 y Ft(after)f(100000)e(function)k(ev)m (aluations)g(when)f Fm(!)g Ft(=)f(\(4)7 b(+)g(3)p Fm(i)p Ft(\))p Fm(=)p Ft(5)p Fm(:)k Ft(If)j(w)o(e)g(sp)q(ecify)37 1345 y(the)j(region)f(as)f(a)h(cut)g(circle,)h(i.e.)f(a)g Fn(POLAR)p 796 1345 15 2 v 16 w(RECTANGLE)f Ft(with)h Fj(B)e Ft(=)h Fj(C)f Ft(=)g Fq(\000)p Fm(!)r(;)i Fr(Cubpac)o(k)p Fn(++)f Ft(uses)h(9657)37 1401 y(function)h(ev)m(aluations,)f(indep)q (enden)o(t)h(of)e(the)g(c)o(hoice)h(of)f Fm(!)r Ft(.)108 1458 y(F)l(or)h(this)i(example,)g(w)o(e)f(computed)g(the)g(Hank)o(el)h (function)g(with)f(the)g(aid)h(of)e(the)i(F)l(ortran)d(routine)37 1514 y Fr(ZBESH)i Ft(b)o(y)g(D.)f(E.)g(Amos)g(as)g(supplied)i(in)g(the) e(SLA)l(TEC)h(library)h([4)o(].)23 b(The)17 b(C)p Fn(++)f Ft(co)q(de)h(used)g(to)f(call)37 1571 y(the)g(F)l(ortran)e(function)i Fr(ZBESH)f Ft(is)37 1665 y Fn(extern)24 b("C")f({void)g(zbesh_)g (\(real&,)g(real&,)g(real&,)g(int&,)g(int&,)h(int&,)324 1721 y(real[],)f(real[],)g(int&,)g(int&\);})37 1834 y(real)h(AbsHankel) e(\()i(const)f(Point&)g(z\))85 1890 y({)h(real)f(x=z.X\(\),)g (y=z.Y\(\),)g(cr[10],)g(ci[10],)g(fnu=0;)133 1947 y(int)g(kode=1,)g (m=1,)h(n=1,)f(nz,)g(ierr;)133 2003 y(zbesh_\(x,y,fnu,kode,m,n,cr)o (,ci,nz,)o(ierr\);)133 2060 y(return)g(sqrt\(cr[0]*cr[0]+ci[0]*ci[)o (0]\);)85 2116 y(})37 2210 y Ft(In)17 b(addition)h(one)e(has)h(to)e (add)i(the)f(option)h Fn(-lots)e Ft(when)i(linking)i(using)e(the)f(gn)o (u)h(C)p Fn(++)e Ft(compiler)j(on)e(a)37 2266 y(DECstation)d(with)h (Ultrix)g(\(the)f(name)g(of)g(this)h(additional)h(arc)o(hiv)o(e)f(is)g (platform)f(dep)q(enden)o(t\).)20 b(The)14 b(full)37 2323 y(C)p Fn(++)h Ft(co)q(de)h(for)f(this)g(example)h(is)g(in)g(the)f (\014le)h Fn(Examples/vb)p 1091 2323 V 16 w(hankel.c)p Ft(.)p eop %%Page: 19 22 19 21 bop 37 50 a Fo(A)16 b(User)f(Man)o(ual)g(for)g(Cubpac)o(k++)1160 b Ft(19)37 199 y Fp(11)67 b(Installation)24 b(guide)37 301 y Ft(T)l(ogether)d(with)h(the)g(SP)l(AR)o(Compiler)h(C)p Fn(++)p Ft(4.0)d(comes)h(a)g(do)q(cumen)o(t)h(\\Migration)f(Guide:)33 b(C)p Fn(++)21 b Ft(3.0)37 357 y(to)e(C)p Fn(++)g Ft(4.0)f({)h (Surviving)i(with)f(an)f(Ev)o(olving)h(Language".)32 b(The)19 b(second)h(part)f(of)g(the)g(title)h(is)g(v)o(ery)37 414 y(illuminatin)q(g.)37 b(The)20 b(C)p Fn(++)g Ft(language)g(is)h(ev) o(olving)g(and)f(so)g(are)g(the)g(compilers.)36 b(Old)21 b(bugs)f(are)g(v)o(ery)37 470 y(regularly)e(replaced)g(b)o(y)e(new)h (ones.)24 b(A)o(t)16 b(the)h(momen)o(t)f(the)h(only)g(w)o(a)o(y)f(to)g (\014nd)h(out)f(whether)h(a)f(co)q(de)h(is)37 527 y(p)q(ortable)e(or)f (not,)f(is)i(to)e(try)h(all)h(compilers)g(one)f(can)h(get.)k(And)14 b(so)g(w)o(e)g(did)h(and)f(w)o(e)g(will)i(con)o(tin)o(ue)f(to)e(do)37 583 y(this.)23 b(This)16 b(situation)g(will)i(remain)e(as)f(long)h(as)g (the)f(ANSI-standard)i(is)f(not)f(\014nalised)j(and)e(as)f(long)h(as)37 639 y(the)g(a)o(v)m(ailable)h(compilers)f(do)f(not)g(implemen)o(t)h (this)g(standard.)108 696 y(F)l(or)21 b(some)g(compilers,)i(our)e(co)q (de)h(is)g(to)q(o)f(complex.)39 b(If)21 b(w)o(e)g(could)i(w)o(ork)d (around)h(this,)i(w)o(e)e(did.)37 752 y(Sometimes,)e(w)o(aiting)f(for)f (a)h(new)g(release)h(w)o(as)e(w)o(orth)o(while.)28 b(A)18 b(list)h(of)e(compilers)i(that)e(compile)j(the)37 809 y(curren)o(t)c(v)o(ersion)f(of)g Fr(Cubpac)o(k)p Fn(++)f Ft(successfully)j(is)f(giv)o(en)g(in)g(T)l(able)g(1.)346 941 y(T)l(able)g(1:)k(Systems)15 b(for)g(whic)o(h)h Fr(Cubpac)o(k)p Fn(++)e Ft(has)h(pro)o(v)o(en)g(it)g(w)o(orks.)p 287 1005 1340 2 v 312 1045 a(Compiler)108 b(V)l(ersion)374 b(Op)q(erating)16 b(System)p 287 1063 V 312 1103 a Fn(g++)p Ft(/gcc)131 b(2.7.2)425 b(Ultrix)16 b(4.4)1121 1159 y(SunOS)g(5.3)1121 1216 y(Lin)o(ux)g(1.2.4)312 1272 y Fn(g++)p Ft(/gcc)131 b(2.6.0)425 b(HP-UX)312 1328 y(xlC)740 b(IBM)15 b(AIX)h(V)l(ersion)g (3.2)312 1385 y(cxx)741 b(DEC)14 b(OSF/1)h(V1.3)312 1441 y(CC)223 b(SP)l(AR)o(Compiler)17 b(C)p Fn(++)e Ft(4.0)49 b(Solaris)16 b(2.3)e(=)h(SunOS)i(5.3)312 1498 y(T)l(urb)q(o)e(C++)50 b(3.00)438 b(MSDOS)15 b(5.0)p 287 1516 V 108 1664 a(The)h(follo)o(wing) f(\014les)i(are)d(system)h(dep)q(enden)o(t:)37 1757 y Fn(chrono.c)p Fr(:)22 b Ft(F)l(or)14 b(details)i(w)o(e)f(refer)g(to)g Fq(x)p Ft(9.)37 1851 y Fn(real.h)p Fr(:)22 b Ft(F)l(or)14 b(details)j(w)o(e)e(refer)g(to)f Fq(x)p Ft(3.)37 1945 y Fn(templist.h)p Fr(:)21 b Ft(Used)h(to)e(de\014ne)j(the)e(v)m (ariable)h(TEMPLA)l(TEINCLUDE)g(for)e(those)h(compilers)i(that)151 2002 y(need)16 b(inclusion)i(of)d(the)g(template)g(implemen)o(tation.) 108 2095 y(The)k(steps)f(y)o(ou)g(ha)o(v)o(e)g(to)g(do)g(to)g(get)g Fr(Cubpac)o(k)p Fn(++)f Ft(at)h(w)o(ork)g(for)f(y)o(ou,)i(are)f (describ)q(ed)i(in)f(the)g(\014le)37 2152 y Fn(INSTALL)c Ft(in)h(the)f(paren)o(t)g(directory)l(.)p eop %%Page: 20 23 20 22 bop 37 50 a Ft(20)1113 b Fo(R.)15 b(Co)q(ols,)g(D.)g(Laurie)h (and)f(L.)g(Pluym)37 199 y Fp(References)37 301 y Ft([1])22 b(M.)e(Abramo)o(witz)g(and)h(I.A.)f(Stegun,)i Fk(Handb)n(o)n(ok)f(of)g (mathematic)n(al)h(functions:)30 b(with)22 b(formulas,)108 357 y(gr)n(aphs,)14 b(and)e(mathematic)n(al)i(tables)p Ft(,)d(Do)o(v)o(er)f(b)q(o)q(oks)h(on)h(in)o(termediate)g(and)f(adv)m (anced)i(mathematics,)108 414 y(Do)o(v)o(er,)h(New)h(Y)l(ork)g (\(N.Y.\),)f(1970.)37 507 y([2])22 b(R.)f(Co)q(ols,)h(D.)e(Laurie,)j (and)f(L.)e(Pluym,)j Fr(Cubpac)o(k)p Fn(++)p Fk(:)31 b(A)21 b(C)p Fn(++)g Fk(p)n(ackage)g(for)h(automatic)h(two-)108 564 y(dimensional)15 b(cub)n(atur)n(e)p Ft(,)h(Rep)q(ort)f(TW)g(220,)f (Dept.)g(of)h(Computer)g(Science,)i(K.U.Leuv)o(en,)e(1994.)37 658 y([3])22 b(I.)16 b(Robinson)i(and)e(E.)g(de)g(Donc)o(k)o(er,)g Fk(A)o(lgorithm)h(45:)23 b(A)o(utomatic)18 b(c)n(omputation)f(of)h (impr)n(op)n(er)f(inte-)108 714 y(gr)n(als)f(over)g(a)h(b)n(ounde)n(d)f (or)g(unb)n(ounde)n(d)g(planar)h(r)n(e)n(gion)p Ft(,)d(Computing)h Fr(27)g Ft(\(1981\),)e(253{284.)37 808 y([4])22 b Fk(Slate)n(c)15 b(c)n(ommon)i(mathematic)n(al)f(libr)n(ary,)g(version)g(4.0)p Ft(,)f(Decem)o(b)q(er)h(1992.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF SHAR_EOF fi # end of overwriting check cd .. # End of shell archive exit 0