Computing the real solutions of polynomial systemswith the RegularChains library in MapleChangbo Chen1 , James H. Davenport2, Francois Lemaire3,Marc Moreno Maza1, Bican Xia4, Rong Xiao1, Yuzhen Xie11University of Western Ontario, Canada; 2University of Bath, UK; 3Universit\303\251 de Lille, France; 4Peking University, China 0. OverviewThe RegularChains library offers a variety of tools to compute the real solutions of polynomial systems. These tools include isolating/counting the real solutions of zero-dimensional systems, describing real solutions of positive dimensional systems, classifing the number of real roots of parametric systems, finding sample points (thus determining emptiness) of semi-algebraic sets, performing set theoretical operations on semi-algebraic sets as well as computing cylindrical algebraic decompositions. The theory and algorithms underlying these tools are described in [10, 11, 5, 1, 3, 4]. Most of the commands implementing these tools are part of the SemiAlgebraicSetTools module while the others can be found in the ParametricSystemTools module or at the top level of the RegularChains library. 1. A tour of the main commandsLUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JlEkTGV0RicvJSVzaXplR1EjMTRGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSJ+RidGLy9GNlEnbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkAvJSlzdHJldGNoeUdGQC8lKnN5bW1ldHJpY0dGQC8lKGxhcmdlb3BHRkAvJS5tb3ZhYmxlbGltaXRzR0ZALyUnYWNjZW50R0ZALyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTy1GLDYmUSJTRidGL0YyRjVGL0Y8 be the semi-algebraic system that the real solving commands operating on. In most situations, it is encoded by 4 lists of polynomials, respectively for equations, non-negative inequalities, positive inequalities, and inequations.1.1 RealRootIsolate. It isolates/identifies separately all real solutions of a 0-dimensional semi-algebraic system, that is, a system with finitely many real solutions, by so-called boxes. In the the real space \342\204\235n , a box is a Cartesian product of n bounded intervals of \342\204\235; the output type box of RealRootIsolate permits one to get the numeric box with arbitrary precision, via various commands like BoxValues and RefineBox.Isolate the real solutions of a simple system { x^2+y^2-1=0, x*y-1/3=0, x-y>0 }.R := PolynomialRing([y,x]):
F := [x^2+y^2-1, x*y-1/3]:
N := []:
P := [x-y]:
H := []:
sols := RealRootIsolate(F, N, P, H, R);Show the isolating intervals.map(BoxValues, sols, R);Refine boxes to a given absolute precision.sols_abserr := map(RefineBox, sols, 1/2^10, R):
map(BoxValues, sols_abserr, R);Refine boxes to a given relative precision.sols_rerr := map(RefineBox, sols, errtype='relative', 1/2^10, R):
map(BoxValues, sols_rerr, R);1.2 RealTriangularize. It computes a list of regular semi-algebraic systems LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUklbXN1YkdGJDYlLUkjbWlHRiQ2JlEiU0YnLyUlc2l6ZUdRIzE0RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiYtSSNtbkdGJDYlUSIxRidGMi9GOVEnbm9ybWFsRidGMkY1RjgvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy1JI21vR0YkNi5RIixGJ0YyRkEvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRjcvJSlzdHJldGNoeUdGTC8lKnN5bW1ldHJpY0dGTC8lKGxhcmdlb3BHRkwvJS5tb3ZhYmxlbGltaXRzR0ZMLyUnYWNjZW50R0ZMLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRkc2LlEjLi5GJ0YyRkFGSi9GTkZMRk9GUUZTRlVGVy9GWlEsMC4yMjIyMjIyZW1GJy9GZ25GZW4tRkc2LlEiLkYnRjJGQUZKRlxvRk9GUUZTRlVGV0ZZRl9vRkYtRiw2JUYuLUYjNiYtRi82JlEiZUYnRjJGNUY4RjJGNUY4RkNGMkZB (called a full triangular decomposition of S) such that a point is a solution of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JlEiU0YnLyUlc2l6ZUdRIzE0RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnRi8vRjZRJ25vcm1hbEYn if and only if it is a solution of one of the systems LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUklbXN1YkdGJDYlLUkjbWlHRiQ2JlEiU0YnLyUlc2l6ZUdRIzE0RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiYtSSNtbkdGJDYlUSIxRidGMi9GOVEnbm9ybWFsRidGMkY1RjgvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy1JI21vR0YkNi5RIixGJ0YyRkEvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRjcvJSlzdHJldGNoeUdGTC8lKnN5bW1ldHJpY0dGTC8lKGxhcmdlb3BHRkwvJS5tb3ZhYmxlbGltaXRzR0ZMLyUnYWNjZW50R0ZMLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRkc2LlEjLi5GJ0YyRkFGSi9GTkZMRk9GUUZTRlVGVy9GWlEsMC4yMjIyMjIyZW1GJy9GZ25GZW4tRkc2LlEiLkYnRjJGQUZKRlxvRk9GUUZTRlVGV0ZZRl9vRkYtRiw2JUYuLUYjNiYtRi82JlEiZUYnRjJGNUY4RjJGNUY4RkNGMkZB. Each regular semi-algebraic system has a triangular shape and remarkable properties, and represented by type regular_semi_algebraic_system in RegularChains. LazyRealTriangularize compute triangular decomposition of a "large" (thus partially) subset of S, leaving some lower dimensional components to be triangularized further if necessary; it allows the user to compute a full triangular decomposition of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JlEiU0YnLyUlc2l6ZUdRIzE0RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnRi8vRjZRJ25vcm1hbEYn in an interactive manner. RealTriangularizeConsider the generic equation of degree two.
R := PolynomialRing([x, c, b, a]);
sys := [a*x^2+b*x+c=0];Compute a triangular decomposition of the 4-variable hypersurface it defines.dec := RealTriangularize(sys, R);Display(dec, R);Consider the record output format.RealTriangularize(sys, R, output=record);Next, we consider an example from Brown and McCallum's ISSAC paper. Consider the following question: when does LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYsLUkjbWlHRiQ2JlEicEYnLyUlc2l6ZUdRIzE0RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYlLUYjNiQtRiw2JlEiekYnRi9GMkY1L0Y2USdub3JtYWxGJ0YvRkAtSSNtb0dGJDYuUSI9RidGL0ZALyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZILyUpc3RyZXRjaHlHRkgvJSpzeW1tZXRyaWNHRkgvJShsYXJnZW9wR0ZILyUubW92YWJsZWxpbWl0c0dGSC8lJ2FjY2VudEdGSC8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRlctSSVtc3VwR0YkNiVGPS1GIzYmLUkjbW5HRiQ2JVEiM0YnRi9GQEYvRjJGNS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRictRkM2LlEiK0YnRi9GQEZGRklGS0ZNRk9GUUZTL0ZWUSwwLjIyMjIyMjJlbUYnL0ZZRmRvLUYsNiZRI2F6RidGL0YyRjVGYG8tRiw2JlEiYkYnRi9GMkY1LUZDNi5RIn5GJ0YvRkBGRkZJRktGTUZPRlFGUy9GVlEmMC4wZW1GJy9GWUZgcEZA have a non-real root LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JlEieEYnLyUlc2l6ZUdRIzE0RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LlEiK0YnRi8vRjZRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZALyUpc3RyZXRjaHlHRkAvJSpzeW1tZXRyaWNHRkAvJShsYXJnZW9wR0ZALyUubW92YWJsZWxpbWl0c0dGQC8lJ2FjY2VudEdGQC8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRk8tRiw2JlEjaXlGJ0YvRjJGNS1GOTYuUSJ+RidGL0Y8Rj5GQUZDRkVGR0ZJRksvRk5RJjAuMGVtRicvRlFGWUY8satisfying LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JlEjeHlGJy8lJXNpemVHUSMxNEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi5RIjxGJ0YvL0Y2USdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGQC8lKXN0cmV0Y2h5R0ZALyUqc3ltbWV0cmljR0ZALyUobGFyZ2VvcEdGQC8lLm1vdmFibGVsaW1pdHNHRkAvJSdhY2NlbnRHRkAvJSdsc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLyUncnNwYWNlR0ZPLUkjbW5HRiQ2JVEiMUYnRi9GPC1JJm10ZXh0R0YkNiVRIz9+RidGL0Y8LUYsNiNRIUYnRjw=This problem can be expressed as a quantifierelimination problem: LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUkjbWlHRiQ2I1EhRictSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuMGVtRicvJSZkZXB0aEdGNC8lKmxpbmVicmVha0dRKG5ld2xpbmVGJy1GMDYmRjJGNUY4L0Y7USVhdXRvRictSShtZmVuY2VkR0YkNiUtRiM2JS1JI21vR0YkNi5RKSZFeGlzdHM7RicvJSVzaXplR1EjMTRGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRlIvJSlzdHJldGNoeUdGUi8lKnN5bW1ldHJpY0dGUi8lKGxhcmdlb3BHRlIvJS5tb3ZhYmxlbGltaXRzR0ZSLyUnYWNjZW50R0ZSLyUnbHNwYWNlR0Y3LyUncnNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy1GLDYmUSJ4RidGSi8lJ2l0YWxpY0dRJXRydWVGJy9GTlEnaXRhbGljRidGTUZKRk0tRkI2JS1GIzYlRkYtRiw2JlEieUYnRkpGYW9GZG9GTUZKRk0tRkI2Jy1GIzZOLUklbXN1cEdGJDYlRl5vLUYjNiYtSSNtbkdGJDYlUSIzRidGSkZNRkpGYW9GZG8vJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnLUZHNi5RKCZtaW51cztGJ0ZKRk1GUEZTRlVGV0ZZRmVuRmduL0ZqblEsMC4yMjIyMjIyZW1GJy9GXG9GYXFGZnAtRkc2LlEnJnNkb3Q7RidGSkZNRlBGU0ZVRldGWUZlbkZnbkZpbi9GXG9GNy1GYnA2JUZqby1GIzYmLUZncDYlUSIyRidGSkZNRkpGYW9GZG9GanBGY3FGXm8tRkc2LlEiK0YnRkpGTUZQRlNGVUZXRllGZW5GZ25GYHFGYnEtRiw2JlEiYUYnRkpGYW9GZG9GY3FGXm9GXnItRiw2JlEiYkYnRkpGYW9GZG8tRkc2LlEiPUYnRkpGTUZQRlNGVUZXRllGZW5GZ24vRmpuRl1vRltvLUZncDYlRlxxRkpGTS1GRzYuUSJ+RidGSkZNRlBGU0ZVRldGWUZlbkZnbkZpbkZmcS1GRzYuUSYmYW5kO0YnRkpGTUZQRlMvRlZGY29GV0ZZRmVuRmduRmBxRmJxRl1zRmZwRmNxLUZicDYlRl5vRmlxRmpwRl1xRmdxRl5yRmFyRmdyRltzRl1zRmBzRl1zLUZncDYlUSIxRidGSkZNRl1xRmpvRmNxRl5vLUZHNi5RIj5GJ0ZKRk1GUEZTRlVGV0ZZRmVuRmduRmpyRltvRltzRl1zLUZHNi5RKCZ3ZWRnZTtGJ0ZKRk1GUEZTRlVGV0ZZRmVuRmduL0ZqblEsMC4xNjY2NjY3ZW1GJy9GXG9GYHRGXXNGam8tRkc2LlErJk5vdEVxdWFsO0YnRkpGTUZQRlNGVUZXRllGZW5GZ25GanJGW29GW3NGTUZKRk0vJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRictRkc2LlEiLkYnRkpGTUZQRlNGVUZXRllGZW5GZ25GaW5GZnFGTQ==Next we call RealTriangularize to compute the semi-algebraic system LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzZOLUklbXN1cEdGJDYlLUkjbWlHRiQ2JlEieEYnLyUlc2l6ZUdRIzE0RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiQtSSNtbkdGJDYlUSIzRidGMi9GOVEnbm9ybWFsRidGQS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYuUSgmbWludXM7RidGMkZBLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZMLyUpc3RyZXRjaHlHRkwvJSpzeW1tZXRyaWNHRkwvJShsYXJnZW9wR0ZMLyUubW92YWJsZWxpbWl0c0dGTC8lJ2FjY2VudEdGTC8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRmVuRj0tRkc2LlEnJnNkb3Q7RidGMkZBRkpGTUZPRlFGU0ZVRlcvRlpRJjAuMGVtRicvRmduRlxvLUYsNiUtRi82JlEieUYnRjJGNUY4LUYjNiQtRj42JVEiMkYnRjJGQUZBRkNGaG5GLi1GRzYuUSIrRidGMkZBRkpGTUZPRlFGU0ZVRldGWUZmbi1GLzYmUSJhRidGMkY1RjhGaG5GLkZoby1GLzYmUSJiRidGMkY1RjgtRkc2LlEiPUYnRjJGQUZKRk1GT0ZRRlNGVUZXL0ZaUSwwLjI3Nzc3NzhlbUYnL0ZnbkZlcC1GPjYlRkVGMkZBLUZHNi5RIn5GJ0YyRkFGSkZNRk9GUUZTRlVGV0Zbb0Zdby1GRzYuUSYmYW5kO0YnRjJGQUZKRk0vRlBGN0ZRRlNGVUZXRllGZm5GaXBGPUZobi1GLDYlRi5GY29GQ0ZGRl5vRmhvRltwRmFwRmdwRmlwRlxxRmlwLUY+NiVRIjFGJ0YyRkFGRkZgb0ZobkYuLUZHNi5RIj5GJ0YyRkFGSkZNRk9GUUZTRlVGV0ZkcEZmcEZncEZpcC1GRzYuUSgmd2VkZ2U7RidGMkZBRkpGTUZPRlFGU0ZVRlcvRlpRLDAuMTY2NjY2N2VtRicvRmduRlxyRmlwRmBvLUZHNi5RKyZOb3RFcXVhbDtGJ0YyRkFGSkZNRk9GUUZTRlVGV0ZkcEZmcC1GPjYlUSMwLkYnRjJGQUZBJSFHR := PolynomialRing([y, x, b, a]);JSFHJSFHJSFHsys := [x^3-3*y^2*x+a*x+b=0, 3*x^2-y^2+a=0, 1-y*x>0, y<>0]; JSFHJSFHout := RealTriangularize(sys, R, output=record);JSFHFrom the output, one could easily see that the answer of the QE problem is: LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYtLUkjbW5HRiQ2JVEiNEYnLyUlc2l6ZUdRIzE0RicvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYnLUkjbW9HRiQ2LlEnJnNkb3Q7RidGL0YyLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y7LyUpc3RyZXRjaHlHRjsvJSpzeW1tZXRyaWNHRjsvJShsYXJnZW9wR0Y7LyUubW92YWJsZWxpbWl0c0dGOy8lJ2FjY2VudEdGOy8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkotSSVtc3VwR0YkNiUtSSNtaUdGJDYmUSJhRidGLy8lJ2l0YWxpY0dRJXRydWVGJy9GM1EnaXRhbGljRictRiM2Ji1GLDYlUSIzRidGL0YyRi9GVEZXLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1GNjYuUSIrRidGL0YyRjlGPEY+RkBGQkZERkYvRklRLDAuMjIyMjIyMmVtRicvRkxGX28tRiw2JVEjMjdGJ0YvRjJGNS1GTjYlLUZRNiZRImJGJ0YvRlRGVy1GIzYmLUYsNiVRIjJGJ0YvRjJGL0ZURldGaG4tRjY2LlEiPkYnRi9GMkY5RjxGPkZARkJGREZGL0ZJUSwwLjI3Nzc3NzhlbUYnL0ZMRmJwLUYsNiVRIzAuRidGL0YyRi9GMg==Consider now an example which has finitely many complex solutions.R := PolynomialRing([x, y, z]):Define a set of equations.sys := [x^3 + y + z -1=0, x + y^3 + z -1=0, x + y + z^3 -1=0];Compute the real solutions of sys.dec := RealTriangularize(sys, R, output=record);Returning now to systems which have infinitely many complex solutions, consider the intersection of the algebraic surfaces Sofa and Cylinder from the Algebraic Surface Gallery. As their names suggest, they are respectively the equations of a sofa and a (sort of) cylinder. One expects to find a real curve in their intersection, as we shall verify.R := PolynomialRing([z, y, x]);
Sofa := x^2 + y^3 + z^5;
Cyl := x^4 + z^2 - 1;The plot of the two surfaces.plots:-implicitplot3d([Sofa=0, Cyl=0], x=-5..5, y=-5..5, z=-5..5, color=[red, blue], numpoints=400000);Compute the triangualr decomposition of intersection of the two surfaces.RealTriangularize([Sofa, Cyl], R, output=record);LazyRealTriangularize: an interactive/lazy manner to do RealTriangularizeConsider again the generic equation of degree two. Now we solve it interactively.R := PolynomialRing([x, c, b, a]);
sys := [a*x^2+b*x+c=0];Use LazyRealTriangularize to start the decomposition.dec := LazyRealTriangularize(sys, R);Go one step further, computing components in lower dimension.dec2 := value(dec);Go the last step, computing components in dimension zero.value(dec2);If one is only interested in computing the main components, the list output format does the job.dec := LazyRealTriangularize(sys, R, output=list);Display(dec, R);Another way to conduct the computation interactively is to use the record output format. dec := [LazyRealTriangularize(sys, R, output=record)];Go one step further.dec2 := value(dec);Go the last step.value(dec2);Computing a lazy triangular decomposition is usually much less expensive than computing a full one. The following is an example. variables := [x, u, v, w];
R := PolynomialRing(variables);
sys := [u*x^2+v*x+1=0, v*x^3+w*x+u=0, w*x^2+v*x+u<=0];Computing a lazy decomposition takes than a second.dec := LazyRealTriangularize(sys,R,output=list);Computing a full one does not terminate within an hour.1.3 SamplePoints. It produces at least one sample point per connected component of the solution set of LUkjbWlHNiMvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0dJKF9zeXNsaWJHRic2JlEiU0YnLyUlc2l6ZUdRIzE0RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn. Each sample point is represented by a box. This way of solving is often sufficient in practical problems.Consider again the generic equation of degree two.R := PolynomialRing([x, c, b, a]);
F := [a*x^2+b*x+c=0];Compute sample points of the 4-variable hypersurface it defines.S := SamplePoints(F, R, output=record);Consider the Tacnode curve. We look for sample points in the middle of the right branch.R := PolynomialRing([y, x]);
F := [y^4-2*y^3+y^2-3*x^2*y+2*x^4];with(plots):
implicitplot(F, x=-2..2, y=-1..3, numpoints=1000000);
SamplePoints([op(F), 2*x > 1, x < 1], R, output=record);1.4 RealRootClassification. Consider some variables U in S are parameters. It computes the condition on parameters for the S to have a prescribed number, say q, of real solutions. It return a condition C together with a polynomial b, s.t. provided b does not vanish, S is specialized to have q real solutions by a parameter value u if and only C(u) is true. The condition returned is either a Tarski quantifer free formula defining an open set in \342\204\235d or an extended Tarski quantifer free formula with the notation of n-th root of a polynomial w.r.t. a variable when all real roots are delinearble over the feasible region of other variables. Conditions are represented by type regular_semi_algebraic_set.Consider a simple system {x^3-a*x+b=0, x>0}.R := PolynomialRing([x,a,b]);
rrc := RealRootClassification([x^3-a*x+b], [], [x], [], 2, 1, R);We can use Display command to get the user-friend information for the typed objects.Show the quantifier free formula encoded by the LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JVE7cmVndWxhcl9zZW1pX2FsZ2VicmFpY19zZXRGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSIuRicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkxGL0Yyrsas := rrc[1][1]:
Display(rsas, R);Show the contend of the LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JVEyYm9yZGVyX3BvbHlub21pYWxGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSIuRicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkxGL0Yybp := rrc[2]:
Display(bp, R);One can continue investigating the parameter values vanishing the border polynomial factors.rrc_b := RealRootClassification([x^3-a*x+b,b], [], [x], [], 2, 1, R):
Display(rrc_b[1][1],R);
Display(rrc_b[2],R);1.5 Difference. For any two semi-algebraic sets A and B (represented by list regular semi-algebraic systems), this command computes the set-theoretical difference of A \134 B, represented by a list regular semi-algebraic systems as well.S is the semi-algebraic set defined by a*x^2+b*x+c = 0.R := PolynomialRing([x,a,b,c]):
S := RealTriangularize([a*x^2+b*x+c = 0], R):
map(Display,S,R);
A is the semi-algebraic set defined by a=0.A := RealTriangularize([a = 0], R):
map(Display,A,R);Compute the difference of S \134 A.S_A := Difference(S,A,R):
map(Display,S_A,R);1.6 CylindricalAlgebraicDecompose. For a set of polynomials F in n variables, this command computes an F -sign invariant cylindrical algebraic decomposition of the real space \342\204\235n.R := PolynomialRing([y,x]):
cad := CylindricalAlgebraicDecompose([x*y-1], R); 2. Applications2.1 Verification of real solvers.The following two systems S1 and S2 are both conditions for a triangle with edge lengths a, b, c (denoting the respective edges a, b, c too) to satisfy that the external bisector of the angle of a, c intersects with b on the other side of the triangle.We set S1 up first.C1:=[a > 0 , b > 0 , c > 0 , a < b + c , b < a + c , c < a + b, b^2 + a^2 - c^2 <= 0 ]:
C2:=[a > 0 , b > 0 , c > 0 , a < b + c , b < a + c , c < a + b, c*(b^2 + a^2 - c^2)^2 < a*b^2*(2*a*c - (c^2 + a^2 - b^2))]:
S1 is the disjuction of C1 and C2.S1:=[C1, C2]; Then we set S2.S2 := [a-c<0, a > 0 , b > 0 , c > 0 , a < b + c , b < a + c , c < a + b];Compute regular semi-algebraic system representations dec1 (resp. dec2) for S1 (resp. S2) R := PolynomialRing([a,b,c]):
dec1 := map(op, map(RealTriangularize, S1,R));
dec2:=RealTriangularize(S2, R);Compute the differences: S1 \134 S2 and S2 \134 S1 Difference(dec1,dec2,R);
Difference(dec2,dec1,R);2.2 Realization of matroids.In any 2D affine space, "3 points A1, A2, A3 are colinear" can be characterized by the following condition.colinear := (A1,A2,A3) -> (A1[1]-A2[1])*(A2[2]-A3[2])-(A1[2]-A2[2])*(A2[1]-A3[1])=0:"3 points A1, A2, A3 are not colinear" can be characterized by the following condition.non_colinear := (A1,A2,A3) -> (A1[1]-A2[1])*(A2[2]-A3[2])-(A1[2]-A2[2])*(A2[1]-A3[1])<>0:In \342\204\2352 (orientable), suppose we have the following set of points.TUZOV3RLVWI8b2I8Uj1NRExDZE5OWjtsOkBTPlQ6ZGtwYFBZQ0JgTlxcQE5kXFxRZ3F4aGFKSHluZHl5XUF5QV1WZWRMPV1rX2B3RUVTcEVVPG1sa3hqQm1YRE1sb0RTbHhScGBTZFxcTl90UVtgV0NAT0VtWF1NS19lV0tgVz1lVll1bllNU05keHlxbV15UG15bWdZUW11cXVpVVh1c0FZVlhUcndxT211eG1xcWFxbW1tb0JCOmtjTW93WXVEUFU6V2I8O2ZFaUdmbzpzdltbQjw+YkJeOkZeSkI6O0JbO0w6PEpCRGo6PFo6SzpSQltaOl5qOks6PDs7Ojw6PUM+Plo+QEI8SkJCOko6UkJbWjpeajpLOjw7Ozo8WlpeWjxKOj1LPj46P0RCPEo6XFxqOj9aOj4+PDpbWjpiSjtbOj47QkI+Ojw7O0pbPDw7QjxKSkI6Pjw8Wjw/PjxKPlpaSjo+XFw8Wjo7QExCPlo6Xmo6Szo8Ozs6PDo9Qz4+Wj5AQjxKQkI6SjpSQltaOl5qOks6PDs7Ojw6PUM+Plo+QEI8SkJCOlxcOjtCOjs7PFJCQjpETkpCOks6PDw7anNkcGJldDtNd0BdUHFkdHZkbXhUWFBNcF91c2lUWGBxT1pVSj9EVUBsVDtCbU1pdkV5cUV3cWF5RU1oYXVzcU94TXlzeT9zWXdZWGVkVkdWc1tmVGVoZEtIbj14RUtUeF9VU1NyWWlEb2d2RUVVa09YR19SaW1VVz9XdGloZXV0Xml0QklzbEl2dndjXmF2Y1d0THdHaT1pbk13cmFiRkNZY0lZQ0Fla1NmUVl4eENWXFxZZWxXVmFxV1NpaGV1Z1ZPSXdtUlRzSEQ/ZE9Tc1FrRnV1VXJtZVZRdG13UnFDRXBLVkZfaHNdaV9fVkdRZT9nQ1lbRk5hQjw8cl5wWXlZdklEUXRdeGFEV0pEVFFNTmFcXGtQSG1pcVNLcFdJZVhMaG9VdXFMUHdvVE1CcXhpcFhUbHloSFBdVU5fUFQ/UVhMZXVPPE5NTHdKSXlTRE1tbHdvRG9RdW9wYFNVUExjZFhkYXROeXlRVXR3RVB2XXZSRXlEaVB5ZXZEaVFScHZ1VXlucXdodHZIeVVKSG1tcHZsSHQ9QGtUQEJrRl9PV0NxaGZNVU9fV3RPZ2tTR1VFdltFZWtTWHBfVHc9Z0xNZVlZWFpBdltFY0RvdWRTVGFzU0ZdSHdld3RnY2xfV3NRU1NrSW49ZkZvWXM9Y1hvZjxtVmhfZVtNaXA9WHdxYkdRVHlvdV1rVUdZeUtXYnVdZkpFcnVleHlXdGFNQ0VleHd3eE47c2ljaGRtVFFHRWlpc1B3dnRxSUVxYklLRGRNQjs8VmtkSmx5dm1Bd3dZU1BwWWR4WXFcXFdKdVBLYXhzWUtRQHNndHBWUU53UXluQVNuZHF5dXFYUGxoZFV0RG1xQFZreHRtQU1RTl1PYW5rX2pWXmFuX2J4eHVxeG1HXl1eXnQ+Tjo7ZVZ5dXl1eWdzeXd5d2lNeEl5aXlRc2tXVnlTd1VpaFNRaFdxV3JvdGZLeUVnV0xrRFBXUkRfRGhbZGJNeWhnVXVdZlJFdDxReW9fYmxldkRJRz9VY05LdGdJeTxnZmxlZkRLeXFxZGJpZ2xBUmNZeVJBdz4/Ujo8VlVxeFdMVGFweV1IeHl5VG9EaktVTVFNU1N5Slk8UG5JeXdZeUk8cTw8VjthVk1pVEE9bERlTEV5bnJJbXZFeWxRc2hpUVlhSmdFTUVQcTxBb2xZamVtVUtcXE1WcUtAPEo6YXZEYVFqdXFmWHl2WUxTZXFcXEVwRl1takxTUWFLcDxXVlFzaj1WdHRZW1FuXnVzWGhRU2F4ZXRUeGFsRkVtbGRuckltRkltbVR3UVlqX1xcT0Fpc3NZUXFtd3ZUTVZATEI8SjpcXGxmSXVpUWx0aFhkRXdYTXI9dEpuaWxpbHB2bU95eHl4WXFueU1qXFxySnl2T1V5eHhZeWl5cUR1bmVQVlRrVExOYGROUXVvWGVLZEFYZ0RYbXluYGlMPkBCO1M7RXY8ZUJfSWZEaURfVXVweWdHY2lZZXhwaWNHZ2NHbUhXZWNDO1lkYXRjYUR5U1hsYXZjY3l0PWhWTWN3aXhgYWlgUXNDcUJgW0I8XnVzUGlnUW14aGZlX2JjUGRfXl5gQXdJR3NgeGRmQGVYb1tZRmFkdlxcaW5lRF9gd2F5c1lbbF9eYEFtTj9vSm9fYldzbT95al9reGlldHF5TF9nVk9iWj5aOm5zUGBgVmhyU0lwbXdrZmF1b3hkZHd0ZEhmYllpTkFddndsaGZyZEFmUUBkdXFwZ2B2WXhpeElsY1h0YF9eVHBhX2lvcWd4Z0l1SGZ3VHdaZ0dlT1l0P092YGlcXDtJYmlBRmxOb2RXdGFTU0VxZGVrbkxXUnVVSVhxcVV2QGlLU2lxcVlVc0FYWFFOV3FTak1ycnhsR2RZSVlWZ1RtQ0FzS1V2X2VzVGlLTHluUXV4ckl3R1RNTllsYHlrcGxsa1VMWHV0SV13YmBUW2BtdmV3RFRWbXB1eUFUVF1QaU1uVUFOYFxcbkBkWXB1eHJ5cF5gdHFtTk5UTG1dUEthcFtVUlg9U25ReWRodGVhbj5FeFxcYHQ+TEw8RFo6UGFJYHROeGd5WHVhdl12P3FCb2NZSGFlRndNeW5RWGlpSXNpZnVYYHdedl9HTndpRmk9WXhSTnlYUGRfVmtFZ3dUaHRfb3V2eWtMZmo6Z2ZbYXF5QXNyeWRZQXRJcVtYaGFhb3F4cWNPPnRAcFtYPmxiaWlkSWFAUWNyP2loV2J5V2Q/cHM+YHQ6P3RDdm5fXls7eHFWdmFbeHJsXm1ORmFAaGtIP1s+QjpZcm9LZ2R5RXk9RWtbWUpfdEc/V2h3clZbZ1BlaGxdeW5lSD5dY3RdVlZddV1VdlZJY1RReF9vQ1tPZ3FNaEtzSGhnVW5bSWlVdFhxZWNXSWlfWGlxdD9nY1hbUm5HQz52Wkpnd0FWbW9mZ1Jgb0Bwc2JocGV5YENXeXBnb19AaWtQXnhzRWV0am1pbVNWUF9jWVNJbDtnPU10Ok9lOj1KcmxybGlubWlxeGF3bkhPS0hKU3huamFRc2h2bF13Q2xQSD1LSlVMQkJaW1pqTm4/V29ITnF3Z2Q8T29hYWZtcFxcZ2F5eHlwTHBpaVBxd29sZ1ZpeEdtbXZoO1ZdPD5qUUFxV15bOklcXE53c0F5c1BvaWhWYXBfd1BYYGF3c0NpXXFfZk1QZ09Xb0JBbFFwbVF4amRgZG5Bd3VgZD1GeU9WX1FBY25xdk9JXlNvXFxvV3lmeGZJcGdsXmc+QV1jV3hyV2NUSWQ7Pl4+Tlo6WGFXV3FvUWxBVnNOcGxoZm1VSXdrcXROP1xcVnB5SHlpXnBkV3BebFB3bXhrXnBlV1F1QHhxZV9zUkFjY2Bka2BtTndvUGdeXldzTXlucXdoc1doRGFoU0hhZW9vdnZ0cUllcD5gVlFjY0lldkhfd3ZiUm5zPWl3WmNdW2dZVWhGbXhmYXVcXHNnRk9FZHNTcGV3WldXOnNod0VpSE1IX01zYlNSQGdjcFt5d3NCSGtFUD9nYmlnTElnXVV1Sm9HSWlJP0t4ZXlGZVtzcnVXcFNFUWtFP0hvR3VKWzxcXFJxa1RyR01nOm15dk1UX09YP0V1cVlyO1NyWVloXkV3YU95cVVyQGNYR2NpWWVDSldVXj9Zc0NHVl1nZm9DSm95TmFma11ieHF5aXl4Z3lWPVNyXUFmQT1EPkNGSjtiXWd5bFlza0VpdXNUSFVyaXlUSWVIQlNDRUlGP01DUUtTbWlpVXlpVElHSXN0aF1mVXlFeEVFd29SRG1kYmt2UUlZaV9VY09ieGlpX0tZZVNFTDtiQUFXTTtrXWVZdmBWc2BNQ0hRYHRPd0B1WUF4YW14aXlRWlFbRW5uc3FhT0loXmhlQXFndHBua0d1TEhpdD5bdFllS1FuP2h4aXldcHldWldmdD5cXG9GaVpeWjxyP2d5eWtFTm9Fd29lUXlDZndTdEFGdWF0VndpamBsY1RUdGR0cWFzdnlzVkV3V3l3P0VXb0F1XVBQcWl5Y1Fsa1RWQEFqZlRSUm1rZlF5cUlxbXV2U0FuPlxcUTpATEI8SmNFUXBZdElRdGJIU2VFc1RoTkVgb3JhWEtgdXBVVVB1a0R0dk5RWVBtWWtpdnBEVXdJeXREWWZoVm1EVWpJdkZBalBsdmtVeDs9VlpcXHY7XFxqOj9sQFhcXGF2Y0NneUBmX19Rd29YZ2xIaT1RWz1nZ3VRXFxMd1tzeGtHaGtvV3l0aXlxaWxOWF9Rb3lOaGBld2BiSXg+dl1jaHlqP3JQaHZMX3dpeGBhSXM9cGBHQHBZP3JtcXhcXD9qW09mOj9bPj52Uk5nZj9ydGlbVD9jZnlveVBzQGhwRWl2eFBkX15heHFrTG9vSWF3d3F2dXZwaXh2QklsPW9kZnZtaEZcXEdwXU1wZmdOdWRxeDpoeGVpYUw+bF9JYXY/YUB3eWhmaXlHX3Bub0dXYlhIbFpwdkdheUpSSktCOztxRXhMaURTPlVyUFBYZGF4U0RVdVB5TURPUW1wRnhUWVluQHF2VUFxY1VraEFUTF1wQkVOcURSalRxSERtR1RtblBsYHlrbz1sX1hrYVFTXXBqb2l5eGBTdWxYaHFrWXhOUnVPWkl5XVxca3NNUHlgSnk8TDxESnJMbERcXFZkeExndXBhUFFDXVNGSVR3WWxKdWpwaVdGZFlJUFdleVBsXXRyb2hpd21YZ3VXcXFpcW91cHdOaGhZeF9NcHJHcV1ReHJYdndmVmtRbnNQcGZHV11AeXFocG1BXnVySGQ+YG9Sb3FKWXdfT2VvUGlXcHdSUWJHP25zVmJYP149d1xccXBpOz9bPj5aPXB4Zmlxc1dbcW90dXldZHltXmBrQEByTGdeRVhDb25sdEdfVD09Zlxcb2I/R1VtT1djX0hnbXk+X0lYcWhlX0dWd3hZQ1dTUWZjX1V4X3l1b1l3W0l2c2hRWXNtWXNrWUR0XXM8SVNLV1ZSQWlbO0NyRWZGa1RocWRNZXNJc2NCV0JbO0Q6S2RyR1hnUWZZcWllXXJqSVJMdUhcXEdpZlV1eFdSZGdUZ19lZHl1cmd5cFl1XktXXVFzPlV0TnViS194Y1l0RUFyO2NZd29lcUlXaXVzTmllTk1pcVV3PD1LXUBqYWl3bFlcXDxAXFxCUkpbdGhnVD11dVRpVHFnYk9VdXlzU2dnVXlHU1R5aGVlRz9ZY09DeGR5d1lvSW1tVFhJZWtTU1hRZVZDR1NVaGBFRlpJdV5bdnNVaHhNVGVJRUY9Qj5DXkI+al9ZY2FZSW1gXFxmaXRZdVtJaWxLZl9qdlZtPl5haXNAPUI+Q146WGY8bm1NUFpIT2VveGk+PmJKTjpUdT5gUTxcXGtrUHV5TDpiX01CWENGP1l5Z0lkbmVpSztCOz1DPj1Tbz9XT0lSSWNYa0dYV3lmO3N5VW1lRkdnYE9FR3lEaWNUO3VIVHd3VGlmd1NFRFtiREtCWGdmcVdEOztEPkB4RUhLTXR1TnlTUzx1b1hXaXBZbE1qcVhqT1FvW2xPUF1vVlVOS1ltUVVtaEVNT1Vuc3Ftd0xxQ0FwS1RWXmhzXWlPZ1V0dU1McFlPXllqc2FwQkxSWGh4PDxWRFV3VUBKQkxicmdnckFza1BocW9vVlBkY1BkP2ZdPGZxb25mZl9uTk9vUm9jZHhkZVBmRGl2Zll0dVhxdkhhX09xRmFtb3ZkWFh3dWE/d2JjU0NzZUh3Y2g8W2VUXUk8O0Y7O0Q+dmBBb1toSWw8a2R5WWVYVWZwdXI8WGpBcD5lUmllbGNYbGFMbXBFUWlJT0puaVhQd0Z4eGBXXFw8RmZEUWJ4PnU7d2tqQGZXQXhBP1o+Rj53VT5panhAVWxgeGBVTTpxakdMd2BUWWdsdmJJUFM8UGo9cWZta0RwbEZITW1McVhZVEltdVJgUEhNcm15bGpJeXNEb0Rxc1dVWV9pclFwUkJxb1dZWV9xc3Vsd0p4bnVoWFBIVF10SmFAWTxgV0xBUTxtSkhMTVt0dWlZdWl0S05wcUloa0lUVD94UTxsTXVxSjs8TD5AUlJta3RtVWM9VVJtS2NMVHJAVFxcSHdRbE9WXWxUdWtuRGxZcU9ZbWx4aHFZSHRpeG9ZQU1fZFNZZFddeWx5WFlOaUxqVHVuaHdkdFN3RHVLTVFvPVk8bVFSeHBCbXJIRmNJWWN5cGF3Tmx3eHFsZ25ESkVDWztEPl9JUk9ZWUdOPkROSmxsanhZeUlKUT1yZTxtZk1ZXmFuY1BxYW13YXhtRnlsYGhTVEx3Y01PamhRV1luWWB3WFl4Z3hzeXV4WkluXUxwd1lzb1FxZ0xubGFSVXhyXnFtPGluX21zVmlKY2xqOlFuP1VLZXl1eTxxYHlMalRXOlluSnVYcHFRX0lXVUBUcGlMSkxKS0xUYXlPVl1sbGRWRHVOVXBxbGV0VERPSnhRWV1pUnZuSXdvaFFgdW9zdndteXF3PXBveUhdUT5aT1h1aXdxR09zdz55OmBpd1hocU9raXlbRUlsV3d5eHZoaGFhVWZbW2Zbc29iYHlqPGl1c1d5VEZaSl5Ka2R2Q2dfX1hsS3ljeXZdUVRdT3k9RXNgd2RkQ1VWeUd5dUh2W0lJTWhjRVVpVWlHbXl2WXhkTWdhO1VtZ0RyQWhRPXJFVWdabUh0c0k+Q1JhYXdFb3VmWUhmWUVaW0I8YURsZXZGU2RSQXVSVXRRa3dRT1Z5ZWlzc2lzT1hsR3RCQ1k7Q0NybXlYd1Q8P2Z3eXhLTUJaO0M7P2huT1RfT1NCcXVpbWlFbUh3P3Z3Z0JeQXRbV0ZDcWZ5QVlaQVRCbXZtQXhbQUV3WWluaXlfP3ViXUJ2P2I+X0l5XURgSVNZeVJKW2hhcUlmXVZVT0Q6Q1JCVHRNVXZpaVdWYXA/bWs+YU1NUG4/bXl5eGpqVWxAaUteaWtDeVdlcXA7SEtVaUpIVW14VFBeVHhzWHZ5ZVc/ZHR2UXJzRU5pXFxsP3huYWRqc1BtSFVsP1RZaVl1PjxCTEtdcU52cG1ieXlrRFBBVUxHVU1wXFx2P2BQeVh2a3BsR2FWXkFva1FwYGV3QGR1Y1lOSFlrPVR5Q1FqP3hNRVV5SGV1b3VXV0FxW0xWSHRNeExsXFxJU0hZbGFJSnVVVk9Rd29NVFxcQFlLTVc8ZFdSPHhGYVU6TVlNPW1hZEs8YHRATHVddXVxTHFHRFs7P1s+P2RiQHhQQGxUbmhfRnZuVl5bPmRvX3hiaGVtUHFGWW15SWRcXEBcXGJwXUF3XFxvSGdPYFtSPmFGb252aHhoYHV0V3dnUFxcS3dxSGBfd0F5PUdfTl94O0dzTGhebV95dXdfWW95V3d5SHZbSWldSmh2dml2cklbd25tW2FuQklgZl9oRW5qdlZvUD5qeGFfRklbPHB0eG5eQj5qWl46Y2VVc3RoS3lfWVlAXUNZW0ZvVUZUV3NwZ3d1W2ZUZXRESXhNWWNPY0dWX2dgdVdZeUN5S3dZUXdLbVdrTWZwX1ljQ3dNeWZRR2I9S3l0YUhZcXdkRURhZ2l3U1RxPVZjcXVnV0NVY3VeRUJJcWc/X2VpZ2JzTVNxZ2JDS2JQWUlgXUlTcVU+O1JKS0JbRVNvV1dPQWRgZVNVS3dUXXJHU1dRd3JJdWl0ZXhUX1ZIYWVjQ3R1ZVRnP2ZMdWlYZXdySVdldXRpTWRwaXdUVVNrUVY/XXl4c1dkPXJkeVhgXXNMd2hgc1JEbXRmR1VSQVU8ZUdYR3U9O0Y7PXRYc3JMQ0JKa2RVeWV5aVZpV2JZY0hiXXVETUNPS2lRTUdQd0dlc3Rpd1VRZ0Rlb3RkcWg9Z1hlYXRMZ2hld2RMQUJYUXY7c2M8T3NScUhCW3JKUUhmd1htcUVlbWVoVUVwd0dGTWh5c2Zdb0ZKa1lPdXZLd2JfbXV2aXJ0Z2laaXhleUhuaUdaSXI9T3lFQXhbd0dMO0JnO0RsQUdCT1JZbHJ3dUpBWWtvbGs7TUpaXFxvRkBMQnRxdEV3P3F5dHlKYFlLcl1McGx0VHFZbkFNcHR4cGx4YFVVSjxKOz1bSj9qSj54Zk9xZ1dad2hbQk5qYEFhcEdbOkA+P0I/X1JKdXlYY0JAV3g8O0ZXY1JGaVhmVXlsW3VJc3JtO0M7P0Jbc2M6d1I6W0ZCS1VqQWVhXFxKWz5ma1Fab15cXDt2a01wYXVZZ1pOalpOam1vY2ppZnVRPD1leHVpYT1jUjt1Y1FndVtEW3NjPT1jOjtFZEdZWnV1bXN3cz1jOjtDRVt3dWFDS1NCbWllclV2WHVYcUhTZ2xNRkFyRlR5P3RwP1hKbW1NRFxcVHVxUzphV0JEampgV0pddj5ha0pld0VIblR5V2J1TVI8eW1Va3lsdF9kUHBATj5MSmA8ckN5TFA9cVJETkJsanhVWXRZV3dJdHBVTD5AUjpAakFUbUBsSm1cXHdxXVhORHhpPVFFXFxWOlxcdnZkSjw9Tjo9dj1EWjpXalpmcDtwbUE+Ynlvb2lOWlpeb2JxXFxQR1pmQFxcZGF0Q25sVHhbSlJpUXJIV2RxV0Y7O0RaW0I8cUI7PWRqO0s6YXBhWWtdWU5vaXhacHRTREpKPHlZcXlFQVE7QHA8SWtVV2pePmZxUFpXQF5cXF93Vk52aWloPFFpQWhySWhsbl90Pk5yblFkdUZvTFdgQkBkZ1lpYHdtSXdeWHZcXDtRb3dZPj9oRUtSWltHSz13YGdYTHNGRktyWWlidGd0RFtYYXNCSj9Wb2d5XTtCPD9MQkxYW21samFqZV1ORkxKeEFPTml3cF13cmRXVWlKXFxweElASkJMYjphXj9oZWR3a09YXkZOajxndXhJYmo+bW94aT4+YlJReFJObl0/W2ZQaDx4eHBwWkpoZVZuY2VedFdQXWZXWnNgaz4+YlJBeHZ5YkFBPHlJa1lFQztjTmFDPElTP09pV1dJRD9EOkNCeUlGPmhuRExwbnB1ST1NPmRqdGhRUXhOUmlteTxLOkBYPklxSlh1O0FwVEVqZ11YUWhTZTx4a1h3bXhRc0RWWT1wdHVvYWF0SGh2OnVPRURKSmxQeXRMbFVRUmx4YlxccldpTEpcXHRGTHJCcVk8SXhdbXVzZU46TEo7WFJCXFxqZ1lLY01yWlxcdU9cXHdIPU9OaW9UcVFqPHU9dXFKPEo7PVtSX25aVnhgQFxcXV5bTFJId0VteWdJP1RQcXlLO0I7PUtSYXFKdVY6SVdwaUxhbExmcVR3bUpsSGxdbWx3YUpaXFxKPFBSRnlXWz1sVEVSPDxuTWxrW1RwZll2W3Bvd1lWeURKWzxMaj1XW2xSUlxcXl5nXVN4d2l5WmVweElEO0NGSjtmSlNmdz9GOzt0S3dETEVmREtiYD1nd1lWeUJqR1Jba3ZJeXdgW0NMTEw+VFJtRXZQXFxzVHlRcFlMOkBMQlRtTkxWeHFPOkFLPWBVcjxMPlRKTUxxRkFUdXlSOj5cXDxGWjxBbkdGYWtfXzpXXz5YZm1gdHhJPD1iSjtDVWtEWkViRlNWPkdSZW1COl1ieEFJbFNUZ3lFOzxSQk5CPUVuPXNwd2ZqdUNnSVhebWZUeUlwSUxbPExwVExkWExyVEpIVUw6ZHd4XU1zUXBJVG1ncHhJaFk+PFhtXVV2WXNLPUpVbGo6VFBuSFBcXEBuW0BYcU12dGBQVT15XXVNO1xcdVh0TGNBb0NcXGpdTUttQFJcXD1yY01LcVVRamlWV0lta3B4SWhpSlBhPD9eVnZlcmdaZW9hQlZqTm53UF9hUGBrZllwYFdndXlyeE5aSk5aO0d2T05wc0FeRk5hcVFiOklfO1hhZ2hpc150VVlqOj5bSlJKTnRKT2JSXltIcWhfQGhJXmlacGN0cHNHUWV1eWI6QklrY09LSUA/Yjo/Vkg/UkRJZkJFQmlleEU/R21bV0FreElIdl1lTldETkpcXEo7TXJaREpKbFE/RFJtdFViRXB5PUpoWVJadHA9SFI7bUxeXXVgbG46eHBMYHBQSVA7PExqcE88PU5WRFVqRVVfXFxLPFBKWGFvUTxUYD1XdXlyeElKckFZZkFYdTxNSE1POmFzdlhxbTx2bmRKdmhUcHlSbWRXQWx4STxyZVlWQVh1O0FuWlVQRWxKVnBQeHBtWm1rXWFOTll5XkRKSjx4R0ROSlxcSkBUS0dZcE1RclpUUjthSnllWXVNWXV5UE5VeV1ESko8Tj5MSlhmZFA/W0tfaFhGbkdfblNvdHFPdHdHbFU/cjpGXko+Wls/bDxvdWBWd1RZdGFwaT5QeDxRa3dXWlpeWjxuXUFIb0pnXFxUX2o7T1tzV19nWGddVnlVeF5ZaXJ4SFpKTlo7VnNOPmo+SGI8Pm5NWVpaeGBRbmQ7cGFgQHVxPmo6Xl1RX1tLVlphdlxcdm9kWWl5Z2F4bklcXERGaWVfanlAZGZ3YHBpW1o+XmFRWkBAaztYcFJneXBAaERXc113ajt2bmNedmdIXTpWamtobVJ5YDpAclteWjxQaktxWmdHd2ZxYEBBXj9gcXl5eGtBYj4+cjp3ZVZHXFw6Rlo8Q0o7SGZdRUBDRUU7SG5zRHNDYnhdd1V3Z3VRRTs7RFpeWl8+W1RpZ1JoXFxlYGhYRmZmPnI6cW9VQWJQcXlTRnlId2dxeF87PlxcWl5aPF5aTHZdRWZGSVZqO2Q/Y1lFb1RXW2ZoXVJtQWZmc1J0YVNbTXRmZ1J1U1JpaUl3bXZmX1ZFcWVZbXZGQE5eVHlsPW5ldXl2SUw+RFs7QHZDQXJkPmpNR288aHJDZmBLR2g/Pm91aGZHWG1YXnM8cGBfSGlTUVxcd2hkVGBhdGFqZkF1c1hleFl5WXl1XnFvdXB3TlBzT1BfQkF2O2d5X3Bib3lqRnZpcV90UHhfX1tMUlhEdG5vb1dzT1hcXEFYeHhaSFdjeGBRYHRrSUtTTHhMWXhMSEA9VFBXSXZzU2hFd1NZZlVfS1xcXWtuckxNaGBlc0xbaEVDZVplV1l1VUhXRzw7RkpbVWN5UnM/aFQ7dk5wd3lMWW5Bd3J5eWV4WVVpeEpAVEVpbG5FWU1MVE1ZamtgeWNkTG5ZbV1wcUpQeUdUVURpbHlsb0J1dVh5c0J1cnBpV15gVkNRdmxQV29RVXN1VkBZeUxVeFtRV0w9eFhZWUZkWXl1cGhpWV50VGhgbWxRc2JWXFxHd2dVSW5VYHFxVmhIYHBoZ3VWT3F5ZnRTT2BgT3NiVmRgcHFlVnl5X2FiZmdUd3BqUWlzb2VTVl1jZnJEaFxcS3B4Z1dlVU5peUdrTGZyXk9yPnlgX3ZmSGFdbEFkT1BrO3ZbOlBfPmdadXdtcHF2clA+P1JqRWlIV3NLYXQ+S0JjW0RAbVhpYUlMT1ViPUNeZXNaV2k8b2lNdXRhZXZAaWNVS2hoZXNsQ0djUUNDRVhYU1dTYVNYO0dVZVNgZXNYd0ZvT1dQdVNtWXlJW0V2W0dLRXRVZVZkYXZDR2Ngd2dXdWhLbWRnc1VjU3JBb0NOR3Rpc0NzR0VQc2VkYUZzT1hAR3dUSXJvWUVwU1N3UVlJX0JfZXlZWVRac2lYbWRTc3dHVnd1YWc6UXJZSHU8X2Rkd3JPSGU9Pm5kb2RqR3lseXdsSGhXeW47R3l1d2dIR21oeHhFeG14b2Fodml5aXlxYGtWbmFCb21jcXVPT2tRUG9admdHb2tOcG9XT3VtT2pAeGVLTlpbQWlIR3FnXl1kQWBSUGU7d21bVmJ0c0hpWXFtZz51Z2FJc3d1WFxcd3RNUWheRXdHUXJ0R1Y9T2lDb2ZJeVVyX1JoRWlfcURjeXRhd1JcXEd3d1l5b2FkQ3dnR0Vkc1VDUFN5VktCXXdpUnFGPW1iR29kaXVpVXlGcWV1c3Vmbk13UnF0TztJQXNmclVnc0dTXUFDUztJYl1idnVpaXVpdjtUdHFJeXdCOlVIPjtnTm9jZWN4eXFEU3FzUmt1cWNpaz13al1jdl9JdE1iaGdVUGVzREtDT1tpQW1ldE1oXW91UElFbDtFaUt4VmlIZTtDTmdyWXNHTVl5PlV0YGNDXz14Wnd2X3F0VVVIQllCSVt1WTt4YFtCam1IdGtiOktWeXF1PElXZ1NZYktJSl9GdlllZFtlX1VzcFVpbm1ZbHdmZnF1bWlnVmdJcW1VcGV3eHFSUUFEWElYQW1IVz1iVWNDXFxFVltFSV4/U1tRUkNvZmlRdW93UkRnRGdbZ1lVU0JldXBrR1RdZkpXd29paXhjR0VdU0ZJVGNldGBXaE5hWXJPaUZlWW1NZk5lZ1RFVVxcc0ZHRWRoZ3V0dWZycVlPcXRLRVRnQUZ3Z0N5bVZIO2JocXY/aVU6W1NyY3VRR3l5SXg6SUZzPWd0ZUlTYWhzS1V0ZUlVaVNYSWVwUWl2S3hCZVNRPWJUU0dJYXhmeXdLeVhHR0VVQ0dPbkNoVENMc3RQVW9JeXRkeXVtd3VZdG9la1l1anBpV15ga2VcXEpkZFl0dVhRWFhheU9CYXNTVVhzRFU9QExCXFxKPVh0ZHVKPUR5bklsbnByPFxcT1FtcEZgV3VRVldgTXY8WVJNT1Flb11EWUVcXGxOUE9PUWc9eWpdQ3drZ2pbU0VxeXd5QlZFQmpgVk1va1pGaW1xamFAeVNgaXNReGR5dHdHaGpBdEtGbWtmeUdHbWpuZ15wb29PeXJHdFZmZUJ4aW5AeU1GdXRod2VhZml5X2RRW15Qc0lub3NpeFFxaVM+d1h4cXhwWjthcGQ/Wk9Zd3hwc3lQb0NoeV15a2VOcGNneWFPeVBPb0RWZGl3Y3dnY2BoY0NgbHN4XWZeYFZOcV1RbU8+b1RhdVpHa0doeWlweWdQYT5nXk9AcENGWlp5Y1ZxW0BOXFxObmRGWGVRUHlnT2Zpb2dLVl1Td25BT2ZISGM9cXJnYHZQWWVpZ3Q/bmhbUGJxUXNLWWZ5VnNlV2xgUGM9cGJJSHNgaFtlXmhHaGVUb3NZP1FFZWxjTlVwWV9Rc1lQbGNUVGBgTHlUbHNUaHRpaFk/b1hwcmRoeVxcT2JkcHhsb3k8aHJsSXVEeHNNaHRgZmpfQXNoeGlZWGFxb3VpVndLYXdnP2VPYXlvYHFdYWc6eXlIUFtzZ2xlZmxRWHlpWV9TQGd0d3ZIZ2dfeHNtV2peWWpzV2tGZnBnZmhRYW86R3F0Z3hUYHFwUXlOR2VyQGdDYF11SXdRRnF3cXhVYXZLUHVJVnNySGBdXmhnV3BxXnRqVmJjZnl1cXJvWGtreXlweWRNTlpaRl5kT1o7YGREVmRhdmo8d2l2Zmk+QWc9eHl4WVpAQHM/WWNRYF5kV3RER3dzYWdxdmRbWWVJd3VIWWR5eWRNaXRlcWI9UGREd3VpUHVLR29bTmZMT2hvUXdPd21VSWVjcG1GSWNXeWRkYGp4aWlmeW5ZaGFETnVYYFo6V3BQcXk/UHNvWGd5R3dKd21OUGdRSG9UaWxoQXVrWHVKeXhyWGdQP3hReWV5R2M9cV5nYHhncHlARlxcb2d4Z3F2O2Z5dVdzcGhnWVdjb3hqXU5kVnF0QF9palZ5V0ZfdUF2PUZ4eXFrdUljQnl0YF5aOk9jYkhbPj5sYD9dbnFubUFrYWZheFZucGBpW2ZkZHZkTlBac1l4X05teHd3d2ZabmF4Z0Z0WU9dVHhkT1l1cW5gcG5gU2FoT1dkcU9zR2lfWVlsYXZjY3l0PUh3TF93aXhgYXlgUW9jaVByWU9nZVF0Q3F3eXhvPmB3WFl4R3B3S1lvVEFtQElkcWB2T2dbWEl4TXZeR2ZpSVhxYGdaTXFuSWFsaXZweGdeS1ddUW9eVFZxbElrcGZfb3dfcEl0XW9eRGFtU1d0d25taWd0bj9mS1F2X094R3lwWVl3eXduPnlsYF5aOlhhTmFaPEZnTm5vVlFecGFxbUFrYVhieD9vWFhxeWF5bXljRHhvV3dxeGdleXBnPkdvTGdeXm52YnljQ3FuUV9vUm9FeUpPdl9YT2NuZlloSndVT3RQUj9QWHhkb1lYSkFsS190S0x0UVhcXHR5WEtPXFxxcUR1ZU1vZ1huTE15eFFUWHRKOk1XeWF1TWVwbE1vQT1wVEx1X3VySGlRbG12ZklRU2V5c1FRY2F0X3hqaE1XWl14cHhxZG1USmhRdW14XlV0T2lPWmV0eGRUR1RWbkVyb3FtcnhtdUxwX1V0Z1FVcVxcV0JQS1JRcHNVdD5ASkJVS29EajpISnB1TXU8dE1BalZwVEdBbmFESkpFb15RS1tVVXF4d0ppS2xZTEhYTGJQV3dcXFRbbVduSWtbTG93eHRAaVNVXVhqWFNScWpqaFlVcVR0aFlYYXRjVVBcXHlyQ1xcVGBgcW9xb1h4cEhkd1RVeW5wVU51ckx4U1Bob0JddGg8WERZVXF0V2FpUGVNdWpEdXVpdE1FVFxccXZRQXd0XFxQbHBNR2FZdkFPY2hYSERVcFlVaHVteXFTdXBwZ2h2XFxpblJlUT5dU09RTW9peG5kTHhxVXJtcXFgWW9pdEhFeXBZeVlcXFl0bHVPdXddeVF5YUFJeURXaXc/ZUNjdGt3QkpLQjtzSVg/WHNDdXR5ZjpNSExbVUBFaTxHZXRNVkJlZ3RjU153Vkl3Zm5ld1Ndc0tZVnRJV1tLd2ldRndNeUFXSWRbYkdfRW9rVVBhZ1dBRndNWW91Y1lvZ1RBRXBzWW5HaEZXZWpRaVhLVz1lYkh5Z1dFUmZtdHV5RURVY2BpU25VeWhfYk5VdnZxckdPRl5lcmxpYkBveWhFeFxcZVJed1Jpd3ZvQWhwS0d2bWdTdWhLZHleWVBjZXVkSFlESEpwZXRkaUhEdF5lUDtwVFJseD9ZdTo8b2Z0cVZ4Tj9BTmJwbnVwbEx5T3l1U2d1eGhpdXRUc3FZeXhddGdpUU9VdUZhTXNMcEVFdExkdm9RUXFMcldVcDx4WXhJeVFNT054WUptTkZYWXM8d2VJdGJVTDw8ako8Sz48TkJMVFU8d1c9TW5McFhxTWhIVE9tcUJQeVZtcnlQeXRwS3hFcGhQSmlUWXBZcW5heFtVUkBMdzx4dEJQVF9Ua0Vld1RodF9tdXZ5a0xkajplVlthcXlBcXh4eUdkeWZBdlNZWGBZU1hBeHZsb2lxWTttakhsTUpAd3dNb3dEbUxsTWhdcWBNb2JFdFxcTFBdaW1DUVlCUExPVUpicEpFcFlbSXl4TFBgXVhsQXh0WXNrWUx0WHY7YW5CSVBjbWp5VFE/PHJyREtlXXk8ZFh2RW9YQHZPVE9OaGt5eXFkSFZQZW1wXFxreERYPWVQZTx1dWlzcUVzYFhvWHlxUWxPVk1sdGhoRE55dGBgTGFqOj5ePlI6V0NvS2JaTXU7R3VXPUVCZVdXSWc7R1lRZ0dTd3ZtYWlGP0V4O1NkcVJuc2RnVXVxPVNvT2dPV0Q/U0JvVUdyQ3ZnQXZOP2dhY1Jed1NZb1VAa0NiWVdieXdfW0VAWVZlXXhUYUhZeUlnaXdTT2lgR2d1dWhoQ2dAO1Jld3dhbXV2S0NoO0RBeWRkSXRVeWd5WVN0b0hqd1JxcWdAb0ldcWhTRVJ1b3RsW1hyQUVzdVlwYUl3a0VeTVRkZ3NjTXQ7Q3N3aUZvb0Y+O2JxP3dSS0JeR0RoPXZXRWJpWXN1YVlLVWlQZUNXcUNJZXVQa3hAUXVvWWVuRVZpb1drUXlVSXdtc1ZfaWVTU2heXXlSSWRsVXVnRVVXc01UZHdPbVdOUFledW1kTVRqRFZcXFltdD1YYmV4Vj13bGlsZEVzUGlXWUVzdnlLWFlQdlVPb2xvZ3VuZG1USkB0bXlzb1F0b2RzZEl3XXRTbnhZRHVLWGFRYW13PEB5cGhPdlVzPz5aVmZrQ19iO0M+SUY9eVVDXXh4ZXRmP2ZTVWNwbVlTdWZoUWVKO0J4P1N5S3M/Z3Q6O2lhb0NLR3Rdd1JBeXlZZXlVV3JgY3c8c0ljUVlFPWl4UUJ3b0NVcUlLUVNJO0RmaWNAaWNkWXdwTWI7P2RncXhVaXhneXZsZXZEQWlHc1lQdXVxX0lnR0JGRVd5Q3hwdXlKZUlGeXRpPWNMZ3ZZb2dOd2N4a1Vgc3V5dXk9X0luQVRfRXlqbXdGQ1liT1NfU3JZWWZkTVddV2ZxT3dbcVZYb3dQSXl5WUNGYXhjaXg/S2J0XWRbT0Vpd1c7UWZfS2hcXGV0VEV5c3l2XVFZSk94YW1laFFEeVtzS09XUD1mPD1XR1FlT1FUZmFFTl90PGlSRWV2aklkUkNZc11yRUVzWFVURz1DWD1Zaz1pWHlQTmVuXFx0Tlc8eT9Yd3JUTUdpd1o9ckVRakhQVTxhcEVcXFl5dVF3XWJReWxLQG5ed3Q6Pm1qaWF4QW9fbmRnYWFHcGhgSWNFWHFgZ1pxVmlVdnhLeWFjSHhuSGU7T2dtaW1uSFs7PnZpXnVIQj07Q3ZtaU87eVhfY2s7d24/QmJ1ZGt1eXZnQzpvd1hZRWRpWTxhR0dRQ0xrSFs7eG9Jc3BgVkFpd3lgbGg9alFpSldYVEl0TVlNS3ZhcER0WHVob011TnZkeD15dDo8d2l5dzs8VmJBWUV1Ukc9Tko8bjxsbTo8d3g8eXJkbmA9dEN0U3dBeGE9WG15WEFFTDpEb11cXEo8bFFQTFRmWExpWUt2VXFASHJOcXZXcVN1P2JOYVVDUlo7Y0FBSHFXYjtzdUVzSWFfRUBFYlZtV3VfdWBrWDw9eUVbVDpbQ2B5eD1bZF1ddUhrQlp5ZkpvdmVTZ1FhQ3RjZnB5R1JFQkc/ckFbQlhDRko7eD1FQl91eFVpVDthZ09HSExrQmdPREpnd05xeGlbVHVRYk1vY207Yko7Q1JBZ2pdZkp5Q0Y9RW5TU2c/Zk1PV3lRUnN3R0pbQjtLUlo7VmRrU3JnVV9tYjx1dWZHVkpJU293WVtfUUpJVD48Tj5MSlBATz5kd049UVNob1ttcVNQdUVMUWNweElpdWx0Sm1FVUNMajpETko8cGY9WVxcPEp0eU9GXFxqbFxcS3RYeXhVcVFxeVNIVllwbl1ASzo9Sz5cXFNBSUs/WGxTcWxrXFxMWz10Q2hweW1WdUBOWlhuQjxCdE1MYG9WPVFTRVdGXFxyWldqSFd3dklmUEFaYklncnZaOj9bPj5fVmBdSj9uQE5fRk5hc1h4QUhtVWBaSl5aO3ZhV3Z2dkZgPj5bVkdyY2duPVlzSHdjYj94bkl3XWZfaUFhVWB3d1ZzaXZ2a15dPD9bOmBzXT5mO1l2VnheQEBaeGFmT1l1PHFoZT5kd0Zdak9hX0BaYmBwQnFoQFluaWFeOm5qcEFlPT52c05iWj5cXDxQYk9QYnleeFs/ZGd2cHVAWlJgYEJOYW9JdUpxZllvaHROS0NGSjtIb0VyPkVmaW13ajtXYWd3Q3FpOj1EPjtDO1RsP0RSZWBMRm1YSVxcUVZRUm54VTpcXG5dQEs6P1tST3BaaGBNYXlyRndLd2Y+SGJ1X1o6T2paPmJCXlpmVmRqRlxcQmdza2B3Pl5adWFaOjtGZGpGbVtAZGxPeEpRXUN3bFdpdWo+YEN2ZXFYZ2JfcF1xaTpnW2k+YkJeWjo/WkZvcFZxdzxgdWx4dWxXcUc+akB3cT1oeTpYW2k+ckx4djxuWkVwWjx4ZWJxalxcQXBtT2g6XmBMblxcRnBpSFF3ZXFzQ1Z5O1ZaQ1daQHBrTW5aRXBaRmFcXEY/X05meXVgc3hgYW15dE1IWmFIW0FvdjxXeTo/clJOYlpiYj9UXFw/dklrWUJxeGB3VmpNVT1rU21hVFJLYlo7UkJbQlpJVFtfRGRPQkNxcz9zaWlnaHltWEdTYkhlaXdLc2c7Vjo/REJgVFthTUJ5d3FYWTpcXHhuXFxxc1lRUj1ta1xcS3RkcXddTVdkQjxWRFFKQ1FzO1R0RkVOYTxUb3hZY2hXQVVPPkhSdDxTclR5UkFKTGFRUDx3V1xcSz5wcUpMeHFJVmJhbDx5UVJJdklZdUpFUmk9WG1td2VcXEx5PVhyRVE+dXdaPXJGSVZAUHJIaXlsTG1fPEpAaXlHVVBPX15qQV1VeV9iSFxcPlh0S05aO1ZsTj5jTm55eGhaYFdgdlZcXFJhW1s/bDo+XXZZdkg+cGZJeU5YdTtBanNPWkd4X0FYbldZW3lhdDxZbFN3bG0+dXFIa0M+ajt5YWhBWkV2XUFedUhuWmZgXFxUPls6SHNRSHRGWXNTXnM7dm5DPmo7XWVYXj5OWltuW0NuZHRxdUpfXFxIcWZkV3lRPmtqPndJWGU+YVo6d3VJeFs8QF5WQF93QV9RSjtQdFxcaFRBRG1zVHc9RHdMSW9XPVdwPXhGRVZsWFdxeVBMcXFnVVd3eXlNeUZzVztPZEx3SHZET1VteDtUVGZYTm89S0hwTXdMUXh5eWR5dVhgTVBwWHdocE9QVXJZcGRJV0Vlc3FNdGdpbWpVcXVNcWdJSzpweXVsd3ZIUXBBSmVUWGd5d11YUGpQTUpgUG5EcU1ITj1tSnNweEFJVT15dU9kcF9ZU1NFcGxlaz51V1hlV1RodkV0c01YVXRteGJxTj1xUkZIbHB0a3FgbGZIVW1AdWw8T1NpWFNgd0xsV05RWHJYVUhBcWNxUlBobDo8d3lpd1pweUlRUT5YVGpVUVJEa3Y9UHVpbV51UUt4b1hhcVRtV0pEVFFZbmlRTW1aUmNkaFRrZHRsbHhjaWVWWGF5R2Jgb3NUWGdkUHJCWXRqd2ZBQVpaZ3RweGlYcWdtd2V0T1xcTT5aPVZoZklaPkBicm5kQXB4Z09sd2FyT25gV1hheEZmcllpSF5ddl5fS0d0VWduTXdycHBuVW9ydU9bXnlsVGdgZURdaWlTcWRGW1JwXUtmUXRweU9SRVZKQFpueVxcWz9qVz5odT5dY09tcXZpa2B1b3d0V1B0ZkhnPVdyWUhlbGB4TWd5dUhmPWB2b3hqUXlvWXdsY3l3SFFod3d3QU9hZm55d3l4b0dfTj94WEZvUXdwcGBjV2BhS1lvc195c3lsXVF4dllbPWdmXXFuZ055cGhoPmd5dE54YFl3XWl1eHhxQ1d2QkZdcj5nPmBpeXhHc0NOb2lJYUg/Q2RNU1c6Y2VUa3lWaUdpTVVxR2NTdVQ7WXVpQ1VpP0Y+S3JLYVRCTXlwWWl3TXR3SXdoS2RjU1RgU3JZV2N4UVZVX2I/Z3ZKT0Y/V0NfS2V4eXhZeVlFVWhQY3deZXlAZ3NMQWdbZVljUXRzZ2leZXNMZ1J4XUlqPVNQd1l0T3NlR1lGZ2N3aVRkZUlMYVJoW1V2P0d3UXl2U0c/VWNOS2RvV3dxQ1NNb1ZnXXV4bWZsZWZES3FnRGRUcF4+bm5OXlpVb3Vrb3RKeWZmYVxceGFtWE5nTFFbPWBvZUB2V19qS15aOz9bPlhudz9haVled1lxXVd5cG5dd29neXF5PW5vOj5lakZ1bnlwWHFpSXdaOklkXXZaRUFrW3dfYE5pZ092PkhkWGdzXV92XkhvbF95Pkljc0FpS2Fdc19vX1NJVVlkSXNIT3heWXR3Z3ZVd1d5d1NrWUg/VWNQa3R5d1lqZXNhR1VvP3NwbXJnYXhfeWRtQXVsO0JMPXZ0dUVAQ1JKW0J2Y1JVP1JyZ1hdcXJHQ1VyP1dDX0RoW1RKTVdOdVlCWWZJcWV5P1hLTWhhdXNYX1d0T2lvX2Vtc1ZSX0NYW3RZQVhqO1NFeVZla1RFbWl2R3ZrSUJqa1N5b0l3W3V4bUZmc3JHSVl1c1hoYWljU0NcXHNYOztIWz1EXjtCdFNHRktZdG9JSztlb2lDSktCW0FDVW9IQVVzY1d0YV1mXXVicGtFeW10V2l0bUlmPXlSbml3UVlVaWVpT3lXbUlZZnlmWV1mXkVzXFxJc2B3ZGRDVVxcY3NNY0k/O1dqVXJZV2lwYWNOW2l4Z2J2P1Z2U2RSSXM7PWRvVUM8PUZWc3Y9d3lXUUNoYXY7dWdaQUlzT1BNQHVSQVVNcU9VaW5SeVVpbXNhbW9WYFdiQUxARE08eW1hWXdnPHRJdU07eHhbXU1aXFxKPHFMeHV5d3lLU215Y1FTd2xyWVBxV1xcd2NQVF9QU0Jdc0t5bUxoU2lEVHZAbWhhV1xcUFFCQHlFUHdTXVlaQXJbYFZNeVl2PFhKaXdhbUtZbGtLeXFFdXVZTWtHaE1aUWpNQEpieXU6PFdeZXlLbEp3dXJdaHY6PUs+WFZ3TXBmZWpWRXFseW5uTXdqYWpRdW1RVXZqaVV0YExldFJcXG1rX0xtaHBXZ3RVckBYS21VdWV5Z3RxP1BqYGVTVURzQ1lkZUlpSD9jb09ia3dmQXFzV0l4bUlrWmlqUkBxZ2FjOl54Zz5aVGZlUWBqO09qWj5sVG5tV15rTmZbdkdnPmBteFZoQG9mR2FtYEZtbXZmcEF5bVF3cFZvVFZbakBlS1Fya1lya0BfT1ZfTmhsZ1d1cT9zdVlwYUlzaGlhWVFjZnlveVBzeGhpeU5zXFx5a1FYY2lxcT1mbml3d2FveXl3dkZPeFZ5ZXFPc09oX11WW1FmP0V2QVVTbmVDYHlzeXNFUUdjTW9mQnF5d3lCX2FzU1lYTF1nUkVkXnV1a1tZXkFJQ2FkY1NmRm9Zcz1jY3N0eVVpW0d1Xl9WYGR1eHBxZnlwVnFuSDxQY2RRVXR0UUBuST1KRmVZd2hucGFTXFxlclV5ZkBPc0lBXWBnYTxxW05ZcD1Ib0NeYmxOb1BnY3d2eHFIZ01wanQ/bGJ3Z05QX1NfZWR3dGZwb0Feakg/Y28/W1NncVxcR3B4X1xcV0lrTXZeX2liUT91Zml2RHZpZHhqaVd2QEdcXGt5d3VgaXN5aHdZYXZeYWdBcF1wcl1ea1RhcExPd1BJb19WdGB4cWFYWmZQcERpeHFPZGxZc2tZXFx0X109cV1JYWFjT3dKPlxccV5bRk9kaHFuVWhgOmFyP0BdPD5mWk9aWnheZUltVEhiaUF0S19acGhhYWF5RUltU0ZaXFxQal5ndUJwdmxpYk55dkxnb2RnZklwYXVQZl9RXWNndGBYcGZZeXBXcU52X1BfcmlYeG8+Z2pZc3RebVhGYXJ4ZGxwZkdRZlNAXFxKYHhvVmBXTnFGXnlWTnk6PndjcWhbV3U+cGl1QVpbbnVhWHRLV1xcQkBqY2hlZXBqeF90VkFzS1d2d255ZlBpXFx5YnVxaGdoeVhyTXlWSFFzdVNIYEVzckloXWNTUTtCd2NHXmdzTFVFO2V3WUdZPWtCb1NiO2dJUENVcT1odklpQU9lOj1yVkdSOkFTW1dERFlyUU91eVNYQTtScEdlb3loUTtEWmlZU09lOj1yZmdCRUdkPE9JTmVIS1t0eElVbTtUamtyWndZUElmcXdyaTtWcFtiOj1yW0VSOnl0c2VWVnlJZXlXcU1yWnd5PT9GOj1LWjx2Oz1OTmVwO2B0eEl1aTx5TXFVSnlZZXFrb2VKPD1OOkBsPkRqOm1MOl10eEl1bTxKVGRLa2FqO1VYVnRqOkROSjxOQlxcSm9cXFBKVXlhdXc6PFNSXFx4d2VtS1xcSltFd21NTHdYajtUd0BEajpleFBsblFEb21QSlp4bnVBSnVJam94cGc8eHloeVBwdTtBalNUV01MSk89WHVReFdcXHR4SVFlXFxOSlVQUkxtXT1NQmxOPD1OSkxyajx2ZUV2W3l3OkRTVXlRPDxOWz10eXRyXFxUdz5cXGo6PUo7dE9OXFx5Sz15SlV5QT1KbnlSUlxcSmVhSj5iSnNiO1NmP3dDb3dZPnB5RlRqSHVvT1xcbl1AS0JEajpMalhsSnZIeXhMV3lBW0NWaj5GYkpKZj1MQFxca1hxTGBweElASlJcXG9FPExhcGo7bWtdPEw8REo8QVJCWUtBYG5tQVJneU07PFBKRW5BQFBiaXU/RU06PUs+PEs9REpjPFlGYEw8YWp5TEpaRFZqXFxYdUFLSkx0d01sO1FuO0ByWWB3PWVVPTxTcllOOkxta1xceHJEVldEcGk9cj5ZeWBUaj9VSnBVSzpwUko9S0s9c0FUV3lUWHRlc1pkTT89VmBdajo/aj1Gak9QW18/XFw6Rls9PFxcT1I8S3JNWT1ESkpRd1s9dENFUko8Tj4+Wz5GWlV4Wko+WmdwXFxAZnd2R149d2tbP1xcPGI6PXZxeWlpXWhheUc/b0M7O2RqO1d4aXlDO0Y+S0o+bFVRPE5jZUxoQE46TG1nXFxLdFVYS1hWUWhWX0FtPkROSjxwc0VWYHl3akxWbnB4SUBsPD1KblBza1h2TkBQQj1MPkROSjxwUz1PQmxWOlxceG5ATF9xcGpESkpAUGJhc0VsUjpATEJcXEpjPGs/UFA6TFVfRV06RmJSXnZcXGFbPkBiOkBkWklyWWFocXloR3B5Z09qRUZaSkBgQmlaYD5iQl5aZm5cXDpmeU9Od2JIaVo+WkxuWkd5cFZfWjtbPEdqW1FiR3lteXdsPHZqOj5jUl5eQk5qSj5bOmFiOz50VVBaSll1PHZaPj5idW5qO1dvQUZiWj52YVlxeUd1bUFaTWFqPGB0RG5feXd5R0Fkb3FnYFdlPVF3QXFjanZsPWh5SUZaVnl0TElkTT5bUmB2RGhhSmhweW9xUE5uPj5iUkd2cmBwXVl0QT9xZ15rOk9ePk5aW25xZHZbUFd1eU5aSEZaSkl3UUZnUD9bPWBwSV5aWz5cXGo/c08+aWJYZ3lBd2deYzpecGU/XFxuUGhSXl5CWlJBYVJeamRweEludU8+clpeW0xeWjs/Wz4+WzpIWnNxaV1mWlA/cERWXWFmXFxuXmA8eV5GTm1zXltseGE8QFxcQkJDZG9OVXlhYWpaPFNnUEtbPXRERFZKcE5VPE4+XmdKPlp3SF9OUGJPP3RqaG87P11Gd2ZjaHlRPl4+YkNQSmVkZG1PY0dYWjs+XFxYYGo7V2BYVm0+RmJKTlo7QF5ZYGh3aWhvcGdQUHV5dmVQSGo6PlthYGo7V3BOUVtMXjpOakpeW3ZnWz9uZGhJeWV3djpfYjpeak9ZclpWeWU+WztAQkFWSjtjaVloTGV3WWdFaVVDTTtCW3lnamdEZEFIQnVSSztEPENCTWdCPVNpSVd5YWV2PG9iOjtDaVVyUGdUdHNjSltCOz1DPktSUjtCd0dHPl1zWD1CbGdlO1NYQEdSVHlCPHlXYUFzeUVJXUtiOjt3Tz1IQmV3XldXUUFEX2VmX1FGOktGUlV5Tz1ncElIcElYckFpeWFmXW9GSltCOnVJQDtSZXN0eEl5XT9CXlxcaldJbWNwVkpoWVRscVxcXFxKPEBKYkl2cT1RY0lteXBUVm1eOj9hY15bTElkPl5qOj9eQkZaQUlvb3hpUE9fXj9bOkBgXUNHQVhWO0I+P1Jya2RpY1dVYWVQVXlhZXQ8bWI6O0Ntb2I7QVJRUUNMSVxcPEo8VGtNVVd5YW9QbG5CPGpqTVlSXFxOQkxqSj54TT9hWnB4aWZ3X3FgbUFdY19aOj9tc1FyYz5kWz9sWmJKPHg9P3djaVxceD5bOkBqYXh2RkBiPkhicHlpcl9oSGZmVkBiSm5bTHFxXFxvdmpGaHlwbTxncGg/WzpAcD1JaWM+ZHV5b094cnJhYkpxeEFvckNeWjs+YG9YbG1mcHlvcVFeZz4+YjpBdXNhXkpoZ0BGcWdea05AXFw8RnZiQVpCV3V5dndETmBlaGp2P3JjR2ZKcHg7QF4+TmpNaG9RVnZxR2R1eXZzUWlHbmRbUWI6XlpbP2xaSko8U21hdmBpc2pkSz5MS3lxSm5MSlo8dllAUFI8a0VEVjpAXFxIUFtaXnR4SXlxQHZEZnZwaWZ1R3JDR2ZKeWxUR2JYZl9BTmJaXl1PPlp3RnFHTmJSQHhZP1xcRl5iW1FiOkpieW1qPFNKSkhYSzpwd0hNbU5xeT90V1VATDpESll5T2xgWUNUam54Wzw/Pm1COnVTSW1nanlVO2VSOltCdnVJeF95T2tCQ0tKQlxcal1MSlpkbXlMUlVcXEp3ZU9SPUs6QFJaTXJadHJLPEs7QHB3PUpucXZeTGs6eVdhTFpaXnhbP2xIUF5aXlo8cWRhZnJucGN4X2pCQHZnd2o6b1p2P1p4WVs9YFo7P3hmQWZSV2dBaGhtblxcWkZ2SWF5VUFrOj5bPnZ3clhgbF9fa19zc25pWUh2U0lyanB4Q29rVHlhdXFnVW9wWT5mVnhgPW5jTUlkPl50Pk5yUHZkc2BqQVZoaXdfeV9cXEg/WnZZaEhhYExxXkpYZkpJXFx1QVtvRmpaYkJjdXBbZmpJQjxTck1HQmFHSWBhZUU/REJTVT47UnRteVR3ZzpLeGBVdWxnQzs/dldTY0NTclpjSUBnRVRtcmxVSVJrWEI7YmpvcnBbU2dXRklTdUs7SEFJSU9XdkxJSHVZUnRfQ2ZvQlJleF5lckNJc3hTdU9nV0NbQlhNVV1HR3JXSWBFSXhjV3ZtU2BvRkprVHZPUl91aG93c3BnVlVNQlBBSWlRWEZRdWhVeU1JSD5rdHRDREtxeElJRT9fQzo/cm1xeHZNc2tlV1lbYjo9VWQ7Qjw7Qjx1TUxcXEpnSWpwRGpqaFZaXUpVaUw6PGx0TFc8REo6PEpCRGo6PEo6PFg8bFdBVHJuQVdFPFdnbW12bHFEPGpzeWtVPXVBZFA7QFBvPXJdXFxOUnlYVVRwZ0VKSGlzQkRYUnlWVkBSUmh4ZFhsV1VMOjxRcVROWlV1UHhOQEByVHRUV0BKOmxzR0F4aWxXQVRKOjxKSkxKOzxyd3BMZ1BRQmV1QnB2YFBtYVh0YW1zRG1wZkl5X21zVj91Oj9aWklaaHdaPW5gUXBhTT9tVXl0SHFtdl5ec1ZoQEhddHFtYmhfWU9zRGhsZV9edFd4ZEFuRnl4b1hnUWF2T0FzQ1F4W2FxSWB2XklvTVFsaXZncmBoZEF5PmBbc0d3c0dzUkhgXV95dVFybWF2UHBtd05xQ0FwS1ZmXmhzXWlfX1ZnUGFfZl9oOj5ePkJOT2hJa0laU0J0eXhEbUh3U1VwV3VHc1lBQWVrR2RMRWdcXEVJY29VZ09TSm12c1dSYXlWXkV5YVdnXkl3aGVlX09UP09YbGl4SGl1bGtWVllXbHd3QXdFX1l2P1VYTGNpcXdTaXF3bHF2Tkd3bFNYUGFVc21naVloZj1YOjtGPktCSk14YGlDUW9DZ1l1cmV5c1lCQXNDRV1UbnFUU09Jc01WSm12cWV3dGdjbF9Xc1FTU2tJbj1mRm9Zcz1jWG90Z0lnSE1kZXNWUm9nV1tVeUdWbV90aXd4Ql15dXl3YztkWU1XT2FnaFNIWFltSjxLXlBSb0R3cmBZc3lYU0FxaFlUTWFzTVBXTElUdmBUP0RZZU1YXmBYZ1F0WGhrPj1LPjx2aU95ZXlfc1Bpb1FtVkloQW9gSXhhdWBmY2lzPFZuW1dqdEhrYHhtd3ZoWE9eWVdtXFxGdFlfZ09YYkFYZl5RdW94cV52Z3JvXWM/dWpwbUZwXXM+ZWxndkRJd09hcUh5ZXJgYmhHcV9xXFxjeXRheGJcXEh3d1l5b2FsQ3BveXhAPWhyQ1RCW1RUX0hIP2Q7V2JAPXNxWXlwWXM9Y2ZpWVY9V3JQbVl2O1hCbXJHPVlXbUhpbWNQV0NRc0dDPVVIX3dMbWl2RVVzdXdXSXN0QWVtS3JXVWRIR0NNc3VOZ0V1c1hFcWdXVVlfYXRjWUhMQWlLXWJmP1V4P3RhSVlgR1NBQ0ZKW1VrS1g/QVc8U2Vwc1dLV3VpUXNpc0hoXXVKV2loUWlNbUVnbXRCbXJHR0VbPWlqQWN4UVZVX1o9W05AZ3RJWlFHcl5QW09wbkdPXUJZYEl3aE9geGNZdGVZdXB4d0lxbWFYW2VoZVl3YkNpZ3FoZm9BaXh3aGdRdV1mckRwXFxQeWltRl5PTl9FcFxcY15uRVZvXlBfUU9vWnhpaUdrWFFjQl5qZ2BvVXdxQ09lcHB3Ylhtb19hWXlxUWB2REltTW9zWT9xWlFbaFdpXnlwWXFfVW5hSGh1b0Z3Um5hbF9vVml3dG5wZEZxSEheT05ad2lqYGZdPkRbW3hJeUl5QXM9aWhVQ3NRdVVpUXhyUXNIaXVPU2ZLWUd1a2dSY3Ndb1JveWJeR3ldZ2NfX1ZDT1ZseXRZdVl1T0JbXWhGQWVzc1Jwa1dWUUZZZVdVQVZiP0JTeWl5QWJlO0pSYFd0ZWxEaUxfQXZ4aW1DcEpOaFlkSXNIUHhqZXhkUHRfSW9YUFB5RXJcXEVZYFhZUXVrYUlVZ1lKT1BPUHhTa2lwdkV5bFFzaGlRWWFOVXBVTmlMVGRsWVxcVW1RS1JpcnNYeFFcXFhSUHdMSXF3YHF3ZHhvdG9ZdHZQUFVNcGtddEpxQVNbUGpxUXd5dW5QSWxGWUxuRHdqcEpAQGtrSHBjVXRhTXdlbE9pPXF1UFZOdU5dZFhfdFRpcFVnRW1wZE5MTXdOSW9jeHlpcG51UVk/QVduWVlPaUxdUFFrTG9lbFJeaFdFcW5PTVBaeFlpZVlbPHRcXEhZTWRVQlxcT1Z4eFlkTW5wUndQeGRIbmlBUXlFdlxcYGZ3VmlsSHdTWGBhT2tpXmxoeGV5cF9rSHB5UHM/dnR1V2dRcW9beG5nd3l0d25RV3h2Z3ZEeW1MSF9Nb25OdmVFYW1zVnB4Z2FjZmh1X2NRTm1hcXNtSHRbV11kXlxcd0l5YXltbFF3cnhsb0lwcHlyWXZkbklwYElfcWdjdF5sckBaYnljY2hgY0FkRUluVGBoXmZuVGBoVl5hbl9icUZ3Oj9oSldcXGJXZHl2eWxfZUBfcXZuY1hHXW9eZEBeW1ZudlFYX0B3Y2lgd3JsUVlWZ1RtY1FtO2l0ZXh0U0xZeVBRY3VubmF2OmRUVWFvaEV2Rml5WkVuWHlXTml3YGFqaGRVdGl0ZUh5TWVQdlBvcD1RX3RUaU5tXFxnW2pfdXZJeFpZaVJJc2FZZ1BZcz1oZkRXd21hdmpIXFxdZ15gQXdrRnNKSF49YGFWV25kYHFwRnhPRl9Rb3BGSG5pSWhRYW5dPmRiT3RbQ29DYnBjdG13eEVLVHY/VUtDd01ZZ3V3dWg/RXdHaWxXdkRHdHZPQ3JPcm5PV1ptVz5PQ15JaGtHaENxZklLRXZRaHhJR1Y9aVpfaXVxeFVLaUNJcnR3c3lDZG9XZ1FvckFfUmk9Z2BBQmFvU1dvU2tpaE13RklFd1FZZHRfRHVZV3ZFRj07dT9PSUlpRUNHSWBjZXRvSWVjZ1hTWU5tVHhNaUJtdVJfSEh1SEtBZ091ZkNvd2pLVj5XaWBjRTtPZmhhSF5pU1tBSU95cnFtaXZPeW9hZmJNdDs9Qz53RWJvWFJVRXBrUkNZaU15RmVxYnRxZWx1WD9Bd0dpZFc9SGg/RVtpZV11cnhNZFZ5WGFRSG5xdUxlZkQ9U0ZJdFlPZEd1ZW1JcjxjVU1DaHZFd3ZldVA7VFdRWGhXVWFvZE5DR1xcWVVnVVI/UWNfaXZqSWRdT1hrQ1NCbHl2aUpXPU5QPW9KbU9TeVZIdF1deGlRcHF5YFxcVXZcXHBIbnR2dmNwXlBWdkBhW1FIW11xYkRXbkBoeF94aEl5bl9ndmFXa29XcEJmdGZvckJ2aEdPYTxmamBmXT5MOmVtZmxKdkBRVnV0OmxUYnR5WnhUWUl2aFFrS0toQE09VXdcXFhtVHBxU1lYYFl3amR0bkhXPVVSWVluaHVxWU1xTlRveVRsSlBNcG1OX1B1eGRQTmhqaUx1cWhXX3hxcU13bkhNQ3BuSUVZZWlVd1V1cVhSdXB0Q3FRXXBqckBrVXhUOnFPbGBWQ2FveXVYZ2Ftcl1QPlB4X1FzYll1PklUS3VVUkx5WHRYR01hRGZjdF5vO3BgO3BgTXl5P0huTGhyb2dsX1B1PE5pRWdla25sa2dtVl95a2dmQWlcXF0/Z2Nwczt3bWdAeVZ3dXh2X3J3d3dOcTtHeWBpX1lPc0FZY1BYd1RwdUtXXlhPYG5pYWRoW1tBc0tXdl9nc1RpW0NQbVJecGhndFZ3cEFeZ2xBd01OeGJYX0pvdWpnWnF4Y1Bob0p4YXhBeV1mcmlJZHd2W0dgeE53Z1JlYVdZblNnakNndENCP2lDaUNIZWl5SWNYYXFkQENEQ1lFcXdnVGVpSE1TTnNHRGVTWltXX3NpZVFSUmVVdmVGd1dUXFxfdXd1WGhTclFLcmhRZW5dQkRjU3Q7Qzs/Q2xjdDo/WVtRZl9LeGN5Rm1pdnBZdWlVeHRZWVZpVWtLWW1lVkFpRF09V09VZ1RFVXB3WW9XVFFheWM/SE9HRj1NWWNbVWI/ZkZLRXJhZWV5ZllvRW07dEJPVF9TY0Vld1RndF9tdXZ5Y0xjYjp5aGFvU0xXaWhhaU1tRHldaUZ1SDs9c01XeWhlRUxhdD89U0hXaU1zdUxrVHFnaE4/eGphdUBveWBPdzthSXhpdHFbeGpHUmRteU9BVHBTckBfaVpTUkFza2ZpcXlgTXlEblVIUEZNa1ZUckB1amdgVGNQVEt1WHRQVD12Y1RhaT1namNYcUduWmBmdF5YZml5YFlpWmdvcU9XbEhmZFhGb3VIXFxDVlpmX2VNcGtwaXdYdmNwSV1UYGhKTlpbWWpYZ2lATndYVmZfVmNQQGNwV3VoUXNPWF90T3VXd2hYSV5zVmhASGlvZ3JiaVNqTGVxZGhxY0lwV1BsS1RyQURTV0FrYFFwZ1V5SGRNaGRMb1VvRGVQTHVUeURTV0FxcEVQS3l5T0F1TVBvR1B3OklKd2VLd2lRT1VRZlBZRXhyb0FNSUdnaXdzTll5Z3d4aGdlUkF3amhsSGldVVF3VHF4cW91V2heXXBiSG5rWXBvaE5pTmdfWlBdQkh1QmZ0Rk9mXXFuZ05xVj5fVF9eamlhPmhkTXBbT3FhV2dgY0Fjcl9bTWFuPUBcXEJAWktncFtOd2FgcndnXFxNaHFgUFtaZ2B3eHRtaHVeaW9jRmxYZ2VrTmltZ2ZBaVxcXWhpTnFvT1diVGhgZz9vaVdbaT9ldWB1XXlzaWhleUhzb2hfVVd3WFd3eGFuWFBebXFzRkhldElfbF5bWG5bdW5dcWdddV5wS0hwXXleQ0lYSVNjR1RnSUZzSXdheVVuPWlMVWJheWlmWVZNb0NfQ1dVa3VSP2VdR2NgR2dUO3lyW0hjQUY+S3Jeb0RpW2VXT3ZucUhncWVOaWU+bVV0RWh5R2ZYVWVocWdSY2lzandAb1g9clhRbVBwcj95anFgVDs9WXNseD5UTUFscG9Ud3d4cG49UExlc1xcbExmXFxVXFx0WFhJWUFwWW5ZdlJ5VEBYTXhdVlZYcWBkTURQS0FIS2NIVmNNTEhVa0VEam5Ed1pcXEo8YXJOQU1MbXdecXNXWFFPeXRHYFVrTFl0ZVZBaUxdPEpySW5acHNKSFJYXVlbeG14SXg/TVNHTVFOYG5HdVBWSW5DdWp3QVA+XUtMZXFcXF1TY1FzSGVVQ2lvV1VxS01Zb2lNYlR3UXlXUHl5WT14W2FzPnV3bXF2REh0Qnl4YFxccVxcXXdrYXNNYFdmPEpqPE9bVWxIdFc+THFDdXJySXBdRFdMSUxeRXd4aUtgQXI7PXBGZFg/eW5oQE15QGt0YVFLaUxdSFRlbFRoSGxQZVd0VHN4eFdxWHl3YWpbcG1KRW48THdLWGp1RVFbPUo6PHZHPUpuRW5gPExWRVA8PEpaQVJuSEs+WFVuTUo6PEo6cXFiSEs+PEo6PE4+TEo6PlpbPlxcOj5aOl5qOj9aOj5aSko6PEpaQjpGXkpKOkxSWkI6W1o6OjtaWz48PEo8PT47Qj4+OkI6Rl5KSjpMUlpCOltaOjo7SkpOWjo+WjpAXFxCPlo6Yko7Qzo7QjpLUlo7Qjo7QkI+Ojw7O0pbPDw7QjxKSkI6Pjw8Wjw/PjxKPlpaSjpCPj46P0RCPlpCOjtbOkI+Pzo7PEZeSkI6O0JbO1xcOj48PDo+OkBMQkI6Q0ZKPlpKSjpaOmpKPDs7Qls7XFw6Pjw8Oj46QExCQjpDRko+WkpKOj47PEo6PDw+akpKOk5iWko6XFw6PnBWeHk9dnd3SWZKaXJqV3ZBPlo6Plo6RmM/b2M+b288P2Y8PDo0OlwiXHtcfQ==LSUlUk9PVEc2Jy0lKUJPVU5EU19YRzYjJCIkUyIhIiItJSlCT1VORFNfWUc2IyQiIiFGKi0lLUJPVU5EU19XSURUSEc2IyQiJTVrRiotJS5CT1VORFNfSEVJR0hURzYjJCIlNVNGKi0lKUNISUxEUkVORzYiThe above picture of 9 points in \342\204\2352 satisfies: a. (alignment) 123, 456, 186, 175, 274, 296, 384, 395 are colinear; b. (orientation) 9 is above 456 but below 384, 7, 1 and 2 are above both 456 and 384.The non-Pappus matroid realization problem is to find a set of 9 points satisfying the above items a. b., but 789 are not colinear. We use the fact that 456, 384 form two intersecting lines to build a coordinate system.The coordinates are set below:A1 := [g,h];
A2 := [k,l];
A3 := [0,1];
A4 := [0,0];
A5 := [a,0];
A6 := [1,0];
A7 := [c,d];
A8 := [0,b];
A9 := [e,f];Set the constraints of alignments.colinears := [colinear(A1,A2,A3), colinear(A1,A7,A5), colinear(A1,A8,A6),colinear(A2,A7,A4),colinear(A2,A9,A6), colinear(A3,A9,A5)];Set the constraints of non-alignments.non_colinears := [non_colinear(A7,A8,A9)];Set the constraints of orientation.orientation := [e>0, f>0, c<0, d>0, g<0, h>0];Put all the above constraints together.cons:=[op(colinears),op(non_colinears),op(orientation)];
We use SamplePoints to find realization points of the above constrains, empyt implies no possible realization of non-Pappus matroid.vars:=indets(cons):
R:=PolynomialRing(convert(vars,list)):
ss:=SamplePoints(cons,R);2.3 Study of the equilibria of biological systems.Consider the following biochemistry reaction network.LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic= --k1-->
E + S C <-km1--E (Enzyme) and S (Substrate) reacting together producing C (Complex).
k1, km1 are reaction rate constants. Question: Is there a unique positive equilibrium? First build the chemical model. LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzZMLUkjbW9HRiQ2MlEifkYnLyUnZmFtaWx5R1ErTW9ub3NwYWNlZEYnLyUlYm9sZEdRJXRydWVGJy8lK2ZvcmVncm91bmRHUSpbMjU1LDAsMF1GJy8lMGZvbnRfc3R5bGVfbmFtZUdRLE1hcGxlfklucHV0RicvJSxtYXRodmFyaWFudEdRJWJvbGRGJy8lK2ZvbnR3ZWlnaHRHRj0vJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkIvJSlzdHJldGNoeUdGQi8lKnN5bW1ldHJpY0dGQi8lKGxhcmdlb3BHRkIvJS5tb3ZhYmxlbGltaXRzR0ZCLyUnYWNjZW50R0ZCLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGUS1JI21pR0YkNipRKHJlc3RhcnRGJ0YvRjIvJSdpdGFsaWNHRkJGNUY4RjtGPi1GLDYyUSI7RidGL0YyRjVGOEY7Rj5GQC9GREY0RkVGR0ZJRktGTUZPL0ZTUSwwLjI3Nzc3NzhlbUYnRistRlU2KlEjUjFGJ0YvRjIvRllGNEY1RjgvRjxRLGJvbGQtaXRhbGljRidGPkYrLUYsNjJRKiZjb2xvbmVxO0YnRi9GMkY1RjhGO0Y+RkBGQ0ZFRkdGSUZLRk0vRlBGaW5GaG5GKy1GVTYqUSxOZXdSZWFjdGlvbkYnRi9GMkZYRjVGOEY7Rj4tSShtZmVuY2VkR0YkNiktRiM2MC1GVTYqUSJFRidGL0YyRlhGNUY4RjtGPi1GLDYyUSIrRidGL0YyRjVGOEY7Rj5GQEZDRkVGR0ZJRktGTS9GUFEsMC4yMjIyMjIyZW1GJy9GU0ZjcC1GVTYqUSJTRidGL0YyRlhGNUY4RjtGPi1GLDYyUSIsRidGL0YyRjVGOEY7Rj5GQEZnbkZFRkdGSUZLRk1GTy9GU1EsMC4zMzMzMzMzZW1GJy1GVTYqUSJDRidGL0YyRlhGNUY4RjtGPkZocC1GVTYqUTFOZXdNYXNzQWN0aW9uTGF3RidGL0YyRlhGNUY4RjtGPi1GaG82KS1GIzYoLUZVNipRI2sxRidGL0YyRlhGNUY4RjtGPkYvRjIvJStleGVjdXRhYmxlR0ZCRjtGPkYvRjJGNUY4RjtGPkYrRi9GMkZqcUY7Rj5GL0YyRjVGOEY7Rj5GWi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR0ZRLyUmZGVwdGhHRmFyLyUqbGluZWJyZWFrR1EobmV3bGluZUYnRistRlU2KlEjUjJGJ0YvRjJGWEY1RjhGO0Y+RitGYG9GK0Zkby1GaG82KS1GIzYwRl1xRmhwRlxwRl9wRmVwRmhwRmBxLUZobzYpLUYjNigtRlU2KlEka20xRidGL0YyRlhGNUY4RjtGPkYvRjJGanFGO0Y+Ri9GMkY1RjhGO0Y+RitGL0YyRmpxRjtGPkYvRjJGNUY4RjtGPkZaRlxyRistRlU2KlEjUlNGJ0YvRjJGWEY1RjhGO0Y+RitGYG9GKy1GaG82Ky1GIzYqLUZVNipGXG9GL0YyRlhGNUY4RjtGPkZocEZpckYvRjJGanFGO0Y+Ri9GMkY1RjhGO0Y+LyUlb3BlbkdRIltGJy8lJmNsb3NlR1EiXUYnLUYsNjJRIjpGJ0YvRjJGNUY4RjtGPkZARkNGRUZHRklGS0ZNRmNvRmhuRlxyRistRlU2KlEqU3Vic09yZGVyRidGL0YyRlhGNUY4RjtGPkYrRmBvRistRmhvNistRiM2LEZdcUZocEZccEZocEZlcEYvRjJGanFGO0Y+Ri9GMkY1RjhGO0Y+RmB0RmN0RmZ0RlxyLUZdcjYmRl9yRmJyRmRyL0ZnclElYXV0b0YnLUZVNiNRIUYnRi9GanEvRjxRJ25vcm1hbEYnJSFHWe generate the dynamical system governing the reaction.LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUkjbWlHRiQ2KlEzUmVhY3Rpb25TeXN0ZW0yT0RTRicvJSdmYW1pbHlHUStNb25vc3BhY2VkRicvJSVib2xkR1EldHJ1ZUYnLyUnaXRhbGljR1EmZmFsc2VGJy8lK2ZvcmVncm91bmRHUSpbMjU1LDAsMF1GJy8lMGZvbnRfc3R5bGVfbmFtZUdRLE1hcGxlfklucHV0RicvJSxtYXRodmFyaWFudEdRJWJvbGRGJy8lK2ZvbnR3ZWlnaHRHRkAtSShtZmVuY2VkR0YkNiktRiM2Ki1GLDYqUSNSU0YnRi9GMkY1RjhGO0Y+RkEtSSNtb0dGJDYyUSIsRidGL0YyRjhGO0Y+RkEvJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNC8lKXN0cmV0Y2h5R0Y3LyUqc3ltbWV0cmljR0Y3LyUobGFyZ2VvcEdGNy8lLm1vdmFibGVsaW1pdHNHRjcvJSdhY2NlbnRHRjcvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GLDYqUSpTdWJzT3JkZXJGJ0YvRjJGNUY4RjtGPkZBRi9GMi8lK2V4ZWN1dGFibGVHRjdGPkZBRi9GMkY4RjtGPkZBLUZMNjJRIjtGJ0YvRjJGOEY7Rj5GQUZPRlFGU0ZVRldGWUZlbkZnbi9GW29RLDAuMjc3Nzc3OGVtRidGL0YyRmBvRj5GQQ==We obtain the equations defining the equilibria and the conversation laws. Together they form a system of non-linear algebraic equations.Here, C + S - C_0 - S_0 means that C(t) + S(t) is constant along the time.Eqs := Equilibria(RS);
Claws := ConservationLaws(RS);
F := [ op(Claws), op(Eqs) ];JSFHThe current concentrations (given by the substrate names) are the unknowns. The rate constants and initial concentrations are regarded as parameters. JSFHrates := GetAllRateConstants(RS):
current := GetAllSubstratesName(RS):
init := map(u->cat(u,"_0"), GetAllSubstratesName(RS)):
allvars := [op(current), op(init), op(rates)];
R := PolynomialRing(allvars);
N := []; P := allvars; H := [];JSFHWe compute a triangular decomposition of the semi-algebraic system defined by LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkobWZlbmNlZEdGJDYkLUYjNjMtSSNtaUdGJDYlUSJGRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEiPUYnL0Y4USdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGQi8lKXN0cmV0Y2h5R0ZCLyUqc3ltbWV0cmljR0ZCLyUobGFyZ2VvcEdGQi8lLm1vdmFibGVsaW1pdHNHRkIvJSdhY2NlbnRHRkIvJSdsc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLyUncnNwYWNlR0ZRLUkjbW5HRiQ2JFEiMEYnRj4tRjs2LVEiLEYnRj5GQC9GREY2RkVGR0ZJRktGTS9GUFEmMC4wZW1GJy9GU1EsMC4zMzMzMzMzZW1GJy1GOzYtUSJ+RidGPkZARkNGRUZHRklGS0ZNRmZuL0ZTRmduLUYxNiVRIk5GJ0Y0RjctRjs2LVEvJkdyZWF0ZXJFcXVhbDtGJ0Y+RkBGQ0ZFRkdGSUZLRk1GT0ZSRlhGam4tRjE2JVEiUEYnRjRGNy1GOzYtUSI+RidGPkZARkNGRUZHRklGS0ZNRk9GUkZYRmpuLUYxNiVRIkhGJ0Y0RjctRjs2LVErJk5vdEVxdWFsO0YnRj5GQEZDRkVGR0ZJRktGTUZPRlJGVEY+Rj4tRjs2LVEiLkYnRj5GQEZDRkVGR0ZJRktGTUZmbkZdb0Y+JSFHdec := RealTriangularize(F, N, P, H, R);JSFHThe system has at least one positive equilibrium if and only if the above contraints holdDisplay(dec[1], R);JSFHExtract the regular chain, quantifier-free forumula and positive inqualities of the computed regular semi-algebraic system.rsas := dec[1];
rc := RepresentingChain(rsas, R);
qff := RepresentingQuantifierFreeFormula(rsas);
PP := PositiveInequalities(rsas, R);
JSFHWe compute the sample points of the connected components of the semi-algebraic sets described by LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEkcWZmRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEiLkYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZMRjk=JSFHR := PolynomialRing(allvars[4..-1]):
sp := SamplePoints([S_0 > 0, E_0 > 0, C_0 > 0, km1 > 0, k1 > 0, C_0+E_0 <> 0, C_0+S_0 <> 0,
E_0^2*k1^2-2*E_0*S_0*k1^2+S_0^2*k1^2+4*C_0*k1*km1+2*E_0*k1*km1+2*S_0*k1*km1+km1^2 <> 0], R);JSFHDisplay the coordinates of the first sample point.JSFHp1 := BoxValues(sp[1], R);JSFHEvaluate the regular chain LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEjcmNGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSJ+RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkxGOQ==at LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEjcDFGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSIuRicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkxGOQ==rc1 := subs(p1, Equations(rc, R));
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEkcmMxRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEifkYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZMRjk=has only one real zero.R := PolynomialRing(allvars[1..3]);
box := SamplePoints([op(rc1), S>0], R);
Display(box, R);Display the coordinates of the second sample point.LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic=R := PolynomialRing(allvars[4..-1]);
p2 := BoxValues(sp[2], R);LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic=Evaluate the regular chain LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEjcmNGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSJ+RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkxGOQ==at LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEjcDJGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSIuRicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkxGOQ==R := PolynomialRing(allvars[1..3]);rc2 := subs(p2, Equations(rc, R));
box := SamplePoints([op(rc2), S>0], R);
Display(box, R);To conclude, the system has only one positive equilibrium if and only if LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEkcWZmRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEifkYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZMRjk= holds.2.4 Program verificationJSFHJSFHTUZOV3RLVWI8b2I8Uj1NRExDZE5OWlttOmBMPEg6eHZYQHhsazpIUWNYTltub0hhXWNdQz5oQkdlbUtBSEZMdjpcXFJRdG1LQzpbQ05TRE9FPF1SPl1yRmFzRj9jQj9TT2VUT0NES0NkU0dlU2l1V2lVYG1WYEtGXFxLZmRPZ2Rxd2hxV3F1WHFTSG1TaHVXaXV5eXl5SUNjeFFpYVNWZ0NfYjtfZHJPdWdpbXk/aFZmdnN3clFxYDxvbElPcD5PZ11vXnJAZV9mc25gdDtWYW0+ZERIakJ2bGBgbldIZ0lva2dec0lwbG1Hd05wamBmcEhBdVJvW2hPcFheXT1PW01wbUBuajp5XVN2bWQ/ZlJUdHVybl9ybnNWckNSaj1HXVF0TT1TdztkPE1YUmFGSm9yP1doZkVTdU10WHF3TWlZWWl1cWl1cXVZYmFmdWN3aGl3WGlpSWtScXd3dVVpdXV3eG13d3dWcWl1cVlpSVlOaEVqVElXO1hQWmFyc0RYaF1tcnROSGlrTXR2Pklxa012VkBRYWxDclBLUnZhaEprVG1fSHFbaGdfZXlJZkpNdltnd0xrZEx1WF5XWXFzRkhJY21NTmttU1ZYPEJYO0VreUV3RWZPR2Nld3hhXXlea1laPVZaPXZpaXdZQ2lcXGdmdUF5ZUN5QV1ZZ1l2RT9SR011eFdUc2t0PF9yWUdmRVVVW2FjYllGa2V2VmNneGVFYWtDSXd1ZF1HTm1kO190YVlGa0l3SFRud2VTQ115QnB4WWh0bEF4SFxcVFhNVklgTE5gUVZUT1tpdndxSmxJbVI8U0VpWV5sUUtpSmp4U2ZtUlxceU12dFlZSW5GTFVCSVZNQXBIZXd5XFx5V1lXcWFRWEhQUUl5TGl0cWFRdnF0PVRdRWBlREhueW95S3ZdWVdaREl5WkdnUldsSnZ1aGZybEhfXmleQD5wY19tWV5dRT9yTFB0Xl9taFBkeEdwR25jeW9bcHRcXHN4VT95UmlkPXVZUk9CRVVySnl3ZEt5Pml0bmFSWU9WZ09EcWlET2dmamtJQlVHXk9YUVtjXz92dj1WS1d5R11ZcmN3VnV3T0dyYD13XWFHVFVyeFFDYEdIXFxNV01VV1o9RXdVQ153c3FnanJpWD91cmRVVHl4VWRNS1xcWVZAdVZsZHVfaXZqRHBATGxGSXRXaGs9cVJtYVFTbXFcXHRLeHltc3RzXWhWbUhWTXRsb1RKa1F2akVUPHVvYFhxZmBYOkFZVmxPUWBzb21STUFwPFVyaExQOklubGBMYFB5dllOSHBPQWlYXV15clVUVkhRYVBxdUl2Z1RXT0x4VElXX0V3QUBwXUBWTkFXSGhxPWxyeElTXj1qdWlRPExSUVh2SFRXREx2THltVll5UmhLVmx4VEFYQ3FYUklSWEFySGh5RnlwRV1Paj15W215aHVXVUhzTHRPaU1VVkBXTE12anFvXT9jZz5qPHBid051T1drS1d4eU9tbUliPVZeR3F5YHZjUVd4cXFjUF5gZXddaXBmbUZtOldtQ0lrPWFkamhzVnhaa2lmR29jdllpW1deSHZcXFFQbVVAaTppc1ZMc1lTVkBZamByPXlXVkBRYVZcXGFhclVmY3ZBc2Z4d2JIbUpIXFxhUGREaHVZR1txRnhhZmVfPltfaWNyQWJfaGI/WFp3bnd1UW1UXnJWSXdCV3RSUV5CTnZBeVpwUF5zZmJLUXU9XnNdQXVST1tvRmhTaXdYRlxcTk9sckFiYWZqdllnbWBhS0dgVD9ieWdjR2Fqa2hiWmZpdnhldVFtYVB0UFFhYGNgVXhbb0Z4Y3VfUWlkbURZO2dsZ0ReSVVCd3U7d3lsc1hGU2g7SURJTVdCdUk+P2dMc2VSVVQ/P0l0S0RxTXZPb1N2eWRLYVM+O1N2PUk/O1hqS2g+eXJdYXdUS1NoQXNjX1VrYVRIVXZhU2Ztb3Z1O2VyT2VlO3dpVWVMUUNXaWNVV0h5c2ZYTVI+eVNXQ0M+P1lQXUJzc3dAXVVoO3M/P3RNc0ZtX1daY2dAdVlQeVVqXVVKc3VmVWJmUWhVa2dNQ0ZjO0ZcXGlkR1VSUV1kSlFHPk1VW3N2bFV5WFtzd19yRnFXeD1YaHFneHFXcmVYT3Fzb0dSSnNFRVdEYU9WT09UYndVeEd3aXFZaVt4PnliRT9YZj9SQ1dyeGdIZD9USm9CW1NZSFtpUWlCbTtlckljaDtJSz9SaU1EY2VyS11Ja2lYRVNSdndIR1NyV1FXSUVCUHl2d09XYGVEXFx5Zk1rYk1FaENFR2BPU0NhdUxlY3JtRk5hcnFLUnNZc0ZpQ1tHeF9XdGV5QklxRFtTdUNzZl09Q3FveGlDaUhrRktXdWBdZk9LaVVzZj55Vj5PZGB5YmBXdW5XZFRdUT55c3BVT0g8b0JNU2t5cWplUVRYT1NQeUY9b0N4bzp4TTxJdTxkVT9NVXZteFl4T3RcXGpJWWpOQFl5UXM7aHN0SVlDUFNlXFxYcXJfQ0JnRUhDP2NxdWpyYXZsRXNYZVZCRU9qQGtAZXF4ZE1cXE12RHVKVjxqQ2FMV2VuXFxcXFFeZE93UWpHQFk8UFFKZXlKXVZecXJLeE1hdFZIQWpDWFNreHdSVFNwRE8/UGpBdExhVHZKbExtX2l0WHdaaXVqRl9UWHdWd3BuUHBeZ2tPQHl4Zm92WWhucV1LcGRKd2FIX2BNTmtKP2JYZ2ZDPnJwQF52UGtOcWduR1xcVWBsPEd0QHZcXFxcP3VJYW1MUV1LQV5oeG1zRmZeUV5ieVxcZ2ByYVB1O29xQD5lY2dqW3FyR0lcXEpxcDtncHFHYW5xbk5YeERGWkp2bFFWcU5JZz55cEdvaGVGbmFuX1k/bHhfWmBWdGBGeG1QXkZgXFxudmBbXnY+RmJGT1tXSWNbblpxcWVrR2lLPmVjZ0pwbmBNbnZFeFBgbkp4bGhsdXZodW1wVlBFTmhgWHNYTFlpeFJpTnFZUmJ5b0h0dTp4bFtdWVhoTU1QU2VsUkNxSlhMV2BMV1psS1N0aE9eYTpOW3VGaGpwZVduc0lxd0I+blNodEJYanVGaD1RYklfdVJGWk9BZk5pa0FIa3JIX19AXUNmYWtRbWdPZUZ2XWtXZERHblhfXVQ+dkdpYWVxYl9gXFw9R19IX2FKTnZbbmFObmNWWDxDWEhdaUtdcmtBWVxcS0Y+aXNyW0RMaUVHR1dwd0Q+WWRlR1J3V2dRXVh5VWRTa1d0PWdWP2VRQ3g9U0I9Q0d1VVdQPWU8PWRDV2NcXFNTdndJQHNWdEtobT93XFxJY2pNUktjaU5tU0Z5Z0l3R2RDSXhtY2tTVEJLRFxcY0Z5ZWc+eWNFP2RncVl5WVhmZWRtO3U+RUlbaXZ2a3l2P2NVd1N4R1VCV0RbO1M+R2M9V2RfV0hSYXJePXg+aVVYX1k9XWRDP0ReS3I+aWR2T0hWU3NleVJLPUhIVWZIP1ZNU3JldWNKY2c/a1RTXXlGO2NQUXJxS3ZNY1VoX3JDP0ReS2k+aUZbV1VkaVdFPWY/VVJRP3Jac2ZNXWVleVRYYVZiZUdqT3NcXEN1cGFyaG9YWUdjSVdkSGFjYWF1WE1GTkdjSltudUF5QnVQa3lMQHBPO0hiRHZeTEBzZUBmZ2haUEdlRmFfRFhvPEd0WU92XW9iYW9ubXhpdEBpXFw/cUJmXFxuWWRFRnRNRmVvUFxcSVFkXFxxamhGajtvZ19ua29wXFxSZ2ZbVls/PlxcbHF5THZoQ15iO2ByTVZdO253dXFpRFdfVnFlOkBsUmd5PklyRm53W3dbcEZqQ1h2U0dkZlBwOk9vc3ZxQ1huOl9cXFxcaG5AVmthbmQ6Z25JPnQ+YHdpbm9kT1pcXFFrc0dpWldbcEZsRl9pPj9rYT5iUW9qdGljdmFhZ1FkQ0ZcXGFfeXJhcl8/b0NQdU9Qd0dPdUN3dnFYbTpZb1JOcT5WXFxySF1mT15TQGlYQV5IaGRQRlpKdmJRWHZNPnNBSWB4X2V1VmVId2hXXmxMTnVqRl5EeWZIV2xySG5Fc187dT5BWFlpWUBDWGZPaEI7YnJvWHNrZ1hxV2VXdGJTU2VdcmJXRFFfQjtVeUFHaFRLaT5zaFpVREx5RnhhdUpRVVplZD9NVEJnVj9vWElLZXNTR2tReGBncj1jeVdrU1xcUXg/Q3djYUJWYUVvSUhhQ3lbU2Q7O2RpQ3JgS1dmWXZobWJic2k7Y2RvO2h0R1NCd0haR2VvV0RBU3ZkQWRNc0M+ZFlOWWpBPVJbTGtEeXRGWVg6XVNWTGtNWHdyRHg6PGtVSEhxZWpnRURzZWFhdj5JSWtAYVZ0PXlSdm10ZmtFR2NDP0V0XltyaXFScXlncD9VZVFnXkV4Yl1WYktjYENGeEdCR1VpU1FGQm9UU3NWcEtUOnl1VltyYU1URllWXFxhZXI9Qj5pZkxLZXBVeTtVV0pzSVxcUURASWNHWXZbZVldP1Rhb1drbUNcXFl0ck11Z0l1UD9GSE1WSV13YjtISVNDVU14cj1IQEFDaFtpX2tDYF15cVVXYklDX2VpWjt0dXF2YEVGRGFyQ113Q2dFP1N4W0VWbXNjQWdHeWFCZTtpakFlckNUO0l1PHVTVmNZYHFzVm1lbk9CUTtYTGVlQG1iXFw/VVpDWFFfaFhbU1hzY2xNRFF3Y1tvVXFRRlJhQlFrdUxzWEtFcltjeD5JUlJ1UlRFZlE7djtXUmNvckBPZlI9aFlzWGBneFpNeHI9d3VZVmhrZEl5VUpVSGU/RHFNZ1pheEpZRE9vSWBVVmc/ZlZVRnFtSHBbRD9RYkNXdDpXUkZ3Ql9HWXZbd3VZVHRbeVxca1NOPVhwQXRNU3RrbVZdZWdab1dpX3JUU0VET1ZbX3JDXXdDU2NBY2ZzZndJSFxcVj9pR19tYkB2Zklldj5sckBqaF9rT3BaTVl3XFxmaWBhbmt4XmJvW0leZm52a0FoZ3lvblpRcm1PdmhOX3JeY3ZfYF14Z0ZYdUFQW2pfcU5GZ1xcYWBwYWo/QGFHWXZbV3VZZlxcVj9pR19lUz53c1BibmdeeF5lbj5rRXBiO0dcXHlua3BpdFtZcWhHaGZHZ1h2W3V4ZGN4SGN0eXNkeUlEU0FVbktDaVVmQmtWR1VJRHlHYXN4ck11RlFJQldkUD1kVlNGT29FW3djWXlUa1ljclNnU3NoYEFFY11WYktjUENUST1VbV1jbltITmNSZT1nYVtXUEF0Sl1Edm1lTVdEYWFyc0pYbEtcXHlubHFrZEhVX1lMbVlQeU1OUF10PV11XUFxTGx1SnRZXFx1d014VXFoVE9FbEldc2N1cXR4SnZNa1JFVElEWElYdkQ9WTxdeVF0cDtcXEtSUXdQPE5NeW9maG1IPXleWHhpWHNlQFlVZHY6WUtcXEFZRlVQTFBVWkR4U2BRU01tTkR2cT1Ra1FXPnlOSndsaWlyUU5jVnBhPW9gVEhqV0hmW25rbEZoYl9yZUZxSUBtbmldR3ZeWGhdPl5tU0FyQ191Y3B3QllydT5qYXlsV2hmdEF1WEFjWGZeYXhbP0Z4XVhvcG91YEhcXFF3YXlecFhhY1lJdHJPdnd5Z19RaEFYcEJAcWc+eT5GZHE/bW1IaE1XeUl2aXFRdXd2a2E/c2BwbGxGYlhgc114aVs/XmhweE5mdE9AX0xYaWFea1RId3VOXUhfcWxgdmZAXm5fdz1nXVdxXFx2T2piWGFGSXVyeFpBUVxcamBubkZjdz5sb2BnWnZgQnhfbWl3Sm92eWFaZ1FmZ3hhT05wV1FkVXF1TV9gd3diXUlrRXl2dlBhbl54UVh1bG50VHlkQGZ1TmldXFxxYV5WYGpmXkJucGxwa1Z3XmhZYz5Ra1RGa0lvX1Q+XVJ3bUlxaFFvdEVmd0ZPeUhwYk12bEpZXFxLUXdpP2VlZmhzYWpNZ3U7eHY+dnJMV3BPeHhfXmNcXHFpPl9PZUZIT2Z0PWZtc3Zpb1dRS1R3SUJzX2RzXXhrXVJWTXJ4aFByYWpjcHdqZFRPdGxdQHdTRXNMZHVSUVVQWWptQXdhbVNZTU5QR2xyR2lLPmpMT3Nwd2xNQWBgTnRuaV1HYmU/U3NdeF1FRGdLVT13U0plWEFHd0FZR1c7R3RtdF9hSFNnY29fVz47ZlRjUzt5VUFfdmRBWFU/Q3lRY3ZBeWlNclJtZV53d2JdSWs9dUtNQl9lZF13dkFBZUZRRmB1ZkthVUJNVVNNeVtDZFk7dGxTQnZbU107Zmx5ZnBzeVNfRkJzYnE/ZmhdVl53d0JDQmtFV2dlVlFtdT8/aVNHVT5PRVA/dztpRlVpWDtlQk1tVjpXUl9RV2NDRGBHSGE9eHBzdndlZFF5aWRheWhJRGpzZnRXUmc7RkN5Z0ZbRkRZZFNtYmNXVWNRVXJxU1BzRlhlYnJXZUdJQkY/Q2RLd1hJQmFrdzprVHc9Qm1jSGFxQ2A9SWtRdUJXVV5ZREhVeVhhZVVZeUxDaFxcZ0hsc1hOeVZ4YVJmP3ZtYWVHR0lOa1NWV0RhOkxKXFxRVGltbU10S3B4a0FATz9FVkVATElEVFRsU0hdcXM9a3VoclhATmBBS29EVlFsT3J1U1ZkYXdpeGlIYl9AeWhuaWdPYlxccW9reF5GVmg+UG1qWFtRXmFdbmFTWWhjd3dveGFTX1tTeWJ5aV9IZnZld2lzPnFjV3dqb1p3cGBbRmhxQHVNXlxcamhhTmFqY15kaldbeFBwSnBhWGBfV0BjQ1FeXldcXG1mZWpObUxPcV5Yb0hwZkpZZ21JXFxxZ2t3RmI8aGNKQGRNXmBwYVpPTl9OeG14aWVpR2tJcG5JcXJhWFtKaHNCSWBuZl5WcV9vT1p4Z2c8cWFoUV11T2pAVm1ydnVUX248Z2pZYFxcbGhaSUdrSV9vdU9vTU9ieF9lXW51eV5gbldsXmhvPHBlVUhsclhlZklbXFxva0pXXFw+P29qSWJjX2BpSV9rUWhhQGlPeWlKTnZUR11NdltbbmdqSV9wYVo7bmdJZmA7QVtPbl1scXRlQG9hWWtxZ2lXQV5IUHBoRl5cXEF3b0h5QlhxQXFtal5zS05HY2JES3NnbXVMc2JnZWJLRXRaa3l4P0NpO0ZcXEF3b0d5QldpQXFlaltzS0tXPGFEZFtpX29kdmdGeD1DSGFWOk1VeWV2eGlGXFxlVmVJdm5xZj9RRlp3dGBbeGRzd1BFRTpDSTxlU0pFZjxPZFRveFJQS11JUkJBTWVwb2twVGJJa1F5VmlUS0VdUXBRT0tJUHh1WVZYTGFhcnNebXI6UE1mPHh1WWtYQExpeFA8WVVaXFxyZWRZT3V1WHBxQnluYFRPZWF5WmxZWnhKeWBOUVVqdHVka15tPmlucl5hY29qPj9tU2FcXHFwcXdGYVJ3Z1VAcD5hbXdRZ0Vvdmxha1B5WmleeD1AeWVPeXBneWs+YU1JbG9ZeGt4cD8+XFx5Vm07Rm1zeGpTaGNVcXhWd3dpWWRJbmw6cWlvWG9iTnhxeHBfSVpwV3k7X2VQeXB1bl88b1Bmak1AeV1BamhPc01XYmtnYVNXaUxBaXd5d1RXbV54YWReclR5a2JOeGlvd01Ba0lwbHZZXkhucUF2YlI/WmtZXTpmdU54bnBIdHBxYEtfX3l2ZWVXbG5BZkNWcFp2YlxcUGpDYXBxXnJLX14+Zm5iVm51eWRkb3dOcHFXUGxRb2pdR3lqT1xcaWBoPE5xY3ZjR2hrbFdqbj9bU1Zda1dxcEZmUGFtUk55XXZtcmdcXHR3ckhQXkFfckVpaVhAXFxBR2xKXl5bcWxVbm9NRmJXcXhxeG1BWXVDT2JxYHRVcWxCZlprb2BrX1p4WGpmaG1yRm1zT19FYXBOZmtMQHJKdnBOSV5teHY+QW5tZmVAWWZHcWRDUVo7b2s/WGBRTmk7X2VJREZfZzp3eHRfaE1nRkZVd1VpY251YkBZZ1phVUtrUmRhQkZdVXVDWFxcSXVaU2ZhUVdoY2VmS1RXS0JFXXVMdUJIYWVSa3ZGdURfa1dLX0deVXlGTXZ1Z2laa1c+TVJiYVJTR3VBbWRNc0lYZ0NJQ1hWV0dcXHFZYGVCZ2FyQ19ZcWtzcF9DUmlmTWdSQHViWnN2bHVDW3lSRUlTV2VCcWF2XFxXSGFrYmNdZHJTZVdTckx5cld5U1dnWEBNUjpdck1ndVtbRkhjZHhTd0RzY1p1dWdndGR5U1F1Y0FJd1xcU2Y9PUl0O0hqWVVAWWZfUVlXX2J1TVhWW0VzQ0hWPWNtQ3VrW0d4XUVIdUR3P0ZITUZbW2JQP0lEXUU7cWdqS1U6bWl1X2U6Y1VDRUhQb2ZFb0R5cVNJYWVmZUVsU1lIXUNkeXJHWUhhY0lxO1VpZ1RadWlRa1U/X1I8PVI+eXJ0U3JCXUVhUWNabVRSP0Rvc3V3PVREPXJQXVVWa3ljeWJeRWRLSUZSX3JnY1hyWUVtb3Y+QUh3QWlYW0c7O0VDUWJDW1Vha1ltd0Q+SVNeW0I+XVlkYVVyQ0dOT3JAXUVhUWNKeVQ6eVZISWV4O2RQQWNSP0lkc3dKP3hcXF9oVFtXS01Ebk1uS1hMYFVzQ0huSUBqSnFZQmBWO0hNbU1WXFxpbF9xbUp0UFxcRE5eYUo7XWp1dVF3VWo6cGpwUVVTTVJfQVRKdHJdTVNAQFFmT3g/RmdnP2J4V2BIZmlqYXV5TnY/R2dPPnVcXGBeYmFyV0hsTW5mRUlrW3haRT9idUleTGhaYHFxRElqb3lkXkBiVF54PkBpPWBneGFyeU5waUBwRT52Rz5vZkhqT0FhbkliX0BvaU5eUUlmS0leUm5lP0luRz9tZ3ZeQEhoYVZjVGhhdW5ycm9xbz5rXVZxeWhhP0FxU15rPWZlTE5dW3hbaml0W1l0cGlneGdhUXlrVWlhYW5yTVlwaUdwWU5lQUBxP3FeanhsOldyWFZebklaWEZaR05pTmVTeWNzZVJjV3VHaWdEXVV1Y1hUa3I+b0lSR0d0VXRoa1h5W1hOYVZOc2RxT0drPVNva2ZDUVdgZ1ZDd2JsQVRyQ1hIXU1YYXA+WW5jcG06UE9McHZAWExpYHhPZVlVeVBvYUpreFBveHlxdVlfRUo+aUs7YWpvQE9nTE9SUXc9WVJ2PFBvYWpoZVJFRXdTVVZiSXFrYFR5RHhRYUpRUHZeQGxxaHRBeGpyPVZkSUtmVXlTUVFfcXFSPHdxeFRSeHJRWWdWb1xcVk9rRHFkdWdpcj9rUVlvWEBkXFxpdHFZd053Q2FCP2NyUG15YF1zUkNDc21TVklVWWtFXFxCXmFSb2l5dD9nYVtXOmljSmNkcXN0SF1FQ2tGWnlWOk9kQD1UO2FydUNpeVFzdz9nYFF4VDtXTnV5SGtGaHlVWEVjQDtnYVtDXFxpaGJ3RmZBcm9NdnVZV2BrY011Ul5TdVg/dU9xV0RrRlp1dlxcd1dveWhlY2lDQ1U6ZXhDRUJLc3hrc2c+VUJOWURAQ3hUW3RNa0NaUUlrXVhkYWdDP2loO2VSR1VOc1Q/T2ZjO2Vic0c8d3h0Q1Zxb0JUY3RJQVZcXHFJYGlkYkdUd0NmcUlzP0dnYVtYXFxxZnRNUnlNWGhPY3RNVkRJRT87Qk1zUmFvc2ZtZkBLdnQ/VjxtREQ7Rl5pUzthQm5hZlhrSVFrZz9jaVhtcj5pWUZZR0tVZXRNYkdbaEp1ZXRNUmVRc3lxaVBjWF9NZ1g/YkFrQ19fR1lfdk51U1JnWVZfcng9cj5JdGNXWGRZSG87RFFpQk07Q24/ZHFzZmlpSHZXRUhZeW9RSUpZd29NdnhrXnBmeD5WXWJHbnhmeD5wdE94cXJQXFxxZ2ZcXHBtSm9vS1hhV0lrVVBXT0ZhQ2hZW3hacXNUaWRMT1l3TWlAS3ZSPUhbQUZ4S3Vrb0dzaWNOZ2Ryd1NoY0JkZVRJPWg7b0RkcVRJPUV4XWVid0ZOaXdPP2U/eWN1P2dhW3VpZ1RKb3lqYVZ2b2J4a2dFa0ZuTWhgP1Y8a0Y+X3RieVY7UVJWeXJ2T0RvS2dhO2U6VUNvVWdhW0NcXGFUd0NCTVl3Wk9pdE1yQ19FTXNSVFN1VHFnTz1oWk1SYVNXRGtGbldUY0VXbGd1RF09Qm5BUkVTQ011U1JbcmNPWTxrY1FfZ3lnWXVPWTx1Ulg/WEpzUlxcPWlUQWNdQ3I+b1h3eURFUUNnYVRqQ2ZTaWRqU2I8Y3haUXleP3RnZ0dyQWVRTWZAZXg+b0ViRVZbTXdDU2JyY1RJPUdcXHlyUFlEQGdVd0NWdkFTUk1YVXdkVmFmRWtJUUtIYGFXRmd0YG9lal9CVD1nUWVJWz1EYU93Q3dob1d3WlNjR2lmWD9GcEVWTVdEQW1WQ1toSnVndE1ycHNTU0V3S0t5Vm1JZEl3c1NlSGdidWlzSF11XFxlQ011U1JrYllrU1NDV19LdkdPVEk9dFlBVUNBU0tXdWxbclVjZlg/RkBfdU9BVGRnZkJ3YmxBPHROSEk7VWNrT3g+b1Zba3dBbWNAR0ZpUXlyU0ZJPVdUb0loWVJIb2JtYWNRYXl2U2VTZWJyXURcXFd3UVFTVnliXU15SVV2T112PllCXFxrU2Z3Y01zWGFrd0xXZjtRZmc7WF5FY2p3VHZjeFc7clV1VFhjR1xcUXhrO1RZTWRFP0hXaWdpQUVeUXZlZVJsSUNPd1J5PXRkX3Jlb3ZiPVZvZ0JIX0dLa3hEV0hcXFlzYztSVXV3eUl5Rz9nZmN4OnFzSGdpeV1CdVN1cE92V3NzZj1ZcnFlckN5PndGRHVzb19XWXNnTFdmO2F0UGxQRV1qWFlqV0RXXWxyXWl2SD10cHBZcEVPRkh2T01cXGhXaktQXkRmZUdwaHJPXm9mbFp4bWpXW0JnYEt2c25GXFxrUV9zTl1GZ2c7PmBTT15CP3dBdmZUQVtOaHV1WFxcR1l0WHBcXEdOdkVhcFhJa0JYbldOdl9OeEN2dHlXb0xXW2tvYlhAXFx3T3ZPUWhuPnRCYVtCQWNQQFtEX3JYcGBcXFldcV9ySm9xO0hzcEludVhkQEZ4UkhiVmZ3SnZ4a094Q3ZvQnZcXE5RYlZIbGFeYllAaW9gXUdeYGxWWmxObF9OakxGcF9oa3JGaUdgb012XmlZZFxcUWBYSXZOcWpBUGtuWVxcWnlud0l5VHJGX0lbS3k+WWdfQVdqY2g/W1dQP0M9P2N3Y1c+QVhEbWNfX2hnR2RyP2laRUZoQ3ZXQHRoWFVieU5GTE1NeFBtaXhdSXlgTE5YZU9BVUpLcUxaZEw7SG1fTFJVRXJURW5lSE1MSE1jbE5kVVVleFQ8YHN0ZWxjaXZMbHVbQXltRFFaeG1qVU9CRU9tZFQ8VWtLdG9MWG47QFdFPGxEQHJGUUw7QGtpUFhgaGtyaXZUaVFVXVJuaHhLaXFZZVJVVFN3dGxoYVVseFZ3aWxkaWtJRXZXTFM8QHBEPHNhXFx1ckF2d0F0bGByZWB2Yj1uVFFKQ0hzTERqQ0BTaERXXWxrT2BWd1VXVXBNVUVPXFxpTXhsVTxIdnZEdW1FdlJFSlRtdGVgc0FBVU9ESkhkeTpxVEZZUGddclBdT25Nb0xhU0hdbWtIcnNUT2BxcHVISkhdVmRhTlhkamZZcFhQTHE9b0tMd0t4TkJ1WXRRcmc8VFlEWFBtbUpRTndddU1UbFldanREa21QeD5sU1ZZcWBtc0hdUTxtckNYaHNGaEhzPklBOl1JbltyPz9oVGdmS0lmZ2V2dnlDX2FocUlyS21TW3lpT09WPk9ZWW91XkFWVGF3d0NYb1VpeFF5bz93OnNUcXd5SXlJPmt0YHV3Q3dla0tJRElzPF1WQndlY2tFQmdCUHFWaXROPGV2c1BWWWRqQnFqRkBUS0Rqbkh1bU12ZFFXbGBYb11UOlhXR21QQnhKS3FWSUlrUVh2XkV3VUlUW2xvb0RtSnRLWmhzWFhMQU1VTXh0a11KQHl2XFxQUlZVV2xgTU1YeDtkcFNZWFxceW5tQVR4YFd0UVR3RU9UbG5vXFxUaEF1RVhyTGhKSnFWSUlrSXBMWk1QQFRKVFF0U2FUPj1rZWVTUHhzP2RWUz1QZ214VkBZUDxSQ1VKRGVqcFRtWExObm1sT1lKSmFXSGxuR3FZSnRKb0lveEFLTHRTUFRORV1xbFV5eWBSa3hrXUB5aEVMX2x5bFFxQk1ZT0BvcElYZ2FXeVxcbTtgbk5EcGVlTEdAeWFATlR4dGRMdVNxWXJkbnBRU148V0xdSkZVV2xwWGdQbkF1V215cUdxbU10bD49eVpZbEllcWx1TkxQUkFdcm5wTkVZWXFxdUVQcXE9SmdtaGtnbkk+dk5HZE9RbXl3Zk4/a11wXj1OaURXXkpwYHV3aWlBbEJvYE9Za1pOX0BnZGBIYm5IdXVPdmlPbFlRZ3ROYD5JY01YWmNXUGhWS3VZd3FZXj1qTXFOQUx0YHVNYElRWTxyeVVPXFxdWEJYTUdtS2Boc2FoampUbGJtUl1hcnNEWEh3YEhfbU1ia012VmxXVm5DOlpVYm1Ndm9LZVh3WGFzQkR5RVE/SWtBUmZfeT9FVl9BUnk/Qk1LUlRnZ3hlaEJJY3VpVmxESmRxcHZhbEpQUGVxS1lpTl5JUWt1UUNYckNgcXRBTU11WHJ1UGFsd2VEWG9AUUtQcFBNU1ZAcWlgcl9hUnNkSkFRS1pwdkR1b2FAUWtBWlFQXFw6RmU7X2RwZlt3T3ZNaWVWQHF5YXJRb3hkU089REF5ZDxxaUlteT9zRmh5cWV1S2Ndcjs9TG1IUEJRTUlBVmxNdnhQTEldc2JhckFlUFxcaW1WQFlKXFxyT0RMTXRtdHR2XVl3QERRa0FOQlh2UWVrckF0OnFVOkVxPElRa0FqQnZjZWlmS1hcXElCeEN1cDtoX0FmQFNJO0ljdUlXTD9GQjtHU0NUTD1XTWdoP2lSP09zYVVIVGlycz9WdnVDVj9pWW94XVlVbXVHSldUYV1oZktnPkl0PWtyaWlSY1dXQW1lcm1ISDtIZktYXFxJclNfaXM9d2h3SUJfVkVZRnVzc2NvdkhfUm1HdnZtVlNXRGFhOjpWYnZ5eTtWaUlxdHhhaGVXZUFEOjtCOk1US1dES1dnSjtlWjo6OjI6XCJce1x9LSUlUk9PVEc2Jy0lKUJPVU5EU19YRzYjJCIiISEiIi0lKUJPVU5EU19ZR0YnLSUtQk9VTkRTX1dJRFRIRzYjJCIlcXRGKi0lLkJPVU5EU19IRUlHSFRHNiMkIiVxSEYqLSUpQ0hJTERSRU5HNiI=A typical program on the left can be described by the semi-algebraic transitionsystem on the right. JSFHVerifying the correctness of embedded software can be reduced to reachability computation of hybrid systems. For a class of hybrid system modelled by lineardifferential equations, the following paper [1] reduces the reachabilityproblem to a quantifier elimination problem. [1] G. Lafferrierre, G. J. Pappas and S. Yovine: Symbolic reachability computation for families of linear vector fields. JSC, 2001.Example (Example 3.5 of [1])JSFHThe example is to compute the reachable set from (0,0) of a specific system and the problem is transformed into the following quantifier elimination problem.LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkobWZlbmNlZEdGJDYkLUYjNictSSNtb0dGJDYtUSkmRXhpc3RzO0YnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGOS8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy1GMTYtUSJ+RidGNEY3RjpGPEY+RkBGQkZERkYvRkpGSC1JI21pR0YkNiVRImFGJy8lJ2l0YWxpY0dRJXRydWVGJy9GNVEnaXRhbGljRicvJStleGVjdXRhYmxlR0Y5RjRGNC1GLDYkLUYjNidGMEZMLUZRNiVRInpGJ0ZURldGWUY0RjQtRiw2JC1GIzY3LUZRNiVRI3AxRidGVEZXLUYxNi1RIj1GJ0Y0RjdGOkY8Rj5GQEZCRkQvRkdGS0ZJLUkjbW5HRiQ2JFEiMEYnRjRGTC1GMTYtUSYmYW5kO0YnRjRGN0Y6L0Y9RlZGPkZARkJGRC9GR1EsMC4yMjIyMjIyZW1GJy9GSkZgcEZMLUZRNiVRI3AyRidGVEZXRmNvRmdvRkxGW3BGUC1GMTYtUS8mR3JlYXRlckVxdWFsO0YnRjRGN0Y6RjxGPkZARkJGREZmb0ZJRmdvRkwtRjE2LVEoJndlZGdlO0YnRjRGN0Y6RjxGPkZARkJGRC9GR1EsMC4xNjY2NjY3ZW1GJy9GSkZccUZpbkZlcC1GaG82JFEiMUYnRjRGWUY0RjRGTEZZRjQ=whererestart;p1:=y1-2/3*a*(z-z^4);p2:=y2*z^2-1/2*a*(z^4-1);Decompose the system LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzY2LUkjbWlHRiQ2JVEjcDFGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSI9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRkwtSSNtbkdGJDYkUSIwRidGOS1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSYwLjBlbUYnL0ZORlctRjY2LVEmJmFuZDtGJ0Y5RjtGPi9GQUYxRkJGREZGRkgvRktRLDAuMjIyMjIyMmVtRicvRk5GaG5GUy1GLDYlUSNwMkYnRi9GMkY1Rk9GU0ZZLUYsNiVRImFGJ0YvRjItRjY2LVEvJkdyZWF0ZXJFcXVhbDtGJ0Y5RjtGPkZARkJGREZGRkhGSkZNRk9GUy1GNjYtUSgmd2VkZ2U7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjE2NjY2NjdlbUYnL0ZORmdvLUYsNiVRInpGJ0YvRjJGYG8tRlA2JFEiMUYnRjlGOQ== with RealTriangularize.The output consists of five regular semi-algebraic systems.R := PolynomialRing([z, a, y1, y2]);
rtd := RealTriangularize([p1=0, p2=0, a>=0,z-1>=0], R);
Display(rtd, R);For the first four subsystems, we can immediately get conditions for the subsystems to have real solutions.We now consider the last one.r5 := rtd[5];
Display(r5, R);First we can immediately conclude that when LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JVEjeTJGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSI+RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRkwtSSNtbkdGJDYkUSIwRidGOS1GNjYtUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIL0ZLUSYwLjBlbUYnL0ZOUSwwLjMzMzMzMzNlbUYnLUY2Ni1RIn5GJ0Y5RjtGPkZARkJGREZGRkhGVy9GTkZYRjk=above some real root of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzZqbi1JI21pR0YkNiVRInBGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSJ+RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkwtRjY2LVEqJmNvbG9uZXE7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjI3Nzc3NzhlbUYnL0ZORlNGNS1JI21uR0YkNiRRIjNGJ0Y5LUY2Ni1RIipGJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMTY2NjY2N2VtRicvRk5GZ24tRiw2JVEjeTFGJ0YvRjItRjY2LVEiXkYnRjlGO0Y+RkBGQkZERkZGSC9GS1EsMC4xMTExMTExZW1GJy9GTkZgby1GVjYkUSI1RidGOS1GNjYtUSgmbWludXM7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjIyMjIyMjJlbUYnL0ZORmlvLUZWNiRRIjZGJ0Y5RlktRiw2JVEjeTJGJ0YvRjJGWUZpbkZcby1GVjYkUSI0RidGOUZlby1GVjYkUSM2M0YnRjlGWUZecEZcby1GVjYkUSIyRidGOUZZRmluRlxvRlUtSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdGTC8lJmRlcHRoR0ZfcS8lKmxpbmVicmVha0dRKG5ld2xpbmVGJ0Y1RjVGNUY1RjVGNUY1RjUtRjY2LVEiK0YnRjlGO0Y+RkBGQkZERkZGSEZob0Zqby1GVjYkUSQxOTJGJ0Y5RllGXnBGXG9GVUZZRmluRlxvRmdwRmdxLUZWNiRRJDExMkYnRjlGWUZecEZcb0ZhcEZZRmluRmdxLUZWNiRRIzE2RidGOUZZRl5wRlxvRmJvLUY2Ni1RIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSi9GTlEsMC4zMzMzMzMzZW1GJ0Y5LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEjcjVGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvRjNRJ25vcm1hbEYn has real solutions.However, the following computation shows thatwhen LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JVEjeTJGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSI+RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRkwtSSNtbkdGJDYkUSIwRidGOS1GNjYtUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIL0ZLUSYwLjBlbUYnL0ZOUSwwLjMzMzMzMzNlbUYnLUY2Ni1RIn5GJ0Y5RjtGPkZARkJGREZGRkhGVy9GTkZYRjk=LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEicEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIn5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTEY5only has one real root.R := PolynomialRing([y1, y2]):
p := 3*y1^5-6*y2*y1^4-63*y2^2*y1^3+192*y2^3*y1^2+112*y2^4*y1+16*y2^5;
SamplePoints([p=0, y2>0], R);So after simplification, our final result is LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYpLUkobWZlbmNlZEdGJDYkLUYjNjAtSSNtaUdGJDYlUSN5MkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIj5GJy9GOFEnbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkIvJSlzdHJldGNoeUdGQi8lKnN5bW1ldHJpY0dGQi8lKGxhcmdlb3BHRkIvJS5tb3ZhYmxlbGltaXRzR0ZCLyUnYWNjZW50R0ZCLyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGUS1JI21uR0YkNiRRIjBGJ0Y+LUY7Ni1RIn5GJ0Y+RkBGQ0ZFRkdGSUZLRk0vRlBRJjAuMGVtRicvRlNGZm4tRjs2LVEoJndlZGdlO0YnRj5GQEZDRkVGR0ZJRktGTS9GUFEsMC4xNjY2NjY3ZW1GJy9GU0Zcb0ZYLUYxNiVRI3kxRidGNEY3LUY7Ni1RIitGJ0Y+RkBGQ0ZFRkdGSUZLRk0vRlBRLDAuMjIyMjIyMmVtRicvRlNGZW9GMC1GOzYtUSI8RidGPkZARkNGRUZHRklGS0ZNRk9GUkZULyUrZXhlY3V0YWJsZUdGQi8lMGZvbnRfc3R5bGVfbmFtZUdRKDJEfk1hdGhGJ0Y+Rj5GWC1GOzYtUSUmb3I7RidGPkZARkMvRkZGNkZHRklGS0ZNRmRvRmZvLUYsNiQtRiM2KkZeby1GOzYtUSI9RidGPkZARkNGRUZHRklGS0ZNRk9GUkYwRmdwRlRGam9GXHBGPkY+RmpvRlxwRj4=print(); # input placeholder.JSFH2.5. The mad-cow disease exampleLUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUkjbWlHRiQ2JVEocmVzdGFydEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIjpGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGTC1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSYwLjBlbUYnL0ZORlMtRiw2JVEld2l0aEYnRi9GMi1JKG1mZW5jZWRHRiQ2JC1GIzYlLUYsNiVRLlJlZ3VsYXJDaGFpbnNGJ0YvRjIvJStleGVjdXRhYmxlR0Y9RjlGOS1GNjYtUSI7RidGOUY7L0Y/RjFGQEZCRkRGRkZIRlJGTUZqbkY5LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzZmby1JI21pR0YkNiVRI2YxRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEifkYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZMLUY2Ni1RKiZjb2xvbmVxO0YnRjlGO0Y+RkBGQkZERkZGSC9GS1EsMC4yNzc3Nzc4ZW1GJy9GTkZTRjUtRiw2JVEjazFGJ0YvRjItRjY2LVEqJnVtaW51czA7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjIyMjIyMjJlbUYnL0ZORmZuLUYsNiVRI2syRidGL0YyLUY2Ni1RIipGJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMTY2NjY2N2VtRicvRk5GX28tRiw2JVEieEYnRi9GMkZYRmFvRltvLUYsNiVRImFGJ0YvRjJGW28tSShtZmVuY2VkR0YkNiQtRiM2Ky1JI21uR0YkNiRRIjFGJ0Y5LUY2Ni1RIitGJ0Y5RjtGPkZARkJGREZGRkhGZW5GZ24tRiw2JVEiYkYnRi9GMkZbby1GLDYlUSJ5RidGL0YyLUY2Ni1RIl5GJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMTExMTExMWVtRicvRk5GXXEtRiw2JVEibkYnRi9GMi8lK2V4ZWN1dGFibGVHRj1GOUY5LUY2Ni1RIi9GJ0Y5RjtGPi9GQUYxRkJGREZGRkhGXm9GYG8tRmhvNiQtRiM2K0ZccEZgcC1GLDYlUSJjRidGL0YyRltvRmZwRmlwRl9xRmJxRjlGOS1GNjYtUSI7RidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGVC1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR0ZMLyUmZGVwdGhHRmhyLyUqbGluZWJyZWFrR1EobmV3bGluZUYnLUZkcjYmRmZyRmlyRltzL0Zec1ElYXV0b0YnLUYsNiVRI2YyRidGL0YyRjVGT0Y1RmFvRltvRmRvRltvRmdvRmRxRmhxRlgtRiw2JVEjazRGJ0YvRjJGW29GZnBGX3JGY3JGYHNGK0Y1Rk9GNS1GLDYlUSVzdWJzRidGL0YyLUZobzYkLUYjNkdGY3AtRjY2LVEiPUYnRjlGO0Y+RkBGQkZERkZGSEZSRlQtRl1wNiRRIjJGJ0Y5LUY2Ni1RIixGJ0Y5RjtGYnJGQEZCRkRGRkZIRkovRk5RLDAuMzMzMzMzM2VtRidGNUZcckZhdEZccEZkcS1GXXA2JFEjMjBGJ0Y5Rmd0RjVGX3FGYXQtRl1wNiRRIjRGJ0Y5Rmd0RjVGZG9GYXRGXHBGZHEtRl1wNiRRIzEwRidGOUZndEY1RmdzRmF0LUZdcDYkUSM1MEYnRjlGZ3RGNUZVRmF0LUZdcDYkUSQ4MDBGJ0Y5Rmd0RjVGK0ZicUY5RjlGX3JGY3JGYHNGZHNGNUZPRjVGanMtRmhvNiQtRiM2R0ZjcEZhdEZkdEZndEY1RlxyRmF0RlxwRmRxRlx1Rmd0RjVGX3FGYXRGX3VGZ3RGNUZkb0ZhdEZccEZkcUZidUZndEY1RmdzRmF0RmV1Rmd0RjVGVUZhdEZodUZndEY1RmRzRmJxRjlGOUZfckZjckZgcy1GLDYlUSNwMUYnRi9GMkY1Rk9GNS1GLDYlUSZudW1lckYnRi9GMi1GaG82JC1GIzYlRitGYnFGOUY5Rl9yRmNyRmBzLUYsNiVRI3AyRidGL0YyRjVGT0Y1RmJ2LUZobzYkLUYjNiVGZHNGYnFGOUY5Rl9yRmJxRjk=LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzZSLUkjbWlHRiQ2JVEkZXFzRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEifkYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZMLUY2Ni1RKiZjb2xvbmVxO0YnRjlGO0Y+RkBGQkZERkZGSC9GS1EsMC4yNzc3Nzc4ZW1GJy9GTkZTRjUtSShtZmVuY2VkR0YkNiYtRiM2KC1GLDYlUSNwMUYnRi9GMi1GNjYtUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkovRk5RLDAuMzMzMzMzM2VtRidGNS1GLDYlUSNwMkYnRi9GMi8lK2V4ZWN1dGFibGVHRj1GOUY5LyUlb3BlbkdRIltGJy8lJmNsb3NlR1EiXUYnLUY2Ni1RIjtGJ0Y5RjtGam5GQEZCRkRGRkZIRkpGVC1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR0ZMLyUmZGVwdGhHRmBwLyUqbGluZWJyZWFrR1EobmV3bGluZUYnLUZccDYmRl5wRmFwRmNwL0ZmcFElYXV0b0YnLUYsNiVRJXZhcnNGJ0YvRjJGNUZPRjUtRlY2Ji1GIzYrLUYsNiVRInhGJ0YvRjJGZ25GNS1GLDYlUSJ5RidGL0YyRmduRjUtRiw2JVEjazJGJ0YvRjJGYG9GOUY5RmJvRmVvRmhvRltwRmhwLUYsNiVRJHBpZUYnRi9GMkY1Rk9GNS1GVjYmLUYjNiVGaXFGYG9GOUY5RmJvRmVvRmhvRltwRmhwLUYsNiVRJG5pZUYnRi9GMkY1Rk9GNS1GVjYmLUYjNiUtRiw2I1EhRidGYG9GOUY5RmJvRmVvRmhvRltwRmhwLUYsNiVRJmluZXFzRidGL0YyRjVGT0Y1RmZyRmhvRltwRmhwLUYsNiVRJ3BhcmFtc0YnRi9GMkY1Rk9GNS1GVjYmRmhyRjkvRmNvUSJ8ZnJGJy9GZm9RInxockYnRmhvRmBvRjk=LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzY0LUkjbWlHRiQ2JVEiUkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIn5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTC1GNjYtUSomY29sb25lcTtGJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMjc3Nzc3OGVtRicvRk5GU0Y1LUYsNiVRL1BvbHlub21pYWxSaW5nRidGL0YyLUkobWZlbmNlZEdGJDYkLUYjNiUtRiw2JVEldmFyc0YnRi9GMi8lK2V4ZWN1dGFibGVHRj1GOUY5LUY2Ni1RIjtGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSkZULUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUSYwLjBleEYnLyUmd2lkdGhHRkwvJSZkZXB0aEdGZW8vJSpsaW5lYnJlYWtHUShuZXdsaW5lRictRmFvNiZGY29GZm9GaG8vRltwUSVhdXRvRictRiw2JVEkZGVjRidGL0YyRjVGT0Y1LUYsNiVRMlJlYWxUcmlhbmd1bGFyaXplRidGL0YyLUZZNiQtRiM2Ni1GLDYlUSRlcXNGJ0YvRjItRjY2LVEiLEYnRjlGO0Zfb0ZARkJGREZGRkhGSi9GTlEsMC4zMzMzMzMzZW1GJ0Y1LUYsNiVRJG5pZUYnRi9GMkZecUY1LUYsNiVRJHBpZUYnRi9GMkZecUY1LUYsNiVRJmluZXFzRidGL0YyRl5xRjVGK0ZecUY1LUYsNiVRJ291dHB1dEYnRi9GMi1GNjYtUSI9RidGOUY7Rj5GQEZCRkRGRkZIRlJGVC1GLDYlUSdyZWNvcmRGJ0YvRjJGam5GOUY5RlxvRmpuRjk=LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzZXLUkjbWlHRiQ2JVEjRDFGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSJ+RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkwtRjY2LVEqJmNvbG9uZXE7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjI3Nzc3NzhlbUYnL0ZORlNGNS1GNjYtUSomdW1pbnVzMDtGJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMjIyMjIyMmVtRicvRk5GWS1JKG1mZW5jZWRHRiQ2JC1GIzYpLUYsNiVRJWRpZmZGJ0YvRjItRmZuNiQtRiM2KC1GLDYlUSNmMUYnRi9GMi1GNjYtUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkovRk5RLDAuMzMzMzMzM2VtRidGNS1GLDYlUSJ4RidGL0YyLyUrZXhlY3V0YWJsZUdGPUY5RjktRjY2LVEiK0YnRjlGO0Y+RkBGQkZERkZGSEZYRlpGam4tRmZuNiQtRiM2KC1GLDYlUSNmMkYnRi9GMkZkb0Y1LUYsNiVRInlGJ0YvRjJGXXBGOUY5Rl1wRjlGOS1GNjYtUSI7RidGOUY7RmdvRkBGQkZERkZGSEZKRlQtSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdGTC8lJmRlcHRoR0ZkcS8lKmxpbmVicmVha0dRKG5ld2xpbmVGJy1GYHE2JkZicUZlcUZncS9GanFRJWF1dG9GJy1GLDYlUSNEMkYnRi9GMkY1Rk9GNUZqbkZdby1GNjYtUSIqRidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjE2NjY2NjdlbUYnL0ZORmdyRmpuRmJwRlVGam4tRmZuNiQtRiM2KEZhb0Zkb0Y1RmlwRl1wRjlGOUZjckZqbi1GZm42JC1GIzYoRmZwRmRvRjVGam9GXXBGOUY5RlxxRl9xRlxyRitGNUZPRjUtRiw2JVEmbnVtZXJGJ0YvRjItRmZuNiQtRiM2Ji1GLDYlRjpGL0YyLUZmbjYkLUYjNiVGK0ZdcEY5RjlGXXBGOUY5RlxxRl9xRlxyRmByRjVGT0Y1RmFzLUZmbjYkLUYjNiZGaHMtRmZuNiQtRiM2JUZgckZdcEY5RjlGXXBGOUY5RlxxRl9xRlxyLUYsNiVRJHBpZUYnRi9GMkY1Rk9GNS1GZm42Ji1GIzYrRitGZG9GNUZgckZkb0Y1LUYsNiVRI2syRidGL0YyRl1wRjlGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJ0ZccUZdcEY5LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYwLUkjbWlHRiQ2JVEkc3BzRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEifkYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZMLUY2Ni1RKiZjb2xvbmVxO0YnRjlGO0Y+RkBGQkZERkZGSC9GS1EsMC4yNzc3Nzc4ZW1GJy9GTkZTRjUtRiw2JVEtU2FtcGxlUG9pbnRzRidGL0YyLUkobWZlbmNlZEdGJDYkLUYjNjEtRiw2JVEkZXFzRidGL0YyLUY2Ni1RIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSi9GTlEsMC4zMzMzMzMzZW1GJ0Y1LUYsNiVRJG5pZUYnRi9GMkZqbkY1LUYsNiVRJHBpZUYnRi9GMkZqbkY1LUYsNiVRJmluZXFzRidGL0YyRmpuRjUtRiw2JVEiUkYnRi9GMi8lK2V4ZWN1dGFibGVHRj1GOUY5LUY2Ni1RIjtGJ0Y5RjtGXW9GQEZCRkRGRkZIRkpGVC1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR0ZMLyUmZGVwdGhHRmZwLyUqbGluZWJyZWFrR1EobmV3bGluZUYnLUZicDYmRmRwRmdwRmlwL0ZccVElYXV0b0YnLUYsNiVRJG1hcEYnRi9GMi1GWTYkLUYjNistRiw2JVEoRGlzcGxheUYnRi9GMkZqbkY1RitGam5GNUZpb0ZccEY5RjlGXnBGXHBGOQ==LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic= 3. ISSAC 2011 Demo3.1 Verification of real solversWe set S1 up first.C1:=[a > 0 , b > 0 , c > 0 , a < b + c , b < a + c , c < a + b, b^2 + a^2 - c^2 <= 0 ]:
C2:=[a > 0 , b > 0 , c > 0 , a < b + c , b < a + c , c < a + b, c*(b^2 + a^2 - c^2)^2 < a*b^2*(2*a*c - (c^2 + a^2 - b^2))]:
S1 is the disjuction of C1 and C2.S1:=[C1, C2]; Then we set S2.S2 := [a-c<0, a > 0 , b > 0 , c > 0 , a < b + c , b < a + c , c < a + b];Compute regular semi-algebraic system representations dec1 (resp. dec2) for S1 (resp. S2) R := PolynomialRing([a,b,c]):
dec1 := map(op, map(RealTriangularize, S1,R));
dec2:= RealTriangularize(S2, R);Compute the differences: S1 \134 S2 and S2 \134 S1 Difference(dec1,dec2,R);
Difference(dec2,dec1,R);3.2 Branch cut analysisrestart; R := PolynomialRing([y, x]);f1 := sqrt(z^2-1)-sqrt(z+1)*sqrt(z-1);
f2 := sqrt(1-z^2)-sqrt(1+z)*sqrt(1-z);
f := f1; bc := RegularChains:-branchcuts([f]);sp := CylindricalAlgebraicDecompose(bc, R, output=samplepoints);
Display(sp, R);
sp := map(BoxValues, sp, R):for p in sp do
g := subs(z=rhs(p[2])+I*rhs(p[1]), f);
g := simplify(g); print(g);
end do: f := f2;
bc := RegularChains:-branchcuts([f]);sp := CylindricalAlgebraicDecompose(bc, R, output=samplepoints);
Display(sp, R);
sp := map(BoxValues, sp, R):for p in sp do
g := subs(z=rhs(p[2])+I*rhs(p[1]), f);
g := simplify(g); print(g);
end do: 3.3 Study of the equilibria of biological systemsrestart;Start with the Cascad of Polymerisation.n := 4:
RS := []:
for i from 1 to n-1 do
NewR1 := NewReaction(cat('P',i)+P1, cat('P',i+1), MassActionLaw(cat('k_',i)) ):
NewR2 := NewReaction(cat('P',i+1), cat('P',i)+P1, MassActionLaw(cat('km_',i)) ):
RS := [op(RS),NewR1,NewR2]:
end do: RS;Claws := ConservationLaws(RS);
Eqs := Equilibria(RS);F := [ op(Claws), op(Eqs) ];
N := [];
vars := [P4, P3, P2, P1, k_1, k_2, k_3, km_1, km_2, km_3, P1_0, P2_0, P3_0, P4_0]:
P := vars;
H := [];
R := PolynomialRing(vars);d := nops(vars) - n;
rrc := RealRootClassification(numer(F), N, P, H, d, 1, R); Display(rrc[1][1], R); Display(rrc[2], R):rrc := RealRootClassification(numer(F), N, P, H, d, 2..k, R); Continue with the Allosteric Enzymrestart;R1 := NewReaction(E+S,C,MassActionLaw(k1));
R2 := NewReaction(C,E+S,MassActionLaw(k2));
R3 := NewReaction(E+C,FF,MassActionLaw(k3));
R4 := NewReaction(FF,E+C,MassActionLaw(k4));
RS := [R1,R2,R3,R4 ]:Claws := ConservationLaws(RS);
Eqs := Equilibria(RS);F := [ op(Claws), op(Eqs) ];
N := [];
vars := [FF, E, S, C, k2, k1, k3, k4, C_0, E_0, FF_0, S_0];
P := vars;
H := [];
R := PolynomialRing(vars);d := nops(vars) - nops(F);
rrc := RealRootClassification(F, N, P, H, d, 2..k, R);
rrc := RealRootClassification(F, N, P, H, d, 1, R); Display(rrc[2], R); Display(rrc[1], R);vars := [FF, k2, E, S, k1, C, k3, k4, C_0, E_0, FF_0, S_0];
R := PolynomialRing(vars);
dec := RealTriangularize(F, N, P, H, R);3.4 Reachibility problem for hybrid systemsJSFHThe problem is transformed into the following quantifier elimination problem.LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkobWZlbmNlZEdGJDYkLUYjNictSSNtb0dGJDYtUSkmRXhpc3RzO0YnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGOS8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy1GMTYtUSJ+RidGNEY3RjpGPEY+RkBGQkZERkYvRkpGSC1JI21pR0YkNiVRImFGJy8lJ2l0YWxpY0dRJXRydWVGJy9GNVEnaXRhbGljRicvJStleGVjdXRhYmxlR0Y5RjRGNC1GLDYkLUYjNidGMEZMLUZRNiVRInpGJ0ZURldGWUY0RjQtRiw2JC1GIzY3LUZRNiVRI3AxRidGVEZXLUYxNi1RIj1GJ0Y0RjdGOkY8Rj5GQEZCRkQvRkdGS0ZJLUkjbW5HRiQ2JFEiMEYnRjRGTC1GMTYtUSYmYW5kO0YnRjRGN0Y6L0Y9RlZGPkZARkJGRC9GR1EsMC4yMjIyMjIyZW1GJy9GSkZgcEZMLUZRNiVRI3AyRidGVEZXRmNvRmdvRkxGW3BGUC1GMTYtUS8mR3JlYXRlckVxdWFsO0YnRjRGN0Y6RjxGPkZARkJGREZmb0ZJRmdvRkwtRjE2LVEoJndlZGdlO0YnRjRGN0Y6RjxGPkZARkJGRC9GR1EsMC4xNjY2NjY3ZW1GJy9GSkZccUZpbkZlcC1GaG82JFEiMUYnRjRGWUY0RjRGTEZZRjQ=whererestart;p1:=y1-2/3*a*(z-z^4);p2:=y2*z^2-1/2*a*(z^4-1);Decompose the system LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzY2LUkjbWlHRiQ2JVEjcDFGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSI9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRkwtSSNtbkdGJDYkUSIwRidGOS1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSYwLjBlbUYnL0ZORlctRjY2LVEmJmFuZDtGJ0Y5RjtGPi9GQUYxRkJGREZGRkgvRktRLDAuMjIyMjIyMmVtRicvRk5GaG5GUy1GLDYlUSNwMkYnRi9GMkY1Rk9GU0ZZLUYsNiVRImFGJ0YvRjItRjY2LVEvJkdyZWF0ZXJFcXVhbDtGJ0Y5RjtGPkZARkJGREZGRkhGSkZNRk9GUy1GNjYtUSgmd2VkZ2U7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjE2NjY2NjdlbUYnL0ZORmdvLUYsNiVRInpGJ0YvRjJGYG8tRlA2JFEiMUYnRjlGOQ== with RealTriangularize.The output consists of five regular semi-algebraic systems.R := PolynomialRing([z, a, y1, y2]);
rtd := RealTriangularize([p1=0, p2=0, a>=0,z-1>=0], R);
Display(rtd, R):r1 := rtd[1]; Display(r1, R);r2 := rtd[2];
Display(r2, R);R12 := PolynomialRing([y1, y2]);
p := 3*y1^5-6*y2*y1^4-63*y2^2*y1^3+192*y2^3*y1^2+112*y2^4*y1+16*y2^5;
SamplePoints([p=0, y2>0], R12);r3 := rtd[3];
Display(r3, R);
r4 := rtd[4];
Display(r4, R);
r4 := rtd[4];
Display(r4, R);So after simplification, our final result is LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYpLUkobWZlbmNlZEdGJDYkLUYjNjAtSSNtaUdGJDYlUSN5MkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIj5GJy9GOFEnbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkIvJSlzdHJldGNoeUdGQi8lKnN5bW1ldHJpY0dGQi8lKGxhcmdlb3BHRkIvJS5tb3ZhYmxlbGltaXRzR0ZCLyUnYWNjZW50R0ZCLyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGUS1JI21uR0YkNiRRIjBGJ0Y+LUY7Ni1RIn5GJ0Y+RkBGQ0ZFRkdGSUZLRk0vRlBRJjAuMGVtRicvRlNGZm4tRjs2LVEoJndlZGdlO0YnRj5GQEZDRkVGR0ZJRktGTS9GUFEsMC4xNjY2NjY3ZW1GJy9GU0Zcb0ZYLUYxNiVRI3kxRidGNEY3LUY7Ni1RIitGJ0Y+RkBGQ0ZFRkdGSUZLRk0vRlBRLDAuMjIyMjIyMmVtRicvRlNGZW9GMC1GOzYtUSI8RidGPkZARkNGRUZHRklGS0ZNRk9GUkZULyUrZXhlY3V0YWJsZUdGQi8lMGZvbnRfc3R5bGVfbmFtZUdRKDJEfk1hdGhGJ0Y+Rj5GWC1GOzYtUSUmb3I7RidGPkZARkMvRkZGNkZHRklGS0ZNRmRvRmZvLUYsNiQtRiM2KkZeby1GOzYtUSI9RidGPkZARkNGRUZHRklGS0ZNRk9GUkYwRmdwRlRGam9GXHBGPkY+RmpvRlxwRj4=print(); # input placeholder.3.5. The mad-cow disease exampleLUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUkjbWlHRiQ2JVEocmVzdGFydEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIjpGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGTC1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSYwLjBlbUYnL0ZORlMtRiw2JVEld2l0aEYnRi9GMi1JKG1mZW5jZWRHRiQ2JC1GIzYlLUYsNiVRLlJlZ3VsYXJDaGFpbnNGJ0YvRjIvJStleGVjdXRhYmxlR0Y9RjlGOS1GNjYtUSI7RidGOUY7L0Y/RjFGQEZCRkRGRkZIRlJGTUZqbkY5LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzZmby1JI21pR0YkNiVRI2YxRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEifkYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZMLUY2Ni1RKiZjb2xvbmVxO0YnRjlGO0Y+RkBGQkZERkZGSC9GS1EsMC4yNzc3Nzc4ZW1GJy9GTkZTRjUtRiw2JVEjazFGJ0YvRjItRjY2LVEqJnVtaW51czA7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjIyMjIyMjJlbUYnL0ZORmZuLUYsNiVRI2syRidGL0YyLUY2Ni1RIipGJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMTY2NjY2N2VtRicvRk5GX28tRiw2JVEieEYnRi9GMkZYRmFvRltvLUYsNiVRImFGJ0YvRjJGW28tSShtZmVuY2VkR0YkNiQtRiM2Ky1JI21uR0YkNiRRIjFGJ0Y5LUY2Ni1RIitGJ0Y5RjtGPkZARkJGREZGRkhGZW5GZ24tRiw2JVEiYkYnRi9GMkZbby1GLDYlUSJ5RidGL0YyLUY2Ni1RIl5GJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMTExMTExMWVtRicvRk5GXXEtRiw2JVEibkYnRi9GMi8lK2V4ZWN1dGFibGVHRj1GOUY5LUY2Ni1RIi9GJ0Y5RjtGPi9GQUYxRkJGREZGRkhGXm9GYG8tRmhvNiQtRiM2K0ZccEZgcC1GLDYlUSJjRidGL0YyRltvRmZwRmlwRl9xRmJxRjlGOS1GNjYtUSI7RidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGVC1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR0ZMLyUmZGVwdGhHRmhyLyUqbGluZWJyZWFrR1EobmV3bGluZUYnLUZkcjYmRmZyRmlyRltzL0Zec1ElYXV0b0YnLUYsNiVRI2YyRidGL0YyRjVGT0Y1RmFvRltvRmRvRltvRmdvRmRxRmhxRlgtRiw2JVEjazRGJ0YvRjJGW29GZnBGX3JGY3JGYHNGK0Y1Rk9GNS1GLDYlUSVzdWJzRidGL0YyLUZobzYkLUYjNkdGY3AtRjY2LVEiPUYnRjlGO0Y+RkBGQkZERkZGSEZSRlQtRl1wNiRRIjJGJ0Y5LUY2Ni1RIixGJ0Y5RjtGYnJGQEZCRkRGRkZIRkovRk5RLDAuMzMzMzMzM2VtRidGNUZcckZhdEZccEZkcS1GXXA2JFEjMjBGJ0Y5Rmd0RjVGX3FGYXQtRl1wNiRRIjRGJ0Y5Rmd0RjVGZG9GYXRGXHBGZHEtRl1wNiRRIzEwRidGOUZndEY1RmdzRmF0LUZdcDYkUSM1MEYnRjlGZ3RGNUZVRmF0LUZdcDYkUSQ4MDBGJ0Y5Rmd0RjVGK0ZicUY5RjlGX3JGY3JGYHNGZHNGNUZPRjVGanMtRmhvNiQtRiM2R0ZjcEZhdEZkdEZndEY1RlxyRmF0RlxwRmRxRlx1Rmd0RjVGX3FGYXRGX3VGZ3RGNUZkb0ZhdEZccEZkcUZidUZndEY1RmdzRmF0RmV1Rmd0RjVGVUZhdEZodUZndEY1RmRzRmJxRjlGOUZfckZjckZgcy1GLDYlUSNwMUYnRi9GMkY1Rk9GNS1GLDYlUSZudW1lckYnRi9GMi1GaG82JC1GIzYlRitGYnFGOUY5Rl9yRmNyRmBzLUYsNiVRI3AyRidGL0YyRjVGT0Y1RmJ2LUZobzYkLUYjNiVGZHNGYnFGOUY5Rl9yRmJxRjk=LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzZSLUkjbWlHRiQ2JVEkZXFzRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEifkYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZMLUY2Ni1RKiZjb2xvbmVxO0YnRjlGO0Y+RkBGQkZERkZGSC9GS1EsMC4yNzc3Nzc4ZW1GJy9GTkZTRjUtSShtZmVuY2VkR0YkNiYtRiM2KC1GLDYlUSNwMUYnRi9GMi1GNjYtUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkovRk5RLDAuMzMzMzMzM2VtRidGNS1GLDYlUSNwMkYnRi9GMi8lK2V4ZWN1dGFibGVHRj1GOUY5LyUlb3BlbkdRIltGJy8lJmNsb3NlR1EiXUYnLUY2Ni1RIjtGJ0Y5RjtGam5GQEZCRkRGRkZIRkpGVC1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR0ZMLyUmZGVwdGhHRmBwLyUqbGluZWJyZWFrR1EobmV3bGluZUYnLUZccDYmRl5wRmFwRmNwL0ZmcFElYXV0b0YnLUYsNiVRJXZhcnNGJ0YvRjJGNUZPRjUtRlY2Ji1GIzYrLUYsNiVRInhGJ0YvRjJGZ25GNS1GLDYlUSJ5RidGL0YyRmduRjUtRiw2JVEjazJGJ0YvRjJGYG9GOUY5RmJvRmVvRmhvRltwRmhwLUYsNiVRJHBpZUYnRi9GMkY1Rk9GNS1GVjYmLUYjNiVGaXFGYG9GOUY5RmJvRmVvRmhvRltwRmhwLUYsNiVRJG5pZUYnRi9GMkY1Rk9GNS1GVjYmLUYjNiUtRiw2I1EhRidGYG9GOUY5RmJvRmVvRmhvRltwRmhwLUYsNiVRJmluZXFzRidGL0YyRjVGT0Y1RmZyRmhvRltwRmhwLUYsNiVRJ3BhcmFtc0YnRi9GMkY1Rk9GNS1GVjYmRmhyRjkvRmNvUSJ8ZnJGJy9GZm9RInxockYnRmhvRmBvRjk=LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzY0LUkjbWlHRiQ2JVEiUkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIn5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTC1GNjYtUSomY29sb25lcTtGJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMjc3Nzc3OGVtRicvRk5GU0Y1LUYsNiVRL1BvbHlub21pYWxSaW5nRidGL0YyLUkobWZlbmNlZEdGJDYkLUYjNiUtRiw2JVEldmFyc0YnRi9GMi8lK2V4ZWN1dGFibGVHRj1GOUY5LUY2Ni1RIjtGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSkZULUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUSYwLjBleEYnLyUmd2lkdGhHRkwvJSZkZXB0aEdGZW8vJSpsaW5lYnJlYWtHUShuZXdsaW5lRictRmFvNiZGY29GZm9GaG8vRltwUSVhdXRvRictRiw2JVEkZGVjRidGL0YyRjVGT0Y1LUYsNiVRMlJlYWxUcmlhbmd1bGFyaXplRidGL0YyLUZZNiQtRiM2Ni1GLDYlUSRlcXNGJ0YvRjItRjY2LVEiLEYnRjlGO0Zfb0ZARkJGREZGRkhGSi9GTlEsMC4zMzMzMzMzZW1GJ0Y1LUYsNiVRJG5pZUYnRi9GMkZecUY1LUYsNiVRJHBpZUYnRi9GMkZecUY1LUYsNiVRJmluZXFzRidGL0YyRl5xRjVGK0ZecUY1LUYsNiVRJ291dHB1dEYnRi9GMi1GNjYtUSI9RidGOUY7Rj5GQEZCRkRGRkZIRlJGVC1GLDYlUSdyZWNvcmRGJ0YvRjJGam5GOUY5RlxvRmpuRjk=LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzZXLUkjbWlHRiQ2JVEjRDFGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYtUSJ+RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkwtRjY2LVEqJmNvbG9uZXE7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjI3Nzc3NzhlbUYnL0ZORlNGNS1GNjYtUSomdW1pbnVzMDtGJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMjIyMjIyMmVtRicvRk5GWS1JKG1mZW5jZWRHRiQ2JC1GIzYpLUYsNiVRJWRpZmZGJ0YvRjItRmZuNiQtRiM2KC1GLDYlUSNmMUYnRi9GMi1GNjYtUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkovRk5RLDAuMzMzMzMzM2VtRidGNS1GLDYlUSJ4RidGL0YyLyUrZXhlY3V0YWJsZUdGPUY5RjktRjY2LVEiK0YnRjlGO0Y+RkBGQkZERkZGSEZYRlpGam4tRmZuNiQtRiM2KC1GLDYlUSNmMkYnRi9GMkZkb0Y1LUYsNiVRInlGJ0YvRjJGXXBGOUY5Rl1wRjlGOS1GNjYtUSI7RidGOUY7RmdvRkBGQkZERkZGSEZKRlQtSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdGTC8lJmRlcHRoR0ZkcS8lKmxpbmVicmVha0dRKG5ld2xpbmVGJy1GYHE2JkZicUZlcUZncS9GanFRJWF1dG9GJy1GLDYlUSNEMkYnRi9GMkY1Rk9GNUZqbkZdby1GNjYtUSIqRidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjE2NjY2NjdlbUYnL0ZORmdyRmpuRmJwRlVGam4tRmZuNiQtRiM2KEZhb0Zkb0Y1RmlwRl1wRjlGOUZjckZqbi1GZm42JC1GIzYoRmZwRmRvRjVGam9GXXBGOUY5RlxxRl9xRlxyRitGNUZPRjUtRiw2JVEmbnVtZXJGJ0YvRjItRmZuNiQtRiM2Ji1GLDYlRjpGL0YyLUZmbjYkLUYjNiVGK0ZdcEY5RjlGXXBGOUY5RlxxRl9xRlxyRmByRjVGT0Y1RmFzLUZmbjYkLUYjNiZGaHMtRmZuNiQtRiM2JUZgckZdcEY5RjlGXXBGOUY5RlxxRl9xRlxyLUYsNiVRJHBpZUYnRi9GMkY1Rk9GNS1GZm42Ji1GIzYrRitGZG9GNUZgckZkb0Y1LUYsNiVRI2syRidGL0YyRl1wRjlGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJ0ZccUZdcEY5LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYwLUkjbWlHRiQ2JVEkc3BzRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEifkYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZMLUY2Ni1RKiZjb2xvbmVxO0YnRjlGO0Y+RkBGQkZERkZGSC9GS1EsMC4yNzc3Nzc4ZW1GJy9GTkZTRjUtRiw2JVEtU2FtcGxlUG9pbnRzRidGL0YyLUkobWZlbmNlZEdGJDYkLUYjNjEtRiw2JVEkZXFzRidGL0YyLUY2Ni1RIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSi9GTlEsMC4zMzMzMzMzZW1GJ0Y1LUYsNiVRJG5pZUYnRi9GMkZqbkY1LUYsNiVRJHBpZUYnRi9GMkZqbkY1LUYsNiVRJmluZXFzRidGL0YyRmpuRjUtRiw2JVEiUkYnRi9GMi8lK2V4ZWN1dGFibGVHRj1GOUY5LUY2Ni1RIjtGJ0Y5RjtGXW9GQEZCRkRGRkZIRkpGVC1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR0ZMLyUmZGVwdGhHRmZwLyUqbGluZWJyZWFrR1EobmV3bGluZUYnLUZicDYmRmRwRmdwRmlwL0ZccVElYXV0b0YnLUYsNiVRJG1hcEYnRi9GMi1GWTYkLUYjNistRiw2JVEoRGlzcGxheUYnRi9GMkZqbkY1RitGam5GNUZpb0ZccEY5RjlGXnBGXHBGOQ==JSFH 4. References[1] F. Boulier, C. Chen, F. Lemaire, and M. Moreno Maza. Real root isolation of regular chains. In Proc. of ASCM\342\200\23109, 2009.[2] C. W. Brown. QEPCAD B: a program for computing with semi-algebraic sets using cads. SIGSAM Bull., 37(4):97\342\200\223108, 2003.[3] C. Chen, J.H. Davenport, J. May, M. Moreno Maza, B. Xia, and R. Xiao. Triangular decomposition of semi-algebraic systems. In S.M. Watt, editor, Proceedings ISSAC 2010, pages 187\342\200\223194, 2010.[4] C. Chen, J.H. Davenport, M. Moreno Maza, B. Xia, and R. Xiao. Computing with semi-algebraic sets represented by triangular decomposition. In Proceedings ISSAC 2011, 2011.[5] C. Chen, M. Moreno Maza, B. Xia, and L. Yang. Computing cylindrical algebraic decomposition via triangular decomposition. In ISSAC\342\200\23109, pages 95\342\200\223102, 2009.[6] J.H. Davenport. The Challenges of Multivalued \342\200\234Functions\342\200\235. In S. Autexier et al., editor, Proceedings AISC/Calculemus/MKM 2010, volume 6167 of Lecture Notes in Computer Science, pages 1\342\200\22312. Springer Verlag, 2010.[7] F. Lemaire, M. Moreno Maza, and Y. Xie. The RegularChains library. In Ilias S. Kotsireas, editor, Maple Conference 2005, pages 355\342\200\223368, 2005.[8] Francois Lemaire and Asli \303\234rg\303\274pl\303\274. Modeling and Analysis of Biological Systems, 2008. www.lifl.fr/\342\210\274urguplu.[9] N. Phisanbut, R.J. Bradford, and J.H. Davenport. Geometry of Branch Cuts. Communications in Computer Algebra, 44:132\342\200\223135, 2010.[10] L. Yang and B. Xia. Real solution classifications of a class of parametric semi-algebraic systems. In Proc. of the A3L\342\200\23105, pages 281\342\200\223289, 2005.[11] T. Zhang and B. Xia. A new method for real root isolation of univariate polynomials. Mathematics in Computer Science, 1:305\342\200\223320, 2007.